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编辑  收藏  举报