个人访问令牌
个人访问令牌 (PATs) 为用户提供了一种安全的方式来授予 访问令牌,而无需使用他们的凭据和交互式登录。这对于需要以编程方式访问资源的 CI/CD、脚本或应用程序非常有用。
管理个人访问令牌
使用 Console
你可以在 Console > 用户管理 的用户详情页面中管理个人访问令牌。在“认证 (Authentication)”卡片中,你可以看到个人访问令牌的列表并创建新的令牌。
使用 Management API
在设置 Management API 后,你可以使用 API 端点 来创建、列出和删除个人访问令牌。
使用 PATs 授予访问令牌
创建 PAT 后,你可以使用令牌交换端点将其用于向你的应用程序授予访问令牌。
请求
应用程序使用 HTTP POST 方法向租户的 令牌端点 发起 令牌交换请求,使用特殊的授权类型。以下参数以 application/x-www-form-urlencoded
格式包含在 HTTP 请求实体中。
client_id
: 必需。应用程序的客户端 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"
}
相关资源
个人访问令牌、机器对机器认证 (Authentication) 和 API 密钥的定义及其实际应用场景