spring security oauth2授权方式代码源码解读(解读步骤)
入口地址:/oauth/token
TokenEndpoint.postAccessToken
->
CompositeTokenGranter.grant循环授权方式
->
AbstractTokenGranter.grant进行授权
授权的逻辑入口
AbstractTokenGranter.grant
第一步,判断请求的授权方式和当前遍历的循环方式是否相同,不同的话验证下一个授权方式
第二步,根据client_id获取客户端信息,验证是否支持请求的授权方式,如果不支持则抛出异常
第三步,生成 accesstoken
AbstractTokenGranter是一个抽象类,不同的授权方式实现了不同的抽象方法
- AuthorizationCodeTokenGranter 授权码模式
重写实现了getOAuth2Authentication方法 - ClientCredentialsTokenGranter 客户端模式
重写实现了grant抽象方法 - RefreshTokenGranter refreshcode刷新码登录方式
重写实现了getOAuth2Authentication方法 - ImplicitTokenGranter 隐藏式(简易式)
重写实现了getOAuth2Authentication方法 - ResourceOwnerPasswordTokenGranter 密码模式
重写实现了getOAuth2Authentication方法
- ResourceOwnerPasswordTokenGranter.get