OAuth/OIDC における mTLS
- クライアント認証の手段として、共有された を使用すること。
- が、本来想定されていない第三者にも使われる可能性があること。

/oauth/token エンドポイントを呼び出すと、生成される access token には、リソースサーバーがクライアントの TLS 証明書とその access token に対応する証明書が一致していることを検証するための情報が含まれます。

Auth0 における mTLS
cname-api-key を付与したうえで、Auth0 上のテナントのエッジドメインに転送されます。

https://<custom-domain>/.well-known/openid-configuration
レスポンスが成功すると、OIDC ディスカバリー ドキュメント、つまり mTLS に関連するものを含む認可サーバーのプロパティとエンドポイントを一覧にした JSON オブジェクトが返されます。
mTLS クライアント認証が有効になっている場合、OIDC ディスカバリー ドキュメントには token_endpoint_auth_methods_supported プロパティが含まれ、その値には tls_client_auth または self_signed_tls_client_auth のいずれかが入ります:
tls_client_certificate_bound_access_tokens プロパティは true に設定されます:
mtls_endpoint_aliases が公開されます。mTLS をサポートするクライアントでは、mtls_endpoint_aliases に記載されたエンドポイントが、mtls_endpoint_aliases の外で公開されている同じエンドポイントより優先されます。
次のコードサンプルでは、token_endpoint プロパティが 2 回公開されています。mTLS 呼び出しに使用するエンドポイントは mtls_endpoint_aliases に記載されている https://mtls.auth.bank.com/oauth/token です。
mtls_endpoint_aliasesに記載されていない場合は、mtls_endpoint_aliasesの外側に記載されている同じエンドポイントを使用します。上の例では、pushed_authorization_request_endpointはmtls_endpoint_aliasesに記載されていません。そのため、mtls_endpoint_aliasesの外側で公開されているpushed_authorization_request_endpoint、つまりhttps://auth.bank.com/oauth/parを使用します。
詳しくは、RFC 8705のエンドポイント エイリアスに関する節を参照してください。
リソースサーバーを呼び出す
tls_client_certificate_bound_access_tokens プロパティを含む OIDC ディスカバリー ドキュメントを返します。
クライアントが mTLS にバインドされたアクセストークンを使用してリソースサーバーを呼び出すと、リソースサーバーは TLS ハンドシェイク中にクライアントへ mTLS のクライアント証明書を要求します。リソースサーバーは、そのクライアント証明書と一致しないアクセストークンを含むリクエストを、401 HTTP ステータスコードと invalid_token エラーコードで拒否する必要があります。詳細については、Configure Resource Server for 送信者制約 を参照してください。