パーソナルアクセス トークン
パーソナルアクセス トークン (PAT) は、ユーザーが資格情報やインタラクティブなサインインを使用せずに アクセス トークン を安全に提供する方法です。これは、CI/CD、スクリプト、またはプログラムでリソースにアクセスする必要があるアプリケーションに役立ちます。
パーソナルアクセス トークンの管理
Console を使用する
Console > ユーザー管理 のユーザー詳細ページでパーソナルアクセス トークンを管理できます。「認証 (Authentication)」カードで、パーソナルアクセス トークンのリストを表示し、新しいトークンを作成できます。
Management API を使用する
Management API を設定した後、API エンドポイント を使用して、パーソナルアクセス トークンを作成、リスト、削除できます。
PAT を使用してアクセス トークンを付与する
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"
}
関連リソース
パーソナルアクセス トークン、マシン間通信 (M2M) 認証 (Authentication)、および API キーの定義とその 実際のシナリオ