接入用户登录
通过标准 OIDC 授权码流程,让用户经由 YeeAuth 登录你的应用。
接入用户登录
本页演示最常用的接入方式:授权码流程(Authorization Code Flow)。它适用于带后端的 Web 应用,安全性最高,也是 OIDC 推荐的默认方式。
开始之前,请确认你已经按照 准备工作 拿到了 Client ID、Client Secret、Issuer URL 和 Redirect 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你的应用应当:
- 校验
state与第 1 步发出的值一致,否则拒绝本次登录。 - 取出
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_in | Access Token 的有效期(秒) |
第 4 步:获取用户信息
拿到 access_token 后,可以向 Userinfo Endpoint 请求当前用户的详细信息:
curl https://iam.3as.cn/userinfo \
-H "Authorization: Bearer ACCESS_TOKEN"返回的字段取决于你申请的 scope,常见的有 sub(用户唯一 ID)、name、email、phone_number 等。至此,你已经成功让用户通过 YeeAuth 登录,并拿到了他的身份信息,可以在自己的系统中建立会话。
关于前端 / 移动端应用
如果你的应用是没有后端的单页应用(SPA)或移动端,不要在客户端保存 Client Secret。请改用带 PKCE 的授权码流程,或直接使用成熟的标准 OIDC 客户端库(多数语言/框架都有官方或社区库)。这些库会自动处理跳转、PKCE、Token 刷新等细节,你只需填入 Issuer URL 和 Client ID 即可。
下一步
登录跑通后,下一步通常是在后端校验 access_token 并接入权限控制,详见 后续步骤。