Table of Contents
クライアント属性とは、クライアント単位で関連づけられる key-value 形式の任意の属性です。認可サーバーはこの属性を、たとえば、クライアントの区分や役割の定義や、認証・認可フローの制御、生成するアクセストークンのスコープや ID トークンのクレームの決定に役立てることができます。またリソースサーバーも、イントロスペクションの結果として得られたクライアント属性をもとに、クライアントに返却すべき API レスポンスを制御できるようになります。
本記事ではクライアント属性について、設定方法とユースケースを解説します。
本機能は Authlete バージョン 2.2 以降にて利用可能です。
クライアント属性の設定は以下の手順で行います。
以下は、キーに「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” であると判断し、この後に続くユーザー認証や同意確認において、アクセス許可を求めているクライアントは外部パートナーのアプリケーションであると、ユーザーに示すことができるでしょう。
Authlete API が返却するトークンイントロスペクションのレスポンスには、クライアント属性が含まれます。以下は /auth/introspection API のレスポンス例です。
{
"type": "introspectionResponse",
"action": "OK",
"clientAttributes": [
{
"key": "affiliation",
"value": "partner"
}
],
[...]
}
リソースサーバーはこの属性をもとに、アクセストークンを用いて API リクエストを行ったクライアントが外部パートナーのアプリケーションであると判断し、API レスポンスを制御できるようになるでしょう。