Replies: 3 comments 7 replies
-
|
@mposolda @pedroigor FIY |
Beta Was this translation helpful? Give feedback.
-
|
If we ship both artifacts in the distribution it should be possible to have only one of them at runtime. However, this would mean having FIPS as a build option. W.r.t. to #2 do you mean https://quarkus.io/guides/security-customization? And how the store providers are set? |
Beta Was this translation helpful? Give feedback.
-
|
Another question is (assuming we are still using BouncyCastle) if there are any API difference needed (ideal is if there isn't and the KC code can work with both BC and BC-FIPS) how do we tackle that. The ideal way could be to create a Crypto SPI and Crypto Provider wrapping the BC code. Then we can have a BC and a BC-FIPS provider implementation. This would also allow the module in the codebase to have the correct dependencies so we can make sure the API is compatible. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
To enable FIPS compliance in Keycloak there's 3 things that needs to be configured
With regard to 1 if using RHEL or Fedora this can be achieved by enabling FIPS at the host level, which automatically configures OpenJDK. Ideally we'd detect this in Keycloak and automatically configure FIPS in Keycloak when enabled at the host level. For other distributions we'd need some example/documentation on configuring the security providers in OpenJDK, and potentially a config option to enable FIPS mode in Keycloak.
With regard to 2 it may be sufficient to enable FIPS at the OpenJDK level without any additional configuration of Quarkus. This needs to be investigated though.
The bigger topic as part of this discussion is how we achieve 3. BouncyCastle provides separate JARs for BouncyCastle FIPS, including a different security provider. We'd probably want to distribution the Quarkus distribution both with BouncyCastle and BouncyCastle FIPS, and switch which is used with a config option. Ideal would also be to only load the needed JARs on the classpath.
We'll have separate work to update the code-base to allow FIPS compliance, this discussion is limited to configuration at the Quarkus dist level.
Beta Was this translation helpful? Give feedback.
All reactions