5. Metadata for Mutual-TLS Endpoint Aliases (Endpunkt-Aliase)
5. Metadata for Mutual-TLS Endpoint Aliases (Endpunkt-Aliase)
Die Aushandlung von Mutual TLS mit Clientzertifikaten erfordert, dass der TLS-Server ein Zertifikat vom Client anfordert (unsolicited sendet der Client keines). Auch wenn Clientzertifikate optional sein können, kann das bloße Anfordern unerwünschtes Verhalten auslösen, insbesondere bei Webbrowsern als TLS-Client, die oft aufdringliche Zertifikatsauswahl-Dialoge zeigen.
Authorization Server, die Mutual-TLS- und herkömmliche Clients unterstützen, KÖNNEN das serverseitige Mutual-TLS-Verhalten auf Clients beschränken, die Mutual TLS beabsichtigen. Dazu dient der folgende Metadatenparameter:
mtls_endpoint_aliases
OPTIONAL. JSON-Objekt mit alternativen Authorization-Server-Endpunkten, die ein OAuth-Client mit Mutual-TLS-Absicht gegenüber den üblichen Endpunkten vorzieht. Der Wert besteht aus einem oder mehreren Endpunktparametern wie token_endpoint, revocation_endpoint, introspection_endpoint usw., wie üblich auf der obersten Metadatenebene. Ein OAuth-Client mit Mutual-TLS-Absicht (für Client-Authentifizierung und/oder zertifikatsgebundene Tokens) MUSS bei direkter Anfrage an den Authorization Server, sofern vorhanden, die Alias-URL innerhalb von mtls_endpoint_aliases der gleichnamigen Top-Level-URL vorziehen. Fehlt ein Endpunkt in mtls_endpoint_aliases, gilt die konventionelle Top-Level-URL. Metadaten innerhalb von mtls_endpoint_aliases, die keine Endpunkte für direkte Client-Anfragen definieren, sind bedeutungslos und SOLLTEN ignoriert werden.
Nachfolgend ein Beispiel mit mtls_endpoint_aliases für Token-, Revocation- und Introspection-Endpunkte. Die Alias-Endpunkte nutzen einen anderen Host, sodass der Authorization Server über die TLS-server_name-Erweiterung [RFC6066] oder getrennte Hosts das TLS-Verhalten differenzieren kann.
{
"issuer": "https://server.example.com",
"authorization_endpoint": "https://server.example.com/authz",
"token_endpoint": "https://server.example.com/token",
"introspection_endpoint": "https://server.example.com/introspect",
"revocation_endpoint": "https://server.example.com/revo",
"jwks_uri": "https://server.example.com/jwks",
"response_types_supported": ["code"],
"response_modes_supported": ["fragment","query","form_post"],
"grant_types_supported": ["authorization_code", "refresh_token"],
"token_endpoint_auth_methods_supported":
["tls_client_auth","client_secret_basic","none"],
"tls_client_certificate_bound_access_tokens": true,
"mtls_endpoint_aliases": {
"token_endpoint": "https://mtls.example.com/token",
"revocation_endpoint": "https://mtls.example.com/revo",
"introspection_endpoint": "https://mtls.example.com/introspect"
}
}
Abbildung 4: Beispiel-Authorization-Server-Metadaten mit Mutual-TLS-Endpunkt-Aliasen