OAuth2.0 - 授权码模式源码分析
1、客户端跳转至用户授权页面
http://localhost:53010/uaa/oauth/authorize?response_type=code&client_id=heima_two
后台:AuthorizationEndpoint 接收请求
其中根据client_id获取客户端信息:
然后存入session:
浏览器重定向至用户登录页面,用户输入用户名口令登录成功后,后台已经securitycontext上下文中已有此用户的Authentication。
浏览器接着重定向至客户端授权资源访问权限页面,用户选择授权权限提交后,还是回到 AuthorizationEndpoint :
另外一个:
接着:
如果两者都有认证token的话,取用户的token。
这也就解释了为什么返回的token里面的authorities是用户的authorites而不是客户端的authoties的原因。
然后存入数据库:oauth_code
接着:
默认username只有用户名,如果想要放入更多信息,则可扩展 username为一个JSON串,在userdetails里面扩展。
然后JWT将该对象转换为token 返回给用户
2、客户端携带code请求token
当客户端拿着code来请求token时,会从数据库取出该code对应对象:
拼接response内容:
posted on 2021-11-17 14:44 TrustNature 阅读(323) 评论(0) 编辑 收藏 举报