Zum Hauptinhalt springen

2. Authorization Server Metadata (Autorisierungsserver-Metadaten)

Der Autorisierungsserver (Authorization Server) kann Metadaten (Metadata) haben, die seine Konfiguration beschreiben. Diese Spezifikation verwendet die folgenden Autorisierungsserver-Metadatenwerte, die in der in Abschnitt 7.1 eingerichteten IANA-Registrierung "OAuth Authorization Server Metadata" registriert sind:

issuer

  • Erforderlich (REQUIRED). Der Aussteller-Identifikator (issuer identifier) des Autorisierungsservers, der eine URL ist, die das "https"-Schema verwendet und keine Abfrage- (query) oder Fragment- (fragment) Komponente enthält. Die Autorisierungsserver-Metadaten werden an einem ".well-known"-Standort veröffentlicht, der von diesem Aussteller-Identifikator gemäß RFC 5785 [RFC5785] abgeleitet wird, wie in Abschnitt 3 beschrieben. Der Aussteller-Identifikator wird verwendet, um Angriffe durch Verwechslung von Autorisierungsservern (authorization server mix-up attacks) zu verhindern, wie in "OAuth 2.0 Mix-Up Mitigation" [MIX-UP] beschrieben.

authorization_endpoint

  • Die URL des Autorisierungsendpunkts (Authorization Endpoint) [RFC6749] des Autorisierungsservers. Dies ist erforderlich (REQUIRED), es sei denn, es werden keine Grant-Typen unterstützt, die den Autorisierungsendpunkt verwenden.

token_endpoint

  • Die URL des Token-Endpunkts (Token Endpoint) [RFC6749] des Autorisierungsservers. Dies ist erforderlich (REQUIRED), es sei denn, es wird nur der implizite Grant-Typ (implicit grant type) unterstützt.

jwks_uri

  • Optional (OPTIONAL). Die URL des JWK Set [JWK] Dokuments des Autorisierungsservers. Das referenzierte Dokument enthält die Signaturschlüssel (signing key), die vom Client (Client) zur Überprüfung von Signaturen vom Autorisierungsserver verwendet werden. Diese URL muss (MUST) das "https"-Schema verwenden. Das JWK Set kann (MAY) auch die Verschlüsselungsschlüssel (encryption key) des Servers enthalten, die Clients verwenden, um Anfragen an den Server zu verschlüsseln. Wenn sowohl Signatur- als auch Verschlüsselungsschlüssel verfügbar sind, müssen (REQUIRED) alle Schlüssel im referenzierten JWK Set einen "use" (public key use, öffentliche Schlüsselverwendung) Parameterwert haben, um die beabsichtigte Verwendung jedes Schlüssels anzugeben.

registration_endpoint

  • Optional (OPTIONAL). Die URL des OAuth 2.0 Dynamic Client Registration Endpoint [RFC7591] des Autorisierungsservers.

scopes_supported

  • Empfohlen (RECOMMENDED). Ein JSON-Array, das eine Liste der von diesem Autorisierungsserver unterstützten OAuth 2.0 [RFC6749] "scope"-Werte enthält. Auch bei Verwendung dieses Parameters kann (MAY) der Server wählen, einige unterstützte Scope-Werte nicht zu veröffentlichen.

response_types_supported

  • Erforderlich (REQUIRED). Ein JSON-Array, das eine Liste der von diesem Autorisierungsserver unterstützten OAuth 2.0 "response_type"-Werte enthält. Die verwendeten Array-Werte sind dieselben wie die mit dem "response_types"-Parameter verwendeten, der durch "OAuth 2.0 Dynamic Client Registration Protocol" [RFC7591] definiert ist.

response_modes_supported

  • Optional (OPTIONAL). Ein JSON-Array, das eine Liste der von diesem Autorisierungsserver unterstützten OAuth 2.0 "response_mode"-Werte enthält, wie in "OAuth 2.0 Multiple Response Type Encoding Practices" [OAuth.Responses] spezifiziert. Wenn weggelassen, ist der Standardwert ["query", "fragment"]. Der Response-Mode-Wert "form_post" ist auch in "OAuth 2.0 Form Post Response Mode" [OAuth.Post] definiert.

grant_types_supported

  • Optional (OPTIONAL). Ein JSON-Array, das eine Liste der von diesem Autorisierungsserver unterstützten OAuth 2.0 Grant-Typ-Werte (grant type) enthält. Die verwendeten Array-Werte sind dieselben wie die mit dem "grant_types"-Parameter verwendeten, der durch "OAuth 2.0 Dynamic Client Registration Protocol" [RFC7591] definiert ist. Wenn weggelassen, ist der Standardwert ["authorization_code", "implicit"].

