5. Metadata for Mutual-TLS Endpoint Aliases (Alias di endpoint)
5. Metadata for Mutual-TLS Endpoint Aliases (Metadati per alias di endpoint mutual-TLS)
Il processo di negoziazione del mutual TLS basato su certificato client prevede che un server TLS richieda un certificato al client TLS (il client non ne fornisce uno senza richiesta). Sebbene un server possa essere configurato in modo che i certificati client siano opzionali, nel senso che la connessione può proseguire quando il client non fornisce un certificato, il fatto che un server richieda un certificato può produrre comportamenti indesiderati in alcuni client. Ciò vale in particolare per i browser Web come client TLS, che in genere presentano all'utente finale un'interfaccia invasiva di selezione del certificato quando il server ne richiede uno.
Gli authorization server che supportano sia client che usano mutual TLS sia client convenzionali POSSONO scegliere di isolare il comportamento mutual-TLS lato server ai soli client che intendono usare mutual TLS, evitando così effetti indesiderati sui client convenzionali. Si introduce il seguente parametro di authorization server metadata per facilitare tale separazione:
mtls_endpoint_aliases
OPZIONALE. Oggetto JSON contenente endpoint alternativi dell'authorization server che, se presenti, un client OAuth che intende usare mutual TLS preferisce agli endpoint convenzionali. Il valore del parametro consiste in uno o più parametri di endpoint, come token_endpoint, revocation_endpoint, introspection_endpoint, ecc., definiti convenzionalmente per il livello superiore degli authorization server metadata. Un client OAuth che intende usare mutual TLS (per l'autenticazione client OAuth e/o per acquisire o usare token vincolati al certificato) quando effettua una richiesta direttamente all'authorization server DEVE usare l'URL alias dell'endpoint in mtls_endpoint_aliases, se presente, in preferenza all'URL dell'endpoint omonimo al livello superiore dei metadati. Quando un endpoint non è presente in mtls_endpoint_aliases, il client usa l'URL convenzionale definito al livello superiore degli authorization server metadata. I parametri di metadati in mtls_endpoint_aliases che non definiscono endpoint verso cui un client OAuth effettua una richiesta diretta non hanno significato e DOVREBBERO essere ignorati.
Di seguito un esempio di documento di authorization server metadata con il parametro mtls_endpoint_aliases, che indica alias per gli endpoint token, revocation e introspection che un client OAuth che intende usare mutual TLS preferirebbe agli endpoint convenzionali corrispondenti. Si noti che gli endpoint in mtls_endpoint_aliases usano un host diverso rispetto alle controparti convenzionali, consentendo all'authorization server (tramite l'estensione TLS server_name [RFC6066] o host effettivamente distinti) di differenziare il comportamento TLS in modo appropriato.
{
"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"
}
}
Figura 4: Esempio di metadati del server di autorizzazione con alias di endpoint mutual-TLS