集成OAuth2登录

🌐 OAuth2 登录集成指南

支持版本:v1.5( 2024 年 5 月发布) 本功能适用于已有统一登录平台(如 MaxKey、Authing、Keycloak 等)的组织。


🧾 1. 申请 OAuth2 应用

请在 统一身份认证平台 中创建应用,并记录以下信息:

  • client-id(客户端 ID)
  • client-secret(客户端密钥)
  • 授权地址(authorize URL)
  • Token 获取地址(token URL)
  • 用户信息地址(user info URL)

📌 当前仅支持 authorization_code 模式 如果你们尚未部署统一登录平台,则暂不支持此集成方式。

统一登录平台示例


⚙️ 2. 修改系统配置

打开 tduck-api/src/main/resources/application.yml,配置如下内容:

oauth2:
  client:
    client-id: 979790611596967936             # 从统一登录平台申请
    client-secret: 6oGqMjIwNDIwMjQxNDE5MTEwNjYxnm
    redirect-url: http://127.0.0.1:8996/tduck-api/oauth2/callback   # OAuth2 回调地址
    web-url: http://127.0.0.1:8888/loginSuc                         # 前端登录成功跳转地址
    scope: all                                                      # 权限范围(根据平台定义)

  server:
    authorization-url: http://sso.maxkey.top/sign/authz/oauth/v20/authorize
    token-url:         http://sso.maxkey.top/sign/authz/oauth/v20/token
    user-info-url:     http://sso.maxkey.top/sign/api/oauth/v20/me
    user-name-attribute: username       # 从 user-info 接口获取的唯一账号字段名

📝 注意:

  • redirect-url 应为你后端部署地址 + /tduck-api/oauth2/callback
  • web-url 是前端项目地址 + /loginSuc(固定)

🖥️ 3. 启动并访问前端

重启项目后,访问前端页面:

http://127.0.0.1:8888/

点击登录按钮 → 自动跳转至统一登录平台进行授权登录。


🔍 4. 源码位置说明

如需修改 OAuth2 逻辑或扩展行为(例如自动注册、角色绑定等),请查看以下路径下的代码:

tduck-x-platform
└── tduck-framework
    └── tduck-security
        └── src/main/java/com/tduck/cloud/security/oauth2

主要涉及类:

  • OAuth2AuthenticationFilter
  • OAuth2LoginSuccessHandler
  • OAuth2UserInfoService

💡 提示建议

  • 若统一登录平台提供 roles 等字段,可扩展自动赋权逻辑;