三個步驟即可上手
從取得 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 後,限制會在所有伺服器執行個體間強制執行。