5. Metadata for Mutual-TLS Endpoint Aliases
5. Metadata for Mutual-TLS Endpoint Aliases
クライアント証明書ベースの mutual TLS の交渉では, TLS サーバが TLS クライアントに証明書を要求する (クライアントは無請求で提示しない). サーバをクライアント証明書任意に設定でき, クライアントが証明書を送らなくても接続を継続できるが, サーバが証明書を要求する行為は一部のクライアントに望ましくない挙動を招く. 特に Web ブラウザは TLS クライアントとして, サーバが証明書を要求すると通常, エンドユーザーに侵襲的な証明書選択 UI を提示する.
mutual TLS を用いるクライアントと従来型クライアントの両方をサポートする authorization server は, サーバ側の mutual-TLS 挙動を mutual TLS を意図するクライアントにのみ隔離し, 従来型クライアントへの悪影響を避けてもよい. 次の authorization server メタデータパラメータはその分離を容易にするために導入される.
mtls_endpoint_aliases
任意. 存在するとき mutual TLS を意図する OAuth クライアントが従来エンドポイントより優先して用いる代替 authorization server エンドポイントを含む JSON オブジェクト. パラメータ値は token_endpoint, revocation_endpoint, introspection_endpoint など, authorization server メタデータのトップレベルで従来定義される 1 つ以上のエンドポイントパラメータから成る. mutual TLS を意図する OAuth クライアントが (OAuth クライアント認証および/または証明書バインドトークンの取得または使用のため) authorization server に直接要求するとき, mtls_endpoint_aliases に存在すれば, メタデータトップレベルの同名エンドポイント URL よりその中のエイリアス URL を優先して使用しなければならない. mtls_endpoint_aliases にエンドポイントがない場合, クライアントはメタデータトップレベルの従来 URL を用いる. OAuth クライアントが直接要求しないエンドポイントを定義しない mtls_endpoint_aliases 内のメタデータパラメータは意味を持たず, 無視すべきである.
以下は mtls_endpoint_aliases パラメータを含む authorization server メタデータ文書の例である. mutual TLS を意図するクライアントが従来の token, revocation, introspection エンドポイントより優先して用いる別名を示す. mtls_endpoint_aliases のエンドポイントは従来のものと異なるホストを用い, authorization server が TLS server_name 拡張 [RFC6066] または実際に別ホストにより TLS 挙動を区別できる.
{
"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"
}
}
図 4: Mutual-TLS エンドポイント別名を含む authorization server メタデータ例