17.5. その他の制限
SAML が機能するためには、XMLDSig
セキュリティープロバイダーがセキュリティープロバイダーで利用できることを確認する必要があります。Kerberos が機能するためには、SunJGSS
セキュリティープロバイダーが利用できることを確認する必要があります。OpenJDK 21 で FIPS が有効になっている RHEL 9 では、XMLDSig
セキュリティープロバイダーがデフォルトで java.security
で有効になっており、最新の OpenJDK 17 でも同じことが適用されている場合があります。ただし、古い OpenJDK 17 では、デフォルトでは有効になっていない場合があります。つまり、SAML を効果的に機能させることはできません。
SAML が機能するためには、プロバイダーを JAVA_HOME/conf/security/java.security
FIPS プロバイダーリストに手動で追加します。たとえば、FIPS セキュリティープロバイダーで使用できない場合は、以下のような行を追加します。
fips.provider.7=XMLDSig
セキュリティープロバイダーを追加すると、正常に機能するはずです。実際、これは FIPS に準拠しており、OpenJDK 21 以降のバージョンの OpenJDK 17 にデフォルトで追加されています。詳細は、Bugzilla を参照してください。
JAVA_HOME/conf/security/java.security
で、設定済みのすべてのプラバイダーを確認し、番号が一致することを確認することが推奨されます。言い換えると、fips.provider.7
は、このファイル内に fips.provider.N
のような接頭辞が設定されたプロバイダーがすでに 6 つあることを前提としています。
Java 内の java.security
ファイルを編集しない場合は、カスタム Java セキュリティーファイル (たとえば、kc.java.security
という名前で) を作成し、そのファイルに XMLDSig プロバイダーを追加するための上記のプロパティーを 1 つだけ追加できます。その後、このプロパティーファイルをアタッチして Red Hat build of Keycloak サーバーを起動します。
-Djava.security.properties=/location/to/your/file/kc.java.security
Kerberos/SPNEGO の場合、セキュリティープロバイダー SunJGSS
はまだ完全には FIPS に準拠していません。したがって、FIPS に準拠する必要がある場合は、それをセキュリティープロバイダーリストに追加することは推奨されません。FIPS プラットフォームで実行され、セキュリティープロバイダーが使用できない場合、Red Hat build of Keycloak ではデフォルトで KERBEROS
機能が無効になっています。詳細は、Bugzilla を参照してください。
アルゴリズム EdDSA
は、FIPS モードでは使用できません。現在の BCFIPS
プロバイダーは Ed25519
および Ed448
曲線をサポートしていますが、作成されるキーはそれらを管理するための標準の JDK インターフェイスを実装していません(EdECKey
、EdECPublicKey
、EdECPrivateKey
、…)。また、Red Hat ビルドの Keycloak は署名に使用できません。