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

2. Authorization Server Metadata (認可サーバーメタデータ)

認可サーバー (Authorization Server) は、その構成を記述するメタデータ (Metadata) を持つことができます。本仕様では、以下の認可サーバーメタデータ値を使用し、セクション7.1で確立されたIANA "OAuth Authorization Server Metadata" レジストリに登録します。

issuer

  • 必須である (REQUIRED)。認可サーバーの発行者識別子 (issuer identifier) であり、"https" スキームを使用し、クエリ (query) またはフラグメント (fragment) コンポーネントを含まないURLです。認可サーバーメタデータは、RFC 5785 [RFC5785] に従ってこの発行者識別子から派生した ".well-known" ロケーションで公開されます。詳細はセクション3を参照してください。発行者識別子は、"OAuth 2.0 Mix-Up Mitigation" [MIX-UP] で説明されているように、認可サーバー混同攻撃 (authorization server mix-up attacks) を防ぐために使用されます。

authorization_endpoint

  • 認可サーバーの認可エンドポイント (Authorization Endpoint) [RFC6749] のURLです。認可エンドポイントを使用する許可タイプ (grant type) がサポートされていない場合を除き、必須である (REQUIRED) です。

token_endpoint

  • 認可サーバーのトークンエンドポイント (Token Endpoint) [RFC6749] のURLです。暗黙的許可タイプ (implicit grant type) のみがサポートされている場合を除き、必須である (REQUIRED) です。

jwks_uri

  • 任意である (OPTIONAL)。認可サーバーのJWK Set [JWK] 文書のURLです。参照される文書には、クライアント (Client) が認可サーバーからの署名を検証するために使用する署名鍵 (signing key) が含まれます。このURLは "https" スキームを使用しなければなりません (MUST)。JWK Setには、サーバーの暗号化鍵 (encryption key) も含まれてもよく (MAY)、クライアントはこれらを使用してサーバーへのリクエストを暗号化します。署名鍵と暗号化鍵の両方が利用可能な場合、参照されるJWK Set内のすべての鍵は、各鍵の意図された用途を示すために "use" (公開鍵用途、public key use) パラメータ値を持つことが必須である (REQUIRED) です。

registration_endpoint

  • 任意である (OPTIONAL)。認可サーバーのOAuth 2.0動的クライアント登録エンドポイント (Dynamic Client Registration Endpoint) [RFC7591] のURLです。

scopes_supported

  • 推奨される (RECOMMENDED)。この認可サーバーがサポートするOAuth 2.0 [RFC6749] の "scope" 値のリストを含むJSON配列です。このパラメータを使用する場合でも、サーバーは一部のサポートされているスコープ (scope) 値を公開しないことを選択してもよい (MAY) です。

response_types_supported

  • 必須である (REQUIRED)。この認可サーバーがサポートするOAuth 2.0の "response_type" 値のリストを含むJSON配列です。使用される配列値は、"OAuth 2.0 Dynamic Client Registration Protocol" [RFC7591] で定義されている "response_types" パラメータで使用される値と同じです。

response_modes_supported

  • 任意である (OPTIONAL)。"OAuth 2.0 Multiple Response Type Encoding Practices" [OAuth.Responses] で指定されているように、この認可サーバーがサポートするOAuth 2.0の "response_mode" 値のリストを含むJSON配列です。省略された場合、デフォルト値は ["query", "fragment"] です。レスポンスモード値 "form_post" は、"OAuth 2.0 Form Post Response Mode" [OAuth.Post] でも定義されています。

grant_types_supported

  • 任意である (OPTIONAL)。この認可サーバーがサポートするOAuth 2.0許可タイプ (grant type) 値のリストを含むJSON配列です。使用される配列値は、"OAuth 2.0 Dynamic Client Registration Protocol" [RFC7591] で定義されている "grant_types" パラメータで使用される値と同じです。省略された場合、デフォルト値は ["authorization_code", "implicit"] です。

