個人存取權杖
個人存取權杖 (PATs) 提供了一種安全的方式,讓使用者在不使用其憑證和互動式登入的情況下授予 存取權杖 (Access token)。這對於需要以程式方式存取資源的 CI/CD、腳本或應用程式非常有用。
管理個人存取權杖
使用 Console
你可以在 Console > 使用者管理 的使用者詳細資料頁面中管理個人存取權杖。在「驗證 (Authentication)」卡片中,你可以看到個人存取權杖的列表並創建新的權杖。
使用 Management API
設置 Management API 後,你可以使用 API endpoints 來創建、列出和刪除個人存取權杖。
使用 PATs 授予存取權杖
創建 PAT 後,你可以使用權杖交換端點將存取權杖授予你的應用程式。
請求
應用程式使用 HTTP POST 方法向租戶的 權杖端點 發出 權杖交換請求,並使用特殊的授權類型。以下參數以 application/x-www-form-urlencoded
格式包含在 HTTP 請求實體中。
client_id
: 必填。應用程式的 client ID。grant_type
: 必填。此參數的值必須為urn:ietf:params:oauth:grant-type:token-exchange
,表示正在執行權杖交換。resource
: 選填。資源標示符,與其他權杖請求相同。scope
: 選填。請求的權限範圍,與其他權杖請求相同。subject_token
: 必填。使用者的 PAT。subject_token_type
: 必填。subject_token
參數中提供的安全權杖類型。此參數的值必須為urn:logto:token-type:personal_access_token
。
回應
如果權杖交換請求成功,租戶的權杖端點將返回一個代表使用者身分的存取權杖。回應包含以下參數,並以 application/json
格式包含在 HTTP 回應實體中。
access_token
: 必填。使用者的存取權杖,與其他權杖請求如authorization_code
或refresh_token
相同。issued_token_type
: 必填。發行的權杖類型。此參數的值必須為urn:ietf:params:oauth:token-type:access_token
。token_type
: 必填。權杖的類型。此參數的值必須為Bearer
。expires_in
: 必填。存取權杖的有效期(以秒為單位)。scope
: 選填。存取權杖的權限範圍。
權杖交換範例
POST /oidc/token HTTP/1.1
Host: tenant.logto.app
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <base64(client-id:client-secret)>
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&scope=profile
&subject_token=pat_W51arOqe7nynW75nWhvYogyc
&subject_token_type=urn%3Alogto%3Atoken-type%3Apersonal_access_token
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJhbGci...zg",
"issued_token_type": "urn:ietf:params:oauth:token-type:access_token",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "profile"
}
範例存取權杖的內容:
{
"jti": "iFtbZBeh2M1cTTBuKbHk4",
"sub": "123",
"iss": "https://tenant.logto.app/oidc",
"exp": 1672531200,
"iat": 1672527600,
"scope": "profile",
"client_id": "client-id"
}
相關資源
個人存取權杖、機器對機器驗證 (M2M) 和 API 金鑰的定義及其實際應用場景