oltu 简介:
Apache Oltu是OAuth协议的Java语言实现。它也包含其他oauth 的协议如JWT JWS OpenID ,是apache 基金会提供的开源项目 官网:http://oltu.apache.org/
oltu 结构:
authzserver(授权服务器依赖)和resourceserver(资源服务器依赖) 和common (公共使用类) 不同的请求对象将按照不同的参数进行校验,请求对象在初始化时进行最基本的(如方法,内容类型,参数等)校验(validate() 方法实现).
authzserver
主要提供对client_id 和redirect_uri 及code 等的鉴权或refresh_token 或用户名密码的校验 如果要实现如client_id 是否合法,client_secret 是否正确的校验还需要自己封装实现. 以请求参数的形式或以request头的形式传递response_type,grand_type,client_id等参数
OAuthAuthzRequest: 根据response_type 参数也设置校验类型
code/token CodeValidator/TokenValidator 可以实现code 和token的两种校验方式
code: client_id进行校验
token:client_id 及redirect_uri进行校验
所以我们需要通过client_id 请求code 的时候可以用OAuthAuthzRequest 来声明我们的请求对象
OAuthTokenRequest : 根据grand_type参数设置其校验类型
所有支持的的授权类型(grand_type):
AUTHORIZATION_CODE("authorization_code"),
IMPLICIT("implicit"),
PASSWORD("password"),
REFRESH_TOKEN("refresh_token"),
CLIENT_CREDENTIALS("client_credentials"),
JWT_BEARER("urn:ietf:params:oauth:grant-type:jwt-bearer");
OAuthTokenRequest 支持的授权类型有:
PASSWORD("password"), 对用户名密码进行校验
REFRESH_TOKEN("refresh_token"), 刷新token 校验
CLIENT_CREDENTIALS("client_credentials"), 客户端证书校验
AUTHORIZATION_CODE("authorization_code"), 鉴权code校验
所以我们需要通过code 请求 accesstoken 的时候可以用OAuthTokenRequest来声明我们的请求对象
OAuthASResponse :封装鉴权返回对象
resourceserver
主要提供对accesstoken 或oauth_token的鉴权
如果需要进行accesstoken 的正确性校验,则需要自己封装实现
OAuthAccessResourceRequest: 实现对accesstoken 的校验,
ResourceServer /BearerResourceServer 资源公共管理类 设置提取类及校验类
OAuthValidator 公共校验接口
TokenExtractor token提取接口,多种方式进行提取,如从request头中,request参数中,和request参数的解析中
OAuthRSResponse 封装资源返回对象 OAuthResponseBuilder 封装信息
common
提供公共方法实现