クライアント属性

概要


クライアント属性とは、クライアント単位で関連づけられる key-value 形式の任意の属性です。認可サーバーはこの属性を、たとえば、クライアントの区分や役割の定義や、認証・認可フローの制御、生成するアクセストークンのスコープや ID トークンのクレームの決定に役立てることができます。またリソースサーバーも、イントロスペクションの結果として得られたクライアント属性をもとに、クライアントに返却すべき API レスポンスを制御できるようになります。

クライアント属性


本記事ではクライアント属性について、設定方法とユースケースを解説します。







設定方法


クライアント属性の設定は以下の手順で行います。

  1. クライアントアプリ開発者コンソールにログインし、対象のクライアントの編集画面を開きます。
  2. 「属性作成」ボタンを押下し、属性を作成するダイアログを開きます。
  3. 属性の key と value の値を入力し、「作成」ボタンを押下します。各属性の key、value の値は文字列として扱われることにご注意ください。

以下は、キーに「affiliation」、値に「partner」を持つ属性を設定した例です。



ユースケース


クライアント属性はさまざまな局面で利用可能です。ここでは代表的なユースケースを紹介します。

クライアント管理における設定項目の制御


クライアント属性はクライアント情報の一部として取得可能です。以下は Authlete の /client/get/{clientId} API のリクエスト・レスポンスの例です。

[...]
  "attributes": [
    {
      "key": "affiliation",
      "value": "partner"
    }
  ],
[...]

認可サーバーはこのレスポンスをもとに、そのクライアントが外部パートナーのアプリケーションであると判断し、クライアント管理者が設定可能な項目を制御できるようになるでしょう。


認可フローの制御


認可サーバーは Authlete の /auth/authorization API のレスポンスとして得られたクライアント属性を、その後の認可フローの制御に利用できます。以下は同 API のレスポンス例です。

{
  "type": "authorizationResponse",
  "action": "INTERACTION",
  "client": {
    "attributes": [
      {
        "key": "affiliation",
        "value": "partner"
      }
    ],
[...]

この場合、認可サーバーはこのクライアントの区分が "partner" であると判断し、この後に続くユーザー認証や同意確認において、アクセス許可を求めているクライアントは外部パートナーのアプリケーションであると、ユーザーに示すことができるでしょう。


API レスポンスの制御


Authlete API が返却するトークンイントロスペクションのレスポンスには、クライアント属性が含まれます。以下は /auth/introspection API のレスポンス例です。

{
  "type": "introspectionResponse",
  "action": "OK",
  "clientAttributes": [
    {
      "key": "affiliation",
      "value": "partner"
    }
  ],
[...]

リソースサーバーはこの属性をもとに、アクセストークンを用いて API リクエストを行ったクライアントが外部パートナーのアプリケーションであると判断し、API レスポンスを制御できるようになるでしょう。




参考情報




How did we do with this article?