token_endpoint_auth_methods_supported

  • Optional (OPTIONAL). Ein JSON-Array, das eine Liste der von diesem Token-Endpunkt unterstützten Client-Authentifizierungsmethoden (client authentication method) enthält. Die Client-Authentifizierungsmethodenwerte werden vom "token_endpoint_auth_method"-Parameter verwendet, der in Abschnitt 2 von [RFC7591] definiert ist. Wenn weggelassen, ist der Standardwert "client_secret_basic" -- das HTTP Basic Authentication Scheme, das in Abschnitt 2.3.1 von OAuth 2.0 [RFC6749] spezifiziert ist.

token_endpoint_auth_signing_alg_values_supported

  • Optional (OPTIONAL). Ein JSON-Array, das eine Liste der vom Token-Endpunkt unterstützten JWS-Signaturalgorithmen ("alg"-Werte) für die Signierung von JWT [JWT] bei Verwendung der Authentifizierungsmethoden "private_key_jwt" und "client_secret_jwt" zur Client-Authentifizierung am Token-Endpunkt enthält. Wenn eine dieser beiden Authentifizierungsmethoden im "token_endpoint_auth_methods_supported"-Eintrag angegeben ist, muss (MUST) dieser Metadateneintrag vorhanden sein. Wenn dieser Eintrag weggelassen wird, wird kein Standardalgorithmus impliziert. Der Server sollte (SHOULD) "RS256" unterstützen. Der Wert "none" darf nicht (MUST NOT) verwendet werden.

service_documentation

  • Optional (OPTIONAL). URL einer Seite mit für Menschen lesbaren Informationen (human-readable information), die Entwickler bei der Verwendung des Autorisierungsservers wissen möchten oder müssen. Insbesondere wenn der Autorisierungsserver keine dynamische Client-Registrierung (Dynamic Client Registration) unterstützt, sollten in dieser Dokumentation Informationen zur Registrierung von Clients bereitgestellt werden.

ui_locales_supported

  • Optional (OPTIONAL). Unterstützte Sprachen und Skripte für die Benutzeroberfläche, dargestellt als JSON-Array von Sprachtagwerten aus BCP 47 [RFC5646]. Wenn weggelassen, ist der Satz der unterstützten Sprachen und Skripte nicht spezifiziert.

op_policy_uri

  • Optional (OPTIONAL). Eine vom Autorisierungsserver der Person bereitgestellte URL, die einen Client registriert, um die Anforderungen des Autorisierungsservers hinsichtlich der Verwendung der vom Autorisierungsserver bereitgestellten Daten durch den Client zu lesen. Falls bereitgestellt, sollte (SHOULD) der Registrierungsprozess diese URL der Person anzeigen, die den Client registriert. Wie in Abschnitt 5 erwähnt, scheint die Kennung "op_policy_uri" zwar OpenID-spezifisch zu sein, aber ihre Verwendung in dieser Spezifikation bezieht sich tatsächlich auf allgemeine OAuth 2.0-Funktionalität und ist nicht spezifisch für OpenID Connect.

op_tos_uri

  • Optional (OPTIONAL). Eine vom Autorisierungsserver der Person bereitgestellte URL, die einen Client registriert, um die Nutzungsbedingungen (terms of service) des Autorisierungsservers zu lesen. Falls bereitgestellt, sollte (SHOULD) der Registrierungsprozess diese URL der Person anzeigen, die den Client registriert. Wie in Abschnitt 5 erwähnt, scheint die Kennung "op_tos_uri" zwar OpenID-spezifisch zu sein, aber ihre Verwendung in dieser Spezifikation bezieht sich tatsächlich auf allgemeine OAuth 2.0-Funktionalität und ist nicht spezifisch für OpenID Connect.

revocation_endpoint

  • Optional (OPTIONAL). Die URL des OAuth 2.0 Revocation Endpoint [RFC7009] des Autorisierungsservers.

revocation_endpoint_auth_methods_supported

  • Optional (OPTIONAL). Ein JSON-Array, das eine Liste der von diesem Revocation-Endpunkt unterstützten Client-Authentifizierungsmethoden enthält. Gültige Client-Authentifizierungsmethodenwerte sind diejenigen, die in der IANA-Registrierung "OAuth Token Endpoint Authentication Methods" [IANA.OAuth.Parameters] registriert sind. Wenn weggelassen, ist der Standardwert "client_secret_basic" -- das HTTP Basic Authentication Scheme, das in Abschnitt 2.3.1 von OAuth 2.0 [RFC6749] spezifiziert ist.

