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

2. Resource Parameter (resource パラメーター)

2. Resource Parameter (resource パラメーター)

認可サーバーへのリクエストで, クライアントは次のパラメーターをリクエストに含めることにより, アクセスを要求している保護リソース (別名リソースサーバー, アプリケーション, API 等) を示してもよい.

resource

: アクセスが要求されている対象サービスまたはリソースを示す. その値は [RFC3986] 第 4.3 節で規定される absolute URI (絶対 URI) でなければならない. その URI に fragment コンポーネントを含めてはならない. query コンポーネントは含めないことが望ましいが, 1 つ以上のクエリパラメーターでリクエストをアプリケーションにスコープする場合など, query を resource パラメーターの有用かつ必要な部分とするケースがあることは認識されている. resource パラメーターの URI 値はリソースの識別を表す識別子であり, 対象リソースがホストされるネットワーク上で到達可能な位置に対応する locator であってもよい. 複数の resource パラメーターを用い, 要求されたトークンが複数リソースで使用される意図であることを示してもよい.

パラメーター値は, クライアントがアクセスを要求しているリソースを識別する. パラメーターは保護リソースの場所を運ぶことができ, 通常は https URL またはより抽象的な識別子である. これにより認可サーバーはリソースに応じたポリシー, 例えば発行するトークンの種類と内容, トークンを暗号化するかどうかと方法, 適切な audience 制限の適用などを行える.

クライアントは, アクセスを意図する API またはリソース集合全体について, 可能な限り最も具体的な URI を提供すべきである. 実務上, クライアントは対話するアプリケーションまたはリソースの base URI を知っており, それを resource パラメーターの値として用いるのが適切である. リソースに関する具体的知識が別途要求されない限り, クライアントは API の base URI を resource の値として用いるべきである. 例えば, そのホスト上の唯一のアプリケーションであるリソースには https://api.example.com/ を用いるが, そのホスト上の多数のアプリケーションの 1 つであれば https://api.example.com/app/ のようなより具体的な値を用いる. 別の例として, API に複数エンドポイントがある場合, System for Cross-domain Identity Management (SCIM) [RFC7644] には https://apps.example.com/scim/Users, https://apps.example.com/scim/Groups, https://apps.example.com/scim/Schemas 等がある. クライアントは https://apps.example.com/scim/ をリソースとして用い, 発行されたアクセストークンが SCIM API のすべてのエンドポイントで有効となるようにする.

認可サーバーが認可リクエストまたはアクセストークンリクエストへの応答で, 要求されたリソースに関する問題を示すために次のエラーコードを提供する. またクライアントに, リソースと scope の無効な組み合わせを要求したことを伝えるためにも用いられる.

invalid_target

: 要求されたリソースが無効, 欠落, 不明, または形式が正しくない.

認可サーバーは, 発行したアクセストークンを resource パラメーターで示されたリソースに audience 制限すべきである. audience 制限は JSON Web Token (JWT) [RFC7519] の aud クレームで伝えられ, 同じ名前のトップレベルメンバーが Token Introspection (トークンイントロスペクション) [RFC7662] 応答で audience 制限情報を提供する. 認可サーバーは正確な resource 値を audience として用いてもよいし, その値から与えられたリソースのより一般的な URI または抽象識別子へマップしてもよい.