Spring Security OAuth2 authorization_code 模式处理步骤

Spring Security OAuth2 Spring Boot About 1,637 words

说明

本文以spring-boot-starter-oauth2-client 3.1.5Keycloak为例。

处理步骤

步骤一

请求任意受保护的资源接口。

http://localhost:8081/users

步骤二

Spring Security返回302状态码,Location重定向到Spring Security提供的地址/oauth2/authorization/keycloak

这里会生成statenonceredirect_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参数,就是OAuth2authorization_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

完整请求路径

  1. [后端服务] /users
  2. [后端服务] /oauth2/authorization/keycloak
  3. [Keycloak] /protocol/openid-connect/auth
  4. [Keycloak] /login-actions/authenticate
  5. [后端服务] /login/oauth2/code/keycloak
  6. [后端服务] /users?continue
Views: 253 · Posted: 2024-05-10

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh