spring-authorization-server 的 oauth2整个运行流程
2023-10-19 11:52:46 0 举报
以gitee 为例 描述 spring-authorization-server 的oauth2整个运行流程
作者其他创作
大纲/内容
token是否有效
③成功访问接口【http://127.0.0.1:8090/messag】
②重定向到客户端url
⑥保存认证信息securityContextRepository.saveContext
Access Denied
RequestAttributeSecurityContextRepository
HttpSessionSecurityContextRepository
redirect_uri【http://127.0.0.1:8080/index】
SecurityContext in HttpSession
{ \"issuer\": \"http://192.168.56.1:9000\
redirect_uri【http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc?code={code}&state={state}】
生成token
①从url获取的\"messaging-client-oidc\"获取到对于客户端配置
到授权服务器请求授权
④构造Authentication对象
③获取成功后,使用gitee返回的相关信息构Authentication对象信息
OAuth2LoginAuthenticationFilter
redirect_uri【http://192.168.56.1:9000/login/oauth2/code/gitee??code={code}&state={state}】
⑥有了 Authentication 那就说明demo-authorizationserver 身份认证成功了 将其存入 SecurityContext 中
④save 授权客户端信息
向giee发起授权请求
②访问【http://192.168.56.1:9000/oauth2/jwks】验证token的有效性
失败
controller
demo-authorizationserver【http://192.168.56.1:9000】
到资源服务器获取数据
OAuth2TokenEndpointFilter
OAuth2AuthorizationRequestRedirectFilter
⑤save 授权客户端信息
true
message-resource【http://127.0.0.1:8090】
②有客户端配置后组装一个授权请求并重定向:Redirecting to 【http://192.168.56.1:9000/oauth2/authorize?response_type=code&client_id={client_id}&scope={scope}&state={state}&redirect_uri={redirect_uri}&nonce={nonce}】
①seesion中找到客户端请求信息
http://127.0.0.1:8080/index?
loadDeferredContext
http://192.168.56.1:9000/oauth2/authorization/gitee
认证授权
成功
携带token
①到授权服务器获取客户端相关配置http://192.168.56.1:9000/.well-known/openid-configuration
Gitee 认证授权服务器
②向gitee发起获取token请求:【https://gitee.com/oauth/token】
数据返回
②Redirecting to http://127.0.0.1:8080/oauth2/authorization/messaging-client-oidc】
OidcAuthorizationCodeAuthenticationProvider
false
①HttpSessionRequestCache【Saved request http://127.0.0.1:8080/index?continue to session】
①Saved request 【http://192.168.56.1:9000/oauth2/authorize?response_type=code&client_id={client_id}&scope={scope}&state={state}&redirect_uri={redirect_uri}&nonce={nonce}】to session
③转换响应数据
redirect_uri户端授权请求
⑦有了 Authentication 那就说明demo-authorizationserver 身份认证成功了 将其存入 SecurityContext 中
http://127.0.0.1:8090/messages
OAuth2AuthorizedClientRepository
②Redirecting to 【http://192.168.56.1:9000/login】
client-demo【http://127.0.0.1:8080】
②有客户端配置后组装一个授权请求:Redirecting to 【http://192.168.56.1:9000/oauth2/token?response_type=code&client_id={client_id}&scope={scope}&state={state}&redirect_uri={redirect_uri}】
isAuthenticated
http://192.168.56.1:9000/oauth2/token?
器获取客户端相关配置
OAuth2AuthorizationEndpointFilter
②有客户端配置后组装一个授权请求并重定向:Redirecting to 【https://gitee.com/oauth/authorize?response_type=code&client_id={client_id}&scope={scope}&state={state}&redirect_uri={redirect_uri}】
Sign in with Gitee
有效
①获取code,state参数
①从url获取的\"gitee\"获取到对于客户端配置
参数验证
⑤保存认证信息securityContextRepository.saveContext
DefaultAuthorizationCodeTokenResponseClient
0 条评论
回复 删除
下一页