-
トークン全般
- ユーザーがクライアントに付与した認可の取得・変更・取り消し
- 発行済トークン情報の更新
- トークンの有効期間の計算ロジック
- トークンの有効期間のスコープ単位での制御
- トークンの有効期間のクライアント単位での制御
- 変更した「トークンの有効期間」が適用されるタイミング
- 使用されていないトークンに関する Authlete の削除ポリシー
- トークン無効化ポリシー
- アクセストークン
- リフレッシュトークン
- ID トークン
- 所持証明 (PoP) トークン
- 認可タイプ
- スコープ
- PKCE (RFC 7636)
- クライアント管理
- 認可リクエスト
- ユーザー認証
- エラー処理
- クライアント認証
- イントロスペクション
- Userinfo エンドポイント
- JARM
- デバイスフロー (RFC 8628)
ユーザーがクライアントに付与した認可の取得・変更・取り消し
はじめに
本記事では、ユーザーがクライアントに付与した認可の、取得・変更・取り消しを行う API の実行例を紹介します。 これらはたとえば以下の場合に有用です。
- ユーザー本人が API 事業者(認可サーバー)のサイトにログインし、自分がどのクライアントを認可しているかを確認する
- API 事業者がユーザーからの依頼に基づいて、特定のクライアントに発行したトークンを削除する
1. ユーザーが認可を付与した(トークンが発行された)クライアント一覧の取得
/client/authorization/get/list API は、ある特定のユーザーが、どのクライアントに対して認可しているか(トークンを発行しているか)を、リストとして取得する APIです。
リクエスト
GET もしくは POST にてリクエストを行います。
GET /api/client/authorization/get/list/<subject>
GET /api/client/authorization/get/list?subject=<subject>
POST /api/client/authorization/get/list application/x-www-form-urlencoded
POST /api/client/authorization/get/list application/json
リクエストパラメーターは以下の通りです。
項目 |
説明 |
subject |
ユーザー一意識別子 *必須
|
start |
検索結果の開始インデックス(デフォルト: 0) |
end |
検索結果の終了インデックス (デフォルト: 5) |
developer |
開発者識別子(デフォルト: null) |
レスポンス
成功レスポンス
ステータスコード 200 にて、以下のパラメーターを含む JSON が返却されます。
項目 |
説明 |
subject |
ユーザー一意識別子 |
start |
検索結果の開始インデックス |
end |
検索結果の終了インデックス |
developer |
開発者識別子 |
totalCount |
該当するクライアントの総数 |
clients |
クライアント情報の配列(クライアント情報のフォーマットは /client/get API 等の他の API レスポンスに含まれるクライアント情報と同一) |
失敗レスポンス
ステータスコード 400, 403, 500 などにて、以下の JSON が返却されます。
application/json { "resultCode": ..., "resultMessage": ... }
実行例
- リクエスト
以下はユーザー "testuser01" が認可を付与したクライアント一覧を取得するリクエストの例です。
$ curl -s -X POST $AL_API/client/authorization/get/list \ -u ...:... \ -H 'Content-type: application/json' \ -d '{"subject":"testuser01"}'
- レスポンス
clients にクライアント一覧を含むレスポンスが返却されます。
{ "type": "authorizedClientListResponse", "clients": [ { ... "clientId": 17566160603766, "clientIdAliasEnabled": false, "clientName": "FAPI Client", ... "developer": "authlete_14500880170338", ... } ], "end": 5, "start": 0, "totalCount": 1, "subject": "testuser01" }
2. クライアントに付与した認可の範囲(トークンのスコープ)の変更
/client/authorization/update API は、特定のクライアントに発行されているトークンのうち、あるユーザーが認可を付与したものについて、それらのトークンの認可範囲(スコープ)を変更する API です。
リクエスト
POST にてリクエストを行います。URL の一部にクライアント ID (clientId) を指定します。
POST /api/client/authorization/update/<clientId> application/x-www-form-urlencoded
POST /api/client/authorization/update/<clientId> application/json
リクエストパラメーターは以下の通りです。
項目 |
説明 |
subject |
ユーザー一意識別子 *必須
|
scopes |
新しいスコープ群の配列
|
レスポンス
ステータスコード 200, 400, 403, 500 などにて、以下の JSON が返却されます。
application/json { "resultCode": ..., "resultMessage": ... }
実行例
- リクエスト
以下は、クライアント "17566160603766" に発行されているトークンのうち、
ユーザー "testuser01" が認可を付与したものについて、それらのトークンの認可範囲(スコープ)を "payment" に変更するリクエストの例です。
ユーザー "testuser01" が認可を付与したものについて、それらのトークンの認可範囲(スコープ)を "payment" に変更するリクエストの例です。
$ curl -s -X POST $AL_API/client/authorization/update/17566160603766 \ -u ...:... \ -H 'Content-type: application/json' \ -d '{'\ '"subject":"testuser01",'\ '"scopes":"payment"'\ '}'
- レスポンス
アクセストークンが更新されたことを示すレスポンスが返却されます。
{ "resultCode": "A138001", "resultMessage": "[A138001] Updated 4 access token(s) issued to the client (ID = 17566160603766) of the service (API Key = ...)." }
3. クライアントに付与した認可の取消(発行したトークンの削除)
/client/authorization/delete API は、特定のクライアントに発行されているトークンのうち、あるユーザーが認可を付与したものについて、それらのトークンを削除する API です。
リクエスト
DELETE もしくは POST にてリクエストを行います。URL の一部にクライアント ID (clientId) を指定します。
DELETE /api/client/authorization/delete/<clientId>/<subject>
DELETE /api/client/authorization/delete/<clientId>?subject=<subject>
POST /api/client/authorization/delete/<clientId> application/x-www-form-urlencoded
POST /api/client/authorization/delete/<clientId> application/json
リクエストパラメーターは以下の通りです。
項目 |
説明 |
subject |
ユーザー一意識別子 *必須
|
レスポンス
ステータスコード 200, 400, 403, 500 などにて、以下の JSON が返却されます。
application/json { "resultCode": ..., "resultMessage": ... }
実行例
- リクエスト
以下は、クライアント "17566160603766" に発行されているトークンのうち、
ユーザー "testuser01" が認可を付与したものについて、それらを削除するリクエストの例です。
ユーザー "testuser01" が認可を付与したものについて、それらを削除するリクエストの例です。
$ curl -s -X POST $AL_API/client/authorization/delete/17566160603766 \ -u ...:... \ -H 'Content-type: application/json' \ -d '{"subject":"testuser01"}'
- レスポンス
アクセストークンが削除されたことを示すレスポンスが返却されます。
{ "resultCode": "A137001", "resultMessage": "[A137001] Deleted 4 access token(s) issued to the client (ID = 17566160603766) of the service (API Key = ...)." }
How did we do with this article?