Class CookieCallbackHandler

java.lang.Object
tech.riemann.nif.oidc.callback.CookieCallbackHandler
All Implemented Interfaces:
CallbackHandler

public class CookieCallbackHandler extends Object implements CallbackHandler
基于Cookie的回调处理器

处理OAuth授权回调,将用户信息通过Cookie方式存储到客户端

主要功能: 1. 使用授权码和codeVerifier完成OIDC登录 2. 通过AuthService将Token写入Cookie 3. 重定向到登录成功页面或原始请求页面

使用场景: - 适用于传统的Web应用,使用Cookie进行会话管理 - 前端不需要处理Token,由浏览器自动携带Cookie

Author:
Kerbores(kerbores@riemann.tech)
  • Constructor Details

    • CookieCallbackHandler

      public CookieCallbackHandler()
  • Method Details

    • cookieSameSite

      public String cookieSameSite()
      Description copied from interface: CallbackHandler
      OIDC 会话 Cookie 的 SameSite 策略(M14,默认 Lax)

      删除 cookie 需与写入时使用同一策略;子类可覆写返回配置值

      Specified by:
      cookieSameSite in interface CallbackHandler
      Returns:
      SameSite 策略(删除 cookie 时与写入保持一致)
    • handle

      public void handle(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      处理OAuth回调

      执行流程: 1. 校验回调 state(防登录 CSRF) 2. 使用授权码和codeVerifier完成OIDC登录(service 内部完成 id_token 的 nonce 校验) 3. 验证用户信息是否有效 4. 通过AuthService登录(写入Cookie) 5. 重定向到成功页面或原始页面

      Specified by:
      handle in interface CallbackHandler
      Parameters:
      request - HTTP请求对象
      response - HTTP响应对象
    • from

      public String from(jakarta.servlet.http.HttpServletRequest request)
      获取登录前的页面URL

      从Cookie中获取"from"参数(控制器写入,见 OpenIDConnectController.FROM_COOKIE), 表示用户登录前所在的页面

      Parameters:
      request - HTTP请求对象
      Returns:
      登录前的页面URL,如果不存在则返回null