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 build of Keycloak はそれらを署名に使用できません。