Keycloak is the upstream project of Red Hat SSO (edit: correct name, thanks snuxoll.)
Running in Kubernetes with RDS Postgres in AWS.
Keycloak is the upstream project of Red Hat SSO (edit: correct name, thanks snuxoll.)
Running in Kubernetes with RDS Postgres in AWS.
I can't imagine any scenario in which you have FIDO keys and admin enrollment and security but I'm prepared to be enlightened.
a) Because the password is assigned first, it has higher priority, so subsequent logins will prompt for password first until the admin manually changes the user's credential ordering to put the WebAuthn (passwordless) token higher. The user's credential priority overrides the order of challenges in the login flow.
b) There is no option to add or replace one of these credentials, or manage credential ordering yourself, in the end-user webapp that does profile editing / password updates.
An admin may be able to reset your account so that you get the first-login experience again and can enroll new credentials.
Nobody should have designed something like this, for WebAuthn in particular the standard is explicit about the desire for multiple tokens. Lots of the design is more complicated so as to support that capability.
If you do use the Docker images it’s pretty straightforward though.
Past that, customization could be better - not because it doesn’t support it but because many of the SPI’s are poorly documented at best, or totally undocumented at worst. You’ll need to read the code and understand Java EE to do anything not supported out of the box, which, to be fair is a lot - but I’m having to spend far more time looking through code than I’d like to add a Steam login for PCGamingWiki, as an example. Thankfully I’ve dabbled with Java EE before so it’s no big deal to me, but something to consider if you wanna do something simple like add extra profile fields.
EDIT: one major nag I have is that the LDAP integration has an annoying bug related to renaming of users. Keycloak can be configured to use a GUID in an LDAP store as the link between a Keycloak user profile and an LDAP object, but when the username changes it will delete and recreate the account instead of updating the username. This creates a whole new sub identifier in the JWT assertions, which has caused me headaches.
I have a bug on file for this which just recently got updated targeting a fix in 10.0, so hopefully this gets fixed soon.
That said, do you believe it will still be possible to extend Keycloak using the deployment-scanner?
Also, do you happen to have open-source code related to Keycloak and/or custom extensions?
Beside the poor doc, finding more open-source code is one of the best way to learn this.
[1]: https://issues.redhat.com/browse/KEYCLOAK-13068?jql=project%...
I'm hoping this will lead to significantly faster startup times so that my integration tests will run faster.
Even if it wouldn't bundling your keycloak-with-amenities is a 10-minutes job (1. make a pom.xml with keycloak dependency and your stuff 2. mvn package 4. there is no step 3)
It is super heavily based on Wildfly, and if you're not using a tool like docker, it can be kind-of a burden. It runs decently well in standalone mode, but we ended up using the docker container's clustering with Kubernetes service discovery helping to find the other nodes to achieve a clustered deployment.
Outside of that is has been extremely stable, we use Kubernetes deployment mechanism along with a correctly defined readiness check to allow us to seamlessly upgrade, and we've gone from 4.3.0.Final to 7.0.1 in production without any problems. We haven't upgraded to 8 or 9 yet as we're actually working on some new frontend UI changes we wanted to get out the door with the release.
When the first replica restart, Keycloak makes the updates to the database itself. Sometimes rolling back to a previous version can break. They do not hold the reverse of the database version [2].
I believe the reason behind the STS (StatefulSet) is so the cache have the time to spread among the replicas as it get upgraded.
[1]: https://github.com/codecentric/helm-charts/tree/master/chart... [2]: https://www.keycloak.org/docs/9.0/upgrading/
Our actual DB size is pretty small so these are very non-intensive tasks.