三个步骤即可上手
从取得 API 密钥到发出第一个已验证的请求,只需不到五分钟。
创建帐户并在开发者主控台中注册一个 OAuth 用户端。你会取得一组 client_id 与 client_secret。
# Developer console
https://uniauth.id/account/developer
# Or via Admin API
POST /api/admin/oauth-clients
{
"name": "My App",
"redirect_uris": ["https://app.example/cb"]
}使用权杖端点,将授权码换取访问权杖与 ID 权杖。
curl -X POST https://uniauth.id/api/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_SECRET" \
-d "redirect_uri=https://app.example/cb" \
-d "code_verifier=PKCE_VERIFIER"权杖端点会回传访问权杖、ID 权杖与刷新权杖。使用访问权杖即可调用受保护的端点。
{
"access_token": "eyJhbGci...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "dGhpcyBpcyBh...",
"id_token": "eyJhbGci...",
"scope": "openid profile email"
}依类别划分的 API 端点
32 个端点,分为六大群组。每个端点都会强制运行速率限制、验证 Content-Type,并回传一致的错误对象。
验证
6 个端点/api/auth/login以电子邮件与密码验证用户。回传工作阶段权杖,并在已激活时触发 2FA。
/api/auth/register以电子邮件、密码及选填的个人数据字段创建新的用户帐户。
/api/auth/logout终止目前的工作阶段、撤销权杖,并为 OAuth 用户端触发后信道/前信道注销。
/api/auth/forgot-password寄送一封含有 SHA-256 哈希、有时效性权杖的密码重设电子邮件。
/api/auth/reset-password使用 forgot-password 取得的权杖重设密码。会强制运行密码历史与强度检查。
/api/auth/verify-email使用注册时寄送的验证权杖确认电子邮件的所有权。
OAuth 2.0 / OIDC
6 个端点/api/oauth/authorize启动采用 PKCE 的 OAuth 2.0 授权码流程。先重新导向至登录,再导向至授权同意画面。
/api/oauth/token将授权码换取权杖、刷新权杖,或处理 device/client-credentials 授权类型。
/api/oauth/userinfo回传已验证用户的 OIDC 声明。依 OIDC Core 第 5.3.1 节支持 GET 与 POST。
/api/oauth/revoke撤销访问权杖或刷新权杖。支持 token_type_hint 参数。
/api/oauth/introspect查看权杖以判断其有效状态、范围与中继数据(RFC 7662)。
/.well-known/openid-configurationOIDC 探索文档,包含所有端点、支持的范围、声明与算法。
用户管理
4 个端点/api/user/profile截取已验证用户的完整个人数据,包含 OIDC 标准声明与偏好设置。
/api/user/profile更新个人数据字段:显示名称、简介、地区设置、社群链接、地址等。
/api/user/sessions列出已验证用户的所有作用中工作阶段,并附上设备信息与最近活动。
/api/user/sessions依 ID 撤销特定工作阶段,或撤销所有其他工作阶段(密码变更时的失效机制)。
组织/团队
8 个端点/api/user/organizations自助创建组织。创建者将成为拥有者(最多可拥有 10 个组织);以 team 方案开始。
/api/org/{id}/users列出并管理组织成员与角色(owner/admin/member)。team 方案上限为 25 个席位(超过时回传 HTTP 402)。
/api/org/{id}/invitations以电子邮件邀请成员,并通过权杖接受。容量会在邀请与接受时皆强制检查。
/api/org/{id}/groups创建并管理组织群组与成员。群组名称会出现在 OIDC 的 groups 声明中。
/api/org/{id}/clients/{cid}/scim-token为组织签发或轮替各用户端的 SCIM 权杖。enterprise 方案——否则回传 402 upgrade_required。
/api/org/{id}/domains为组织新增并验证自定义网域。enterprise 方案——用于控管网域范围的 SSO 与采集。
/api/org/{id}/saml-idps设置传入 SSO:SAML SP 与 OIDC 联合 IdP(亦含 /federated-idps)。enterprise 方案。
/api/org/{id}/billing各组织的 Stripe 计费:订阅状态、席位与结账。每个组织都是独立的客户,依席位计费。
SCIM 2.0 布建
4 个端点/api/scim/v2/Users以 SCIM 筛选语法列出或搜索用户。支持分页与属性投影。
/api/scim/v2/Users通过 SCIM 布建新用户。将 SCIM 用户资源结构描述对应至 UniAuth 的 users 数据表。
/api/scim/v2/Groups列出或搜索群组。包含成员参照,并支持筛选查找。
/api/scim/v2/Bulk在单一请求中运行多项 SCIM 操作。每批量最多 100 项操作。
管理
4 个端点/api/admin/users列出所有用户,支持分页、搜索、角色筛选与排序。需具备管理员或审核员角色。
/api/admin/analytics截取平台分析数据:DAU/WAU/MAU、登录趋势、2FA 采用率、验证方法分布。
/api/admin/audit-events查找防窜改的稽核纪录。可依类别、运行者、目标、日期范围与事件类型筛选。
/api/admin/webhooks注册一个 Webhook 端点,包含事件订阅与 HMAC-SHA256 签章密钥。
API 验证方法
依端点与使用情境,提供四种验证 API 请求的方式。
在 Authorization 标头中传入访问权杖。用于受 OAuth 保护的端点,例如 userinfo、权杖内省,以及用户端对用户端的 API 调用。
GET /api/oauth/userinfo
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Accept: application/json第一方请求会使用登录后设置的 HttpOnly、Secure、SameSite=Lax Cookie。用于面向用户的页面,以及帐户/管理 API。
GET /api/user/profile
Cookie: auth_token=eyJhbGci...
# HttpOnly — not accessible via JS
# SameSite=Lax — CSRF protectionDPoP(RFC 9449)会将权杖绑定至特定的用户端密钥。请在访问权杖之外一并发送 DPoP 证明 JWT。可防止权杖遭窃与重送。
GET /api/oauth/userinfo
Authorization: DPoP eyJhbGci...
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIs...
# Proof JWT includes htm, htu, iat, jtiSCIM 布建端点通过每个 OAuth 用户端专属的 SCIM 权杖进行验证。该权杖以 SHA-256 哈希形式保存,并限定於单一组织范围。
GET /api/scim/v2/Users
Authorization: Bearer scim_token_abc123...
Content-Type: application/scim+json官方用户端程序库
适用于 JavaScript 与 React 的类型化 SDK,内置 PKCE、权杖生命周期与注销功能。
JavaScript / TypeScript SDK
@uniauth/js
React SDK
@uniauth/react
React 的 provider、hooks 与预先建置的组件:UniAuthProvider、useUser、LoginButton、LogoutButton、ProtectedRoute 与 UserProfile。
npm install @uniauth/react各端点的速率限制
为保护平台,所有端点皆设有速率限制。限制以 15 分钟的滑动窗口重设。
POST /api/auth/loginPOST /api/auth/registerPOST /api/auth/forgot-passwordPOST /api/auth/verify-*POST /api/scim/v2/Bulk所有其他端点速率限制标头(X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After)会包含在每个回应中。 设置 Redis 后,限制会在所有服务器运行个体间强制运行。