6.5. X.509 クライアント証明書ユーザー認証
サーバーが相互 SSL 認証用に設定されている場合、Red Hat Single Sign-On は、X.509 クライアント証明書を使用したログインをサポートします。
一般的なワークフローは以下のとおりです。
- クライアントは SSL/TLS チャンネルで認証リクエストを送信します。
- SSL/TLS ハンドシェイクの間、サーバーとクライアントは x.509/v3 証明書を交換します。
- コンテナー (JBoss EAP) は、証明書 PKIX パスと証明書の有効期限を検証します。
X.509 クライアント証明書オーセンティケーターは、以下のようにクライアント証明書を検証します。
- 必要に応じて、CRL や CRL ディストリビューション Points を使用して証明書失効リストのステータスを確認します。
- オプションで OCSP (Online Certificate Status Protocol) を使用して証明書失効リストのステータスを確認します。
- 必要に応じて、証明書の鍵の使用量が予想されるキー使用量と一致するかどうかを検証します。
- 必要に応じて、証明書の拡張鍵の使用量が予想される拡張鍵の使用と一致するかどうかを検証します。
- 上記のチェックのいずれかが失敗すると、x.509 認証が失敗します。
- それ以外の場合は、オーセンティケーターは証明書 ID を抽出し、既存のユーザーにマップします。
証明書が既存のユーザーにマッピングされると、認証フローに応じてさまざまな動作が行われます。
- ブラウザーフローでは、サーバーはユーザーにアイデンティティーを確認するか、無視するよう指示し、代わりにユーザー名/パスワードでサインインします。
- Direct Grant Flow の場合、サーバーがユーザーサインインします。
6.5.1. 機能
- サポート対象の証明書 ID ソース
- 正規表現を使用した SubjectDN の一致
- X500 サブジェクトの e-mail 属性
- X500 サブジェクトの件名拡張 (RFC822Name 一般名) からのメール
- サブジェクトの別名エクステンションの X500 サブジェクトの他の名前。通常、これは UPN (User Principal Name) です。
- X500 サブジェクトのコモンネーム属性
- 正規表現を使用した IssuerDN の一致
- 証明書のシリアル番号
- Certificate Serial Number および IssuerDN
- SHA-256 証明書サムプリント
- PEM 形式の完全な証明書
- 正規表現
- 証明書アイデンティティーは、フィルターとして正規表現を使用してサブジェクト DN または Issuer DN から抽出できます。たとえば、以下の正規表現は e-mail 属性と一致します。
emailAddress=(.*?)(?:,|$)
正規表現のフィルターは、Identity Source
が、Match SubjectDN using regular expression
または Match IssuerDN using regular expression
のいずれかに設定されている場合にのみ適用されます。
- 既存のユーザーへの証明書 ID のマッピング
-
証明書アイデンティティーのマッピングは、抽出したユーザー ID を既存のユーザーのユーザー名またはメールアドレスにマッピングするか、または証明書 ID に一致するカスタム属性にマッピングするように設定できます。たとえば、
Identity source
を Subject’s e-mail に設定し、User mapping method
を Username or email に設定すると、X.509 クライアント証明書オーセンティケーターは、証明書の Subject DN の e-mail 属性を使用して、ユーザー名または電子メールで既存のユーザーを検索します。
レルム設定で Login with email
を無効にすると、同じルールが証明書認証に適用されることに注意してください。つまり、ユーザーは e-mail 属性を使用してログインできません。
ID ソースに Certificate Serial Number and IssuerDN
を使用するには、2 つのカスタム属性が必要です。1 つはシリアル番号の場合、もう 1 つは IssuerDN です。
SHA-256 Certificate thumbprint
は、SHA-256 証明書のサムプリントの小文字の 16 進数表示です。
ID ソースとしての Full certificate in PEM format
の使用は、LDAP などの外部フェデレーションソースにマッピングされたカスタム属性に限定されます。ただし、制限が長いため、Keycloak データベースには証明書を保存できないため、Always Read Value From LDAP
を有効にする必要があります。
- その他機能: 拡張証明書の検証
- CRL を使用した状態チェックの取り消し
- CRL/分散ポイントを使用した状態チェックの取り消し
- OCSP/Responder URI を使用した状態チェックの取り消し
- Certificate KeyUsage 検証
- 証明書 ExtendedKeyUsage 検証