Spring Security OAuth2 authorization_code 模式处理步骤
Spring Security OAuth2 Spring Boot About 1,637 words说明
本文以spring-boot-starter-oauth2-client 3.1.5
、Keycloak
为例。
处理步骤
步骤一
请求任意受保护的资源接口。
http://localhost:8081/users
步骤二
Spring Security
返回302
状态码,Location
重定向到Spring Security
提供的地址/oauth2/authorization/keycloak
。
这里会生成state
、nonce
、redirect_uri
参数,在步骤三中请求Keycloak
使用。
http://localhost:8081/oauth2/authorization/keycloak
步骤三
Spring Security
返回302
状态码,Location
重定向到Keycloak
的登录页/protocol/openid-connect/auth
。
http://localhost:8080/realms/my-realm/protocol/openid-connect/auth?response_type=code&client_id=my-client&scope=openid&state=49EoTHFsCfWzDzKYg2kJTDaYk3M3G6mKtMGF-JdEpGA%3D&redirect_uri=http://localhost:8081/login/oauth2/code/keycloak&nonce=zLor6_f4Bd6URj5efcu-UF1xsYoW8xAQo2l13geyULI
步骤四
在Keycloak
提供的登录页中输入用户名密码,请求Keycloak
的鉴权接口/login-actions/authenticate
。
http://localhost:8080/realms/my-realm/login-actions/authenticate?session_code=Zg1iDYK1R5DvjbSknkdSEVT-tiZpqCNyAWLFEBw2xgY&execution=dcebfbf8-8bfa-4f87-8760-d7ed97f4cb66&client_id=my-client&tab_id=S5iyWy3krQI
步骤五
通过鉴权后,Keycloak
返回302
状态码,Location
重定向到Spring Security
提供的地址/login/oauth2/code/keycloak
。
生成了code
参数,就是OAuth2
的authorization_code
。
http://localhost:8081/login/oauth2/code/keycloak?state=OhY2hfeEETSAaJKtZCz1R0tEHTX8iOlocwaGblgf7HU%3D&session_state=e72a05e4-ffc1-4a15-a4cd-0a1cf981364c&code=7f07045b-e51a-4517-8296-b08f576d5283.e72a05e4-ffc1-4a15-a4cd-0a1cf981364c.b3f9264e-fc11-477f-a597-4f0c8106f3fa
步骤六
返回302
状态码,Location
重定向请求的资源接口。会拼接?continue
在路径上。
http://localhost:8081/users?continue
完整请求路径
- [后端服务]
/users
- [后端服务]
/oauth2/authorization/keycloak
- [Keycloak]
/protocol/openid-connect/auth
- [Keycloak]
/login-actions/authenticate
- [后端服务]
/login/oauth2/code/keycloak
- [后端服务]
/users?continue
Views: 785 · Posted: 2024-05-10
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...