5. Metadata for Mutual-TLS Endpoint Aliases (Métadonnées pour les alias de points de terminaison mutual-TLS)
5. Metadata for Mutual-TLS Endpoint Aliases (Métadonnées pour les alias de points de terminaison mutual-TLS)
La négociation de mutual TLS fondé sur certificat client implique qu'un serveur TLS demande un certificat au client TLS (le client n'en fournit pas de lui-même). Bien qu'un serveur puisse être configuré pour que les certificats client soient optionnels, c'est-à-dire que la connexion puisse continuer lorsque le client ne fournit pas de certificat, le fait qu'un serveur demande un certificat peut entraîner un comportement indésirable chez certains clients. C'est particulièrement vrai des navigateurs Web en tant que clients TLS, qui présentent en général à l'utilisateur final une interface intrusive de sélection de certificat lorsque le serveur en demande un.
Les serveurs d'autorisation qui prennent en charge à la fois les clients utilisant mutual TLS et les clients conventionnels PEUVENT choisir d'isoler le comportement mutual-TLS côté serveur aux seuls clients qui ont l'intention d'utiliser mutual TLS, évitant ainsi tout effet indésirable sur les clients conventionnels. Le paramètre de métadonnées suivant du serveur d'autorisation est introduit pour faciliter une telle séparation :
mtls_endpoint_aliases
OPTIONNEL. Objet JSON contenant des points de terminaison alternatifs du serveur d'autorisation que, lorsqu'ils sont présents, un client OAuth ayant l'intention d'utiliser mutual TLS préfère aux points de terminaison conventionnels. La valeur du paramètre elle-même consiste en un ou plusieurs paramètres de point de terminaison, tels que token_endpoint, revocation_endpoint, introspection_endpoint, etc., conventionnellement définis pour le niveau supérieur des métadonnées du serveur d'autorisation. Un client OAuth ayant l'intention d'utiliser mutual TLS (pour l'authentification client OAuth et/ou pour acquérir ou utiliser des jetons liés au certificat) lorsqu'il adresse une requête directement au serveur d'autorisation DOIT utiliser l'URL alias du point de terminaison dans mtls_endpoint_aliases, lorsqu'elle est présente, de préférence à l'URL du point de terminaison du même nom au niveau supérieur des métadonnées. Lorsqu'un point de terminaison n'est pas présent dans mtls_endpoint_aliases, le client utilise l'URL conventionnelle définie au niveau supérieur des métadonnées du serveur d'autorisation. Les paramètres de métadonnées dans mtls_endpoint_aliases qui ne définissent pas de points de terminaison vers lesquels un client OAuth adresse une requête directe n'ont pas de signification et DEVRAIENT être ignorés.
Ci-dessous un exemple de document de métadonnées du serveur d'autorisation avec le paramètre mtls_endpoint_aliases, qui indique des alias pour les points de terminaison de jeton, de révocation et d'introspection qu'un client OAuth ayant l'intention d'utiliser mutual TLS utiliserait de préférence aux points de terminaison conventionnels correspondants. Noter que les points de terminaison dans mtls_endpoint_aliases utilisent un hôte différent de leurs homologues conventionnels, ce qui permet au serveur d'autorisation (via l'extension TLS server_name [RFC6066] ou des hôtes réellement distincts) de différencier son comportement TLS de manière appropriée.
{
"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"
}
}
Figure 4 : Exemple de métadonnées du serveur d'autorisation avec alias de points de terminaison mutual-TLS