6.5.5. クライアント証明書ルックアップ
HTTP リクエストが Red Hat Single Sign-On サーバーに直接送信されると、JBoss EAP undertow サブシステムは SSL ハンドシェイクを確立し、クライアント証明書を展開します。その後、クライアント証明書はサーブレット仕様で指定されるように HTTP リクエストの javax.servlet.request.X509Certificate
属性に保存されます。Red Hat Single Sign-On X509 オーセンティケーターは、この属性から証明書をルックアップできます。
ただし、Red Hat Single Sign-On サーバーがロードバランサーまたはリバースプロキシーの背後で HTTP 要求をリッスンする場合は、クライアント証明書を抽出し、相互 SSL 接続を確立するプロキシーサーバーである可能性があります。リバースプロキシーは通常、認証されたクライアント証明書を基盤のリクエストの HTTP ヘッダーに配置し、バックエンド Red Hat Single Sign-On サーバーに転送します。この場合、Undertow に対するため、Red Hat Single Sign-On は、HTTP リクエストの属性ではなく、HTTP ヘッダーから X.509 証明書チェーンを検索できる必要があります。
Red Hat Single Sign-On がリバースプロキシーの背後にある場合は、通常 RHSSO_HOME/standalone/configuration/standalone.xml で x509cert-lookup
SPI の代替プロバイダーを設定する必要があります。HTTP ヘッダーから証明書を検索する default
プロバイダーとともに、haproxy
と apache
の 2 つの組み込みプロバイダーもあります。これについては、以下で説明します。
6.5.5.1. HAProxy 証明書ルックアッププロバイダー
Red Hat Single Sign-On サーバーが HAProxy リバースプロキシーの背後に配置されると、このプロバイダーを使用できます。以下のようにサーバーを設定します。
<spi name="x509cert-lookup"> <default-provider>haproxy</default-provider> <provider name="haproxy" enabled="true"> <properties> <property name="sslClientCert" value="SSL_CLIENT_CERT"/> <property name="sslCertChainPrefix" value="CERT_CHAIN"/> <property name="certificateChainLength" value="10"/> </properties> </provider> </spi>
この設定例では、クライアント証明書が HTTP ヘッダー、SSL_CLIENT_CERT
、およびチェーンからの他の証明書が CERT_CHAIN_0
、CERT_CHAIN_1
、CERT_CHAIN_9
などの HTTP ヘッダーから検索されます。certificateChainLength
はチェーンの最大長であるため、最後の試行属性は CERT_CHAIN_9
になります。
クライアント証明書およびクライアント証明書チェーンの HTTP ヘッダーとそれらの適切な名前を設定する方法の詳細は、HAProxy ドキュメントを参照してください。