revocation_endpoint_auth_signing_alg_values_supported

  • Optional (OPTIONAL). Ein JSON-Array, das eine Liste der vom Revocation-Endpunkt unterstützten JWS-Signaturalgorithmen ("alg"-Werte) für die Signierung von JWT [JWT] bei Verwendung der Authentifizierungsmethoden "private_key_jwt" und "client_secret_jwt" zur Client-Authentifizierung am Revocation-Endpunkt enthält. Wenn eine dieser beiden Authentifizierungsmethoden im "revocation_endpoint_auth_methods_supported"-Eintrag angegeben ist, muss (MUST) dieser Metadateneintrag vorhanden sein. Wenn dieser Eintrag weggelassen wird, wird kein Standardalgorithmus impliziert. Der Wert "none" darf nicht (MUST NOT) verwendet werden.

introspection_endpoint

  • Optional (OPTIONAL). Die URL des OAuth 2.0 Introspection Endpoint [RFC7662] des Autorisierungsservers.

introspection_endpoint_auth_methods_supported

  • Optional (OPTIONAL). Ein JSON-Array, das eine Liste der von diesem Introspection-Endpunkt unterstützten Client-Authentifizierungsmethoden enthält. Gültige Client-Authentifizierungsmethodenwerte sind diejenigen, die in der IANA-Registrierung "OAuth Token Endpoint Authentication Methods" [IANA.OAuth.Parameters] oder in der IANA-Registrierung "OAuth Access Token Types" [IANA.OAuth.Parameters] registriert sind. (Aus dem in Abschnitt 7.2 genannten Grund sind und bleiben diese Werte unterschiedlich.) Wenn weggelassen, muss (MUST) der Satz der unterstützten Authentifizierungsmethoden auf andere Weise bestimmt werden.

introspection_endpoint_auth_signing_alg_values_supported

  • Optional (OPTIONAL). Ein JSON-Array, das eine Liste der vom Introspection-Endpunkt unterstützten JWS-Signaturalgorithmen ("alg"-Werte) für die Signierung von JWT [JWT] bei Verwendung der Authentifizierungsmethoden "private_key_jwt" und "client_secret_jwt" zur Client-Authentifizierung am Introspection-Endpunkt enthält. Wenn eine dieser beiden Authentifizierungsmethoden im "introspection_endpoint_auth_methods_supported"-Eintrag angegeben ist, muss (MUST) dieser Metadateneintrag vorhanden sein. Wenn dieser Eintrag weggelassen wird, wird kein Standardalgorithmus impliziert. Der Wert "none" darf nicht (MUST NOT) verwendet werden.

code_challenge_methods_supported

  • Optional (OPTIONAL). Ein JSON-Array, das eine Liste der von diesem Autorisierungsserver unterstützten Proof Key for Code Exchange (PKCE) [RFC7636] Code-Challenge-Methoden (code challenge method) enthält. Die Code-Challenge-Methodenwerte werden im "code_challenge_method"-Parameter verwendet, der in Abschnitt 4.3 von [RFC7636] definiert ist. Gültige Code-Challenge-Methodenwerte sind diejenigen, die in der IANA-Registrierung "PKCE Code Challenge Methods" [IANA.OAuth.Parameters] registriert sind. Wenn weggelassen, unterstützt der Autorisierungsserver kein PKCE.

Andere Autorisierungsserver-Metadatenparameter können (MAY) ebenfalls verwendet werden. Einige sind durch andere Spezifikationen definiert, wie OpenID Connect Discovery 1.0 [OpenID.Discovery].

2.1. Signed Authorization Server Metadata (Signierte Autorisierungsserver-Metadaten)

Zusätzlich zu JSON-Elementen können (MAY) Metadatenwerte auch als "signed_metadata"-Wert bereitgestellt werden, der ein JSON Web Token (JWT) [JWT] ist, das Metadatenwerte über den Autorisierungsserver als Bundle assertiert. Der Satz von Claims, die in signierten Metadaten verwendet werden können, ist in Abschnitt 2 definiert. Die signierten Metadaten müssen (MUST) mit JSON Web Signature (JWS) [JWS] digital signiert oder mit MAC versehen werden und müssen (MUST) einen "iss" (Aussteller, issuer) Claim enthalten, der die Partei darstellt, die die Claims in den signierten Metadaten assertiert. Konsumenten von Metadaten, die diese Funktion nicht unterstützen, können (MAY) die signierten Metadaten ignorieren. Wenn der Konsument von Metadaten signierte Metadaten unterstützt, müssen (MUST) die in den signierten Metadaten übermittelten Metadatenwerte Vorrang vor den entsprechenden Werten haben, die mithilfe einfacher JSON-Elemente übermittelt werden.

Die signierten Metadaten werden unter Verwendung dieses optionalen (OPTIONAL) Members in das JSON-Objekt der Autorisierungsserver-Metadaten aufgenommen:

signed_metadata

  • Ein JWT, das Metadatenwerte über den Autorisierungsserver als Claims enthält. Dies ist ein Zeichenfolgenwert, der aus dem gesamten signierten JWT besteht. Der Metadatenwert "signed_metadata" sollte nicht (SHOULD NOT) als Claim im JWT erscheinen.