Class OpenIDConnectController
java.lang.Object
tech.riemann.nif.oidc.OpenIDConnectController
OpenID Connect控制器
提供OIDC认证相关的HTTP接口
主要功能: 1. 获取登录URL(/oauth2/oidc/login-url) 2. 处理OIDC回调登录(/oauth2/oidc/login) 3. 处理登出(/oauth2/oidc/logout)
认证流程: 1. 前端调用login-url获取OIDC授权URL 2. 用户重定向到OIDC提供商进行授权 3. 授权完成后回调到login接口 4. 使用授权码换取Token和用户信息 5. 通过CallbackHandler处理回调结果
- Author:
- Kerbores(kerbores@riemann.tech)
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid添加安全的 HTTP Cookie 到响应中voidcallback(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 处理 OpenID Connect 认证回调请求tech.riemann.nif.auth.service.AuthUser获取当前登录用户信息tech.riemann.nif.auth.service.AuthUserlogin(String code, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 处理用户登录请求,使用 OpenID Connect 授权码进行认证voidlogin(String from, String codeVerifier, String state, String nonce, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.http.HttpServletRequest request) loginUrl(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, String from, String codeVerifier, String state, String nonce) voidlogout(jakarta.servlet.http.HttpServletResponse response) 处理用户退出登录请求,重定向到 OpenID Connect 登出页面获取 OpenID Connect 登出地址
-
Field Details
-
PKCE_CODE_VERIFIER
-
STATE_COOKIE
-
NONCE_COOKIE
-
FROM_COOKIE
-
-
Constructor Details
-
OpenIDConnectController
public OpenIDConnectController()
-
-
Method Details
-
loginUrl
@GetMapping("login-url") @XssIgnore public String loginUrl(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, @RequestParam(required=false) String from, @RequestParam(required=false,name="pkce_code_verifier") String codeVerifier, @RequestParam(required=false) String state, @RequestParam(required=false) String nonce) throws UnsupportedEncodingException - Throws:
UnsupportedEncodingException
-
login
@GetMapping("login") public void login(@RequestParam(required=false) String from, @RequestParam(required=false,name="pkce_code_verifier") String codeVerifier, @RequestParam(required=false) String state, @RequestParam(required=false) String nonce, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.http.HttpServletRequest request) throws IOException - Throws:
IOException
-
logoutUrl
获取 OpenID Connect 登出地址- Returns:
- OpenID Connect 登出地址
-
logout
@GetMapping("logout") public void logout(jakarta.servlet.http.HttpServletResponse response) throws IOException 处理用户退出登录请求,重定向到 OpenID Connect 登出页面- Parameters:
response- HttpServletResponse 对象,用于执行重定向操作- Throws:
IOException- 重定向过程中可能发生的 IO 异常
-
callback
@GetMapping("callback") public void callback(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 处理 OpenID Connect 认证回调请求- Parameters:
request- HttpServletRequest 对象,包含回调请求的参数response- HttpServletResponse 对象,用于处理回调响应
-
login
@PostMapping("login") public tech.riemann.nif.auth.service.AuthUser login(@RequestParam(required=false) String code, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 处理用户登录请求,使用 OpenID Connect 授权码进行认证id_token 校验(验签 + 过期 + nonce)在 OpenIDConnectService 内部完成
- Parameters:
code- OpenID Connect 授权码,用于获取访问令牌和 ID 令牌- Returns:
- 认证用户信息
-
currentUser
@GetMapping("current-user") public tech.riemann.nif.auth.service.AuthUser currentUser()获取当前登录用户信息- Returns:
- 当前登录用户信息,未登录时返回null
-
addCookie
-