目录
流程图
流程图说明
TokenEndpoint
处理/oauth/token
请求,调用ClientDetailsService
根据client-id去读取相应的配置信息(我们配置.property或.yml文件里的)并封装到ClientDetails
;TokenEndpoint
创建TokenRequest
类,这个类封装了一些其他的信息如grant_type
、username、password
(用户名、密码模式)、scope
等以及ClientDetails
。TokenRequest
调用TokenGranter
接口的实现,TokenGranter
封装了四种授权模式,再根据grant_type
选择一个令牌生成的逻辑,不管是哪种方式都会生成OAuth2Request
和Authentication
,OAuth2Request
相当于是ClientDetails
、TokenRequest
信息的整合。Authentication
是授权用户的信息的封装,Authentication
是UserDetailsService
读出来的。OAuth2Request
、Authentication
组合成OAuth2AccessToken
,它包含哪个第三方应用请求哪个用户授权、授权模式是什么、参数是什么。OAuth2AccessToken
会被传給AuthorizationServerTokenServices
接口的实现,他拿到OAuth2AccessToken
后会生成一个令牌OAuth2AccessToken
。TokenStore
用于处理令牌的存取、TokenEnhancer
令牌生成后对令牌进行改造。