スコープ属性
概要
本記事ではスコープ属性について解説します。
スコープ属性とは
スコープ属性とは、あるスコープに関連づけられる key-value 形式の任意の属性です。それぞれのスコープに対して複数の属性を関連づけ、認可サーバーにおける認可決定やその他の処理に、それらの属性を活用できます。またいくつかの属性は Authlete があらかじめ定義しており、システム設定に用いられます。
設定方法
スコープの属性の設定は以下の手順で行います。
- サービス管理者コンソールにログインし、対象のサービスの編集画面を開きます。
- 「スコープを作成」ボタンを押下し、スコープの編集画面を開きます。
- 最下部の属性ボタンから属性を追加します。
- 属性の key と value の値を入力し、作成ボタンを押下します。各属性の key、value の値は文字列として扱われることにご注意ください。
定義済みのスコープ属性
以下にリストアップされた属性は、Authlete では特別な意味を持つものとして定義されています。
属性のキー |
属性の値 |
説明 |
access_token.duration |
任意の数値 |
スコープ単位でアクセストークンの継続時間を管理したい場合に利用します。詳細は「トークンの有効期間のスコープ単位での制御」をご覧ください。 |
refresh_token.duration |
任意の数値 |
スコープ単位でリフレッシュトークンの継続時間を管理したい場合に利用します。詳細は「トークンの有効期間のスコープ単位での制御」をご覧ください。 |
fapi |
r |
FAPI read-only API プロファイルを有効化したい場合に利用します。詳細は「FAPI の機能を利用する」をご覧ください。 |
fapi |
rw |
FAPI read-and-write API プロファイルを有効化したい場合に利用します。詳細は「FAPI の機能を利用する」をご覧ください。 |
regex |
任意の正規表現 |
スコープ文字列の一部を可変にしたい場合に利用します。詳細は「パラメーター化されたスコープ」の利用」をご覧ください。 |
fapi2 |
sp |
FAPI 2.0 Security プロファイルを有効化したい場合に利用します。詳細は、「FAPI 2.0 Security Profile における認可コードフロー」をご覧ください。 |
fapi2 |
ms-authreq |
認可リクエストに対して FAPI 2.0 Message Signing プロファイルを有効化したい場合に利用します。この属性と (fapi2, ms-authres) の両者を特定のスコープに紐づけることもできます。 |
fapi2 |
ms-authres |
認可レスポンスに対して FAPI 2.0 Message Signing プロファイルを有効化したい場合に利用します。この属性と (fapi2, ms-authreq) の両者を特定のスコープに紐づけることもできます。 |
利用方法
スコープの属性はさまざまな場面で活用可能です。以下の Java による認可サーバーのサンプルコードは、クライアントからの認可リクエストを Authlete の /auth/authorization API を用いて解析し、そのリクエストに含まれるスコープに関連づけられている属性をもとに、なんらかの処理を行う例です。
// Call Authlete /api/authorization API. AuthorizationResponse res = callAuthorizationAPI(); // Get scopes contained in the original authorization request. Scope[] scopes = res.getScopes(); if (scopes == null || scopes.length() == 0) { return; } // Check each scope's attributes. for (Scope scp in scopes) { // Get the scope attributes of the scope. Pair[] attributes = scp.getAttributes(); if (attributes == null || attributes.length() == 0) { continue; } // Check each attributes. for (Pair attr in attributes) { // The key of the attribute. String key = attr.getKey(); // The value of the attirbute. String value = attr.getValue(); // If the key is the target one. if ("targetkey".equals(key)) { // Do something with the value. doSomething(value); } } }
How did we do with this article?