YeeAuth 文档
快速入门

接入用户登录

通过标准 OIDC 授权码流程,让用户经由 YeeAuth 登录你的应用。

接入用户登录

本页演示最常用的接入方式:授权码流程(Authorization Code Flow)。它适用于带后端的 Web 应用,安全性最高,也是 OIDC 推荐的默认方式。

开始之前,请确认你已经按照 准备工作 拿到了 Client IDClient SecretIssuer URLRedirect URI

整体流程

用户浏览器              你的应用                    YeeAuth
   │                      │                          │
   │── 点击“登录” ───────▶│                          │
   │◀─ 302 跳转到授权端点 ─│                          │
   │── 跳转到 YeeAuth 登录页 ──────────────────────────▶│
   │                      │       用户输入账号密码      │
   │◀─ 携带 code 跳回 Redirect URI ─────────────────────│
   │── 把 code 交给应用 ──▶│                          │
   │                      │── code + secret 换 Token ─▶│
   │                      │◀─ Access/ID/Refresh Token ─│
   │◀─ 登录成功,建立会话 ─│                          │

第 1 步:把用户重定向到授权端点

当用户点击“登录”时,让浏览器跳转到 Authorization Endpoint,并带上以下查询参数:

GET https://iam.3as.cn/oauth/authorize
    ?client_id=YOUR_CLIENT_ID
    &redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback
    &response_type=code
    &scope=openid%20profile%20email
    &state=RANDOM_STRING
参数说明
client_id你的应用 Client ID
redirect_uri必须与控制台中配置的回调地址完全一致
response_type授权码流程固定为 code
scope申请的权限范围,包含 openid 才会走 OIDC 并返回 ID Token
state随机字符串,原样返回,用于防止 CSRF 攻击

用户会看到 YeeAuth 的登录页,输入账号密码(或其他已配置的认证方式)完成认证。

第 2 步:在回调地址接收授权码

认证成功后,YeeAuth 会把浏览器重定向回你的 redirect_uri,并在查询参数中附带授权码:

http://localhost:3000/callback?code=AUTHORIZATION_CODE&state=RANDOM_STRING

你的应用应当:

  1. 校验 state 与第 1 步发出的值一致,否则拒绝本次登录。
  2. 取出 code,进入下一步换取 Token。

授权码是一次性的且有效期很短,必须立即在后端用它换取 Token,不要在浏览器中长期保存。

第 3 步:用授权码换取 Token

后端Token Endpoint 发起 POST 请求。Client Secret 只能在服务端使用,绝不要放到前端:

curl -X POST https://iam.3as.cn/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "code=AUTHORIZATION_CODE" \
  -d "redirect_uri=http://localhost:3000/callback" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET"

成功后返回类似如下的 JSON:

{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR...",
  "id_token": "eyJhbGciOiJSUzI1NiIsInR...",
  "refresh_token": "def502003a...",
  "token_type": "Bearer",
  "expires_in": 3600
}
字段用途
access_token访问受保护资源(你的后端 API)时携带
id_token证明“用户是谁”的 JWT,包含用户身份声明
refresh_token在 Access Token 过期后换取新的 Token,无需用户重新登录
expires_inAccess Token 的有效期(秒)

第 4 步:获取用户信息

拿到 access_token 后,可以向 Userinfo Endpoint 请求当前用户的详细信息:

curl https://iam.3as.cn/userinfo \
  -H "Authorization: Bearer ACCESS_TOKEN"

返回的字段取决于你申请的 scope,常见的有 sub(用户唯一 ID)、nameemailphone_number 等。至此,你已经成功让用户通过 YeeAuth 登录,并拿到了他的身份信息,可以在自己的系统中建立会话。

关于前端 / 移动端应用

如果你的应用是没有后端的单页应用(SPA)或移动端,不要在客户端保存 Client Secret。请改用带 PKCE 的授权码流程,或直接使用成熟的标准 OIDC 客户端库(多数语言/框架都有官方或社区库)。这些库会自动处理跳转、PKCE、Token 刷新等细节,你只需填入 Issuer URL 和 Client ID 即可。

下一步

登录跑通后,下一步通常是在后端校验 access_token 并接入权限控制,详见 后续步骤

On this page