token_endpoint_auth_methods_supported

  • 任意である (OPTIONAL)。このトークンエンドポイントでサポートされているクライアント認証方法 (client authentication method) のリストを含むJSON配列です。クライアント認証方法値は、[RFC7591] のセクション2で定義されている "token_endpoint_auth_method" パラメータで使用されます。省略された場合、デフォルト値は "client_secret_basic" です。これは、OAuth 2.0 [RFC6749] のセクション2.3.1で指定されているHTTP基本認証スキーム (HTTP Basic Authentication Scheme) です。

token_endpoint_auth_signing_alg_values_supported

  • 任意である (OPTIONAL)。トークンエンドポイントで "private_key_jwt" および "client_secret_jwt" 認証方法を使用してクライアント認証を行う際に、JWT [JWT] の署名に使用するためにトークンエンドポイントでサポートされているJWS署名アルゴリズム ("alg" 値) のリストを含むJSON配列です。"token_endpoint_auth_methods_supported" エントリでこれら2つの認証方法のいずれかが指定されている場合、このメタデータエントリは存在しなければなりません (MUST)。このエントリが省略されている場合、デフォルトアルゴリズムは暗示されません。サーバーは "RS256" をサポートすべきである (SHOULD) です。値 "none" を使用してはなりません (MUST NOT)。

service_documentation

  • 任意である (OPTIONAL)。認可サーバーを使用する際に開発者が知りたい、または知る必要がある人間が読める情報 (human-readable information) を含むページのURLです。特に、認可サーバーが動的クライアント登録 (Dynamic Client Registration) をサポートしていない場合、このドキュメントでクライアントの登録方法に関する情報を提供する必要があります。

ui_locales_supported

  • 任意である (OPTIONAL)。ユーザーインターフェイスでサポートされている言語とスクリプトを表す、BCP 47 [RFC5646] からの言語タグ値のJSON配列です。省略された場合、サポートされている言語とスクリプトのセットは指定されません。

op_policy_uri

  • 任意である (OPTIONAL)。認可サーバーが、登録するクライアントの担当者に対して提供するURLであり、クライアントが認可サーバーによって提供されるデータをどのように使用するかに関する認可サーバーの要件について読むためのものです。提供される場合、登録プロセスは、登録するクライアントの担当者にこのURLを表示すべきである (SHOULD) です。セクション5で述べられているように、識別子 "op_policy_uri" はOpenID固有のように見えますが、本仕様での使用は実際には一般的なOAuth 2.0機能を指しており、OpenID Connect固有のものではありません。

op_tos_uri

  • 任意である (OPTIONAL)。認可サーバーが、登録するクライアントの担当者に対して提供するURLであり、認可サーバーのサービス利用規約 (terms of service) について読むためのものです。提供される場合、登録プロセスは、登録するクライアントの担当者にこのURLを表示すべきである (SHOULD) です。セクション5で述べられているように、識別子 "op_tos_uri" はOpenID固有のように見えますが、本仕様での使用は実際には一般的なOAuth 2.0機能を指しており、OpenID Connect固有のものではありません。

revocation_endpoint

  • 任意である (OPTIONAL)。認可サーバーのOAuth 2.0失効エンドポイント (Revocation Endpoint) [RFC7009] のURLです。

revocation_endpoint_auth_methods_supported

  • 任意である (OPTIONAL)。この失効エンドポイントでサポートされているクライアント認証方法のリストを含むJSON配列です。有効なクライアント認証方法値は、IANA "OAuth Token Endpoint Authentication Methods" レジストリ [IANA.OAuth.Parameters] に登録されている値です。省略された場合、デフォルト値は "client_secret_basic" です。これは、OAuth 2.0 [RFC6749] のセクション2.3.1で指定されているHTTP基本認証スキームです。

revocation_endpoint_auth_signing_alg_values_supported

  • 任意である (OPTIONAL)。失効エンドポイントで "private_key_jwt" および "client_secret_jwt" 認証方法を使用してクライアント認証を行う際に、JWT [JWT] の署名に使用するために失効エンドポイントでサポートされているJWS署名アルゴリズム ("alg" 値) のリストを含むJSON配列です。"revocation_endpoint_auth_methods_supported" エントリでこれら2つの認証方法のいずれかが指定されている場合、このメタデータエントリは存在しなければなりません (MUST)。このエントリが省略されている場合、デフォルトアルゴリズムは暗示されません。値 "none" を使用してはなりません (MUST NOT)。

introspection_endpoint

  • 任意である (OPTIONAL)。認可サーバーのOAuth 2.0イントロスペクションエンドポイント (Introspection Endpoint) [RFC7662] のURLです。

introspection_endpoint_auth_methods_supported

  • 任意である (OPTIONAL)。このイントロスペクションエンドポイントでサポートされているクライアント認証方法のリストを含むJSON配列です。有効なクライアント認証方法値は、IANA "OAuth Token Endpoint Authentication Methods" レジストリ [IANA.OAuth.Parameters] またはIANA "OAuth Access Token Types" レジストリ [IANA.OAuth.Parameters] に登録されている値です。(セクション7.2の理由により、これらの値は異なりますし、今後も異なります。) 省略された場合、サポートされている認証方法のセットは他の手段によって決定されなければなりません (MUST)。

introspection_endpoint_auth_signing_alg_values_supported

  • 任意である (OPTIONAL)。イントロスペクションエンドポイントで "private_key_jwt" および "client_secret_jwt" 認証方法を使用してクライアント認証を行う際に、JWT [JWT] の署名に使用するためにイントロスペクションエンドポイントでサポートされているJWS署名アルゴリズム ("alg" 値) のリストを含むJSON配列です。"introspection_endpoint_auth_methods_supported" エントリでこれら2つの認証方法のいずれかが指定されている場合、このメタデータエントリは存在しなければなりません (MUST)。このエントリが省略されている場合、デフォルトアルゴリズムは暗示されません。値 "none" を使用してはなりません (MUST NOT)。

code_challenge_methods_supported

  • 任意である (OPTIONAL)。この認可サーバーがサポートするコード交換のための証明鍵 (Proof Key for Code Exchange, PKCE) [RFC7636] コードチャレンジ方法 (code challenge method) のリストを含むJSON配列です。コードチャレンジ方法値は、[RFC7636] のセクション4.3で定義されている "code_challenge_method" パラメータで使用されます。有効なコードチャレンジ方法値は、IANA "PKCE Code Challenge Methods" レジストリ [IANA.OAuth.Parameters] に登録されている値です。省略された場合、認可サーバーはPKCEをサポートしていません。

他の認可サーバーメタデータパラメータも使用してもよい (MAY) です。一部のパラメータは、OpenID Connect Discovery 1.0 [OpenID.Discovery] などの他の仕様によって定義されています。

2.1. Signed Authorization Server Metadata (署名された認可サーバーメタデータ)

JSON要素に加えて、メタデータ値は "signed_metadata" 値として提供されてもよく (MAY)、これはJSON Web Token (JWT) [JWT] として、認可サーバーに関するメタデータ値をバンドルとしてアサートします。署名されたメタデータで使用できるクレームのセットは、セクション2で定義されています。署名されたメタデータは、JSON Web Signature (JWS) [JWS] を使用してデジタル署名またはMACされなければならず (MUST)、署名されたメタデータでクレームをアサートする当事者を示す "iss" (発行者、issuer) クレームを含まなければなりません (MUST)。メタデータの消費者 (consumer) は、この機能をサポートしていない場合、署名されたメタデータを無視してもよい (MAY) です。メタデータの消費者が署名されたメタデータをサポートしている場合、署名されたメタデータで伝達されるメタデータ値は、プレーンなJSON要素を使用して伝達される対応する値よりも優先されなければなりません (MUST)。

署名されたメタデータは、この任意の (OPTIONAL) メンバーを使用して認可サーバーメタデータJSONオブジェクトに含まれます。

signed_metadata

  • 認可サーバーに関するメタデータ値をクレームとして含むJWTです。これは、署名されたJWT全体で構成される文字列値です。"signed_metadata" メタデータ値は、JWT内のクレームとして出現すべきではない (SHOULD NOT) です。