Skip to content

Fix/keycloak admin#438

Merged
cmon33 merged 4 commits intodevelopfrom
fix/keycloak-admin
Feb 20, 2025
Merged

Fix/keycloak admin#438
cmon33 merged 4 commits intodevelopfrom
fix/keycloak-admin

Conversation

@cmon33
Copy link
Copy Markdown
Contributor

@cmon33 cmon33 commented Feb 20, 2025

Issues liées

Issues numéro:


Quel est le comportement actuel ?

Installe Keycloak avec un utilisateur admin temporaire dans le realm master. Ceci étant lié aux dernières évolutions de l'outil à partir de la version 26.0.0.
Tente de réinitialiser le mot de passe admin en cas de perte du secret keycloak, via une méthode dépréciée.

Quel est le nouveau comportement ?

Déploie Keycloak en créant un administrateur permanent et en supprimant l'administrateur temporaire.
Ne tente pas de réinitialiser le mot de passe admin en cas de perte du secret. Il faut pour l'instant le faire manuellement si besoin (voir section « Autres informations » ci-dessous).

Cette PR introduit-elle un breaking change ?

Non.

Autres informations

Comportement testé et validé dans un cluster de développement.

Pour réinitialiser le mot de passe admin Keycloak en cas de perte, se référer à la documentation officielle suivante :

Plus précisément, il s'agira de créer un compte administrateur temporaire et de l'utiliser pour aller rétablir le mot de passe de notre compte administrateur habituel.

La documentation sur ce point est incomplète dans un contexte Kubernetes et doit être adaptée comme suit.

Vérifier dans notre namespace Keycloak la présence et le nom du service Keycloak headless qui devrait en principe être keycloak-headless.

Ouvrir un shell dans le container keycloak sur l'un des pods Keycloak, exemple :

kubectl exec -it -c keycloak -n dso-keycloak keycloak-0 -- bash

Nous allons devoir injecter les options suivantes à la variable d'environnement JAVA_OPTS_APPEND, en adaptant l'option -Djgroups.dns.query avec notre service headless et notre namespace, et en positionnant l'option -Djgroups.bind.port sur le port 7900, exemple :

JAVA_OPTS_APPEND='-Djgroups.dns.query=keycloak-headless.dso-keycloak.svc.cluster.local -Djgroups.bind.port=7900'

Puis nous lançons la commande indiquée dans la documentation et qui permet de créer un utilisateur admin temporaire :

kc.sh bootstrap-admin user

La commande étant interactive, elle nous demandera de précider le nom de l'admin temporaire souhaité et son mot de passe.

Nous pourrons ensuite nous connecter avec cet admin temporaire à l'interface web de notre instance de Keycloak, puis aller rétablir le mot de passe de notre utilisateur admin habituel.

Une fois le mot de passe admin rétabli dans Keycloak :

  • Se déconnecter de Keycloak et se reconnecter avec l'utilisateur admin habituel, avec le MDP rétabli.
  • Supprimer l'utilisateur admin temporaire que nous avons créé précédemment.
  • Penser à noter le MDP rétabli dans un gestionnaire de mots de passe sécurisé.
  • Éditer si besoin le secret approprié de notre namespace Keycloak (en principe le secret nommé keycloak) afin d'y injecter le bon mot de passe.
  • Actualiser si besoin le secret dso-config du namespace de la Console DSO afin d'y injecter le bon mot de passe.
  • Redémarrer si besoin (rollout restart) le deployment dso-cpn-console-server dans le namespace de la Console DSO.

@cmon33 cmon33 merged commit 528f0cb into develop Feb 20, 2025
@cmon33 cmon33 deleted the fix/keycloak-admin branch February 20, 2025 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants