メインコンテンツまでスキップ

パーソナルアクセス トークン

パーソナルアクセス トークン (PAT) は、ユーザーが資格情報やインタラクティブなサインインを使用せずに アクセス トークン を安全に提供する方法です。これは、CI/CD、スクリプト、またはプログラムでリソースにアクセスする必要があるアプリケーションに役立ちます。

パーソナルアクセス トークンの管理

Console を使用する

Console > ユーザー管理 のユーザー詳細ページでパーソナルアクセス トークンを管理できます。「認証 (Authentication)」カードで、パーソナルアクセス トークンのリストを表示し、新しいトークンを作成できます。

Management API を使用する

Management API を設定した後、API エンドポイント を使用して、パーソナルアクセス トークンを作成、リスト、削除できます。

PAT を使用してアクセス トークンを付与する

PAT を作成した後、トークン交換エンドポイントを使用してアプリケーションにアクセス トークンを付与できます。

リクエスト

アプリケーションは、HTTP POST メソッドを使用して特別なグラントタイプでテナントの トークンエンドポイントトークン交換リクエスト を行います。次のパラメーターが application/x-www-form-urlencoded 形式で HTTP リクエストエンティティボディに含まれます。

  1. client_id: 必須。アプリケーションのクライアント ID。
  2. grant_type: 必須。このパラメーターの値は urn:ietf:params:oauth:grant-type:token-exchange で、トークン交換が行われていることを示します。
  3. resource: 任意。他のトークンリクエストと同様のリソースインジケーター。
  4. scope: 任意。他のトークンリクエストと同様の要求されたスコープ。
  5. subject_token: 必須。ユーザーの PAT。
  6. subject_token_type: 必須。subject_token パラメーターで提供されるセキュリティトークンのタイプ。このパラメーターの値は urn:logto:token-type:personal_access_token でなければなりません。

レスポンス

トークン交換リクエストが成功すると、テナントのトークンエンドポイントはユーザーのアイデンティティを表すアクセス トークンを返します。レスポンスには、application/json 形式で HTTP レスポンスエンティティボディに次のパラメーターが含まれます。

  1. access_token: 必須。ユーザーのアクセス トークンで、authorization_coderefresh_token などの他のトークンリクエストと同じです。
  2. issued_token_type: 必須。発行されたトークンのタイプ。このパラメーターの値は urn:ietf:params:oauth:token-type:access_token でなければなりません。
  3. token_type: 必須。トークンのタイプ。このパラメーターの値は Bearer でなければなりません。
  4. expires_in: 必須。アクセス トークンの有効期間(秒)。
  5. 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 キーの定義とその 実際のシナリオ