Synchro avec Keycloak : Tâche planifiée pour synchronisation périodique des groupes

Bonjour,

concernant la synchronisation des groupes Keycloak/Simplicité, @Francois tu parles de mettre en place une tâche planifiée.

tu peux expliquer ?

Oui, c’est comme pour Crowd, il faut créer une tache planifiée dans la Cron Simplicité à la fréquence/heure que vous voulez et qui lance l’action livrée en 5.x :

  • Action/Fonction = KEYCLOAK_SYNC
  • méthode de l’action = keycloakSync
  • sur l’objet = Group

et donc s’assurer que le user qui lance le job à la fonction KEYCLOAK_SYNC, par défaut ADMIN est bien habilité si on ne précise pas le run-as de la tache.

On va ajouter une note dans la documentation.

Et on peut aussi lancer la syncho unitairement via la UI avec cette action qui s’affiche sur le liste des groupes, si l’utilisateur a bien les droits sur cette fonction.

je n’ai pas trouvé la tache dans la cron en v4 pour crowd.

je ne trouve pas ces éléments
Action/Fonction = KEYCLOAK_SYNC
méthode de l’action = keycloakSync
sur l’objet = Group

Exemple :

Pour Crowd, il y avait un module CrbCrowd qui devait la contenir.
On va mettre le module Keycloak optionnel dans notre AppStore.

Voici le paramétrage complet, attention il va écraser vos paramètres systèmes, il ne faut reprendre que ce qui vous intéresse (Action Grant, Function, Crontab…) :

Keycloak-0.1.xml (4.0 KB)

Ce n’est pas livré par défaut dans la plateforme.

teste de l’expression Cron = ok
exécution de la tache (en designer) = avec succès

Pas de groupe créé alors que dans les logs j’ai ça :
2021-03-02 15:02:43,202 INFO [com.simplicite.util.CronJob] SIMPLICITE|http://dev-sim:10608/testkeycloak|/testkeycloak|ICORECM005|system|com.simplicite.util.CronJob|run||Résultat de la tâche Group-KEYCLOAK_SYNC : KEYCLOAK Imported 2 group(s). / KEYCLOAK Imported 2 role(s).#INFO
2021-03-02 15:02:43,201 INFO [com.simplicite.util.tools.KeycloakTool] SIMPLICITE|http://dev-sim:10608/testkeycloak|/testkeycloak|INFO|system|com.simplicite.util.tools.KeycloakTool|syncRoles||Evénement: KEYCLOAK Imported 2 role(s).
2021-03-02 15:02:43,201 INFO [com.simplicite.util.tools.KeycloakTool] SIMPLICITE|http://dev-sim:10608/testkeycloak|/testkeycloak|INFO|system|com.simplicite.util.tools.KeycloakTool|syncRole||Evénement: No user found in role APPLI_SIMPLICITE_DEMAT_ADMIN
2021-03-02 15:02:43,201 INFO [com.simplicite.util.tools.KeycloakTool] SIMPLICITE|http://dev-sim:10608/testkeycloak|/testkeycloak|INFO|system|com.simplicite.util.tools.KeycloakTool|call||Evénement: <<< response:

404 Not Found

Not Found


The requested URL was not found on this server.


2021-03-02 15:02:43,199 INFO [com.simplicite.util.tools.KeycloakTool] SIMPLICITE|http://dev-sim:10608/testkeycloak|/testkeycloak|INFO|system|com.simplicite.util.tools.KeycloakTool|call||Evénement: >>> url:https://rec-login.bretagne.bzh/auth/admin/realms/gdi/roles/APPLI_SIMPLICITE_DEMAT_ADMIN/users?max=1000000 method:GET params:null
2021-03-02 15:02:43,199 INFO [com.simplicite.util.tools.KeycloakTool] SIMPLICITE|http://dev-sim:10608/testkeycloak|/testkeycloak|INFO|system|com.simplicite.util.tools.KeycloakTool|call||Evénement: API access_token: eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqY18wRDlCSUZaMlplc21pTl9rRHRCcDRsaWRRbFFBWlBpWi1ucHBNaHlNIn0.eyJleHAiOjE2MTQ2OTE0NzgsImlhdCI6MTYxNDY5MTE3OCwianRpIjoiMzFjZGI4ZjktNjJkYS00M2VmLWIyNGQtZjVhZDljODhlY2Y5IiwiaXNzIjoiaHR0cHM6Ly9yZWMtbG9naW4uYnJldGFnbmUuYnpoL2F1dGgvcmVhbG1zL2dkaSIsInN1YiI6IjZmYWVlNDNjLWQzN2ItNGViMi1iZDg4LTZmMThiYThlZGZmMyIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFkbWluLWNsaSIsInNlc3Npb25fc3RhdGUiOiIyNTM4MDQ2OC0xN2Q4LTQ2ZjQtYTY5Yy1mYzFkN2I0MzBlMGEiLCJhY3IiOiIxIiwic2NvcGUiOiJwcm9maWxlIGVtYWlsIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJTaW1wbGljaXRlIEFkbWluIiwicHJlZmVycmVkX3VzZXJuYW1lIjoic2ltcGxpY2l0ZV9hZG1pbiIsImdpdmVuX25hbWUiOiJTaW1wbGljaXRlIiwiZmFtaWx5X25hbWUiOiJBZG1pbiIsImVtYWlsIjoic2ltcGxpY2l0ZV9hZG1pbkBicmV0YWduZS5iemgifQ.A5CRZTAUccMlNyPejKQ8_uU3GBEbCKp7q09s7Thk2WmZIpbbqLTKcjAoUkuZ-yomjk4FBe7puA6bz1yQyWVDwCCAv5xm6LQEDFXXx3w5Eefx7yB4PLxA7psYBDtMvZeHt0oHpho_AXqIG2n-Rov_EzhvV2zxj8iFysu0kCc8khTMWRo1TWR4SxY7_NEWce2nz6jvccNw5kGFL5X4wPFtvUFbcuVpwGY0bxvfMeBWkxX7iyEnEHLNH92KYHhQQqognVsc_NSQmmdd2sfPn11vDqY-nwz7F42LVxWGD2agiXdXiVo2b2lUIbZTX8NgkgBl87Y_RuHnr0xfwXy4uL9uqg
2021-03-02 15:02:43,199 INFO [com.simplicite.util.tools.KeycloakTool] SIMPLICITE|http://dev-sim:10608/testkeycloak|/testkeycloak|INFO|system|com.simplicite.util.tools.KeycloakTool|syncRoles||Evénement: KEYCLOAK Import role APPLI_SIMPLICITE_DEMAT_ADMIN…
2021-03-02 15:02:43,198 INFO [com.simplicite.util.tools.KeycloakTool] SIMPLICITE|http://dev-sim:10608/testkeycloak|/testkeycloak|INFO|system|com.simplicite.util.tools.KeycloakTool|syncRole||Evénement: No user found in role APPLI_SIMPLICITE_DEMAT_UTILISATEUR
2021-03-02 15:02:43,198 INFO [com.simplicite.util.tools.KeycloakTool] SIMPLICITE|http://dev-sim:10608/testkeycloak|/testkeycloak|INFO|system|com.simplicite.util.tools.KeycloakTool|call||Evénement: <<< response:

404 Not Found

Not Found


The requested URL was not found on this server.


2021-03-02 15:02:43,197 INFO [com.simplicite.util.tools.KeycloakTool] SIMPLICITE|http://dev-sim:10608/testkeycloak|/testkeycloak|INFO|system|com.simplicite.util.tools.KeycloakTool|call||Evénement: >>> url:https://rec-login.bretagne.bzh/auth/admin/realms/gdi/roles/APPLI_SIMPLICITE_DEMAT_UTILISATEUR/users?max=1000000 method:GET params:null

Le role Keycloak APPLI_SIMPLICITE_DEMAT_UTILISATEUR n’a pas de user vu de simplicité mais c’est peut-être l’URL de l’API qui est mauvaise.

  • Il récupère bien un access-token donc c’est qu’il a bien les droits de se connecter
  • mais ça n’indique pas s’il a les droits de lecture des realm/groupe/role/user
  • pour avoir des log plus précise des questions/réponses des API, il faut mettre un “debug”:true dans le paramètre KEYCLOAK_API :
{
    "url": "https://<host:port>/auth",
    "service_root": "/admin/realms",
    "realm": "<my realm name>",
    "client_id": "admin-cli",
    "username": "<my user api>",
    "password": "<my user password>",
    "debug": true
}

On y verra plus clair pour voir si les requêtes sont correctes (voir les tester unitairement via curl), je n’ai jamais eu de “404” dans mes tests mais peut être que mes groupes/roles n’étaient pas vides dans Keycloak.

Comment sont paramétrés les groupes/roles dans votre keycloak ? au niveau realm ou au niveau clientId ? Simplicité regarde normalement dans les 2 niveaux.

le debut est déjà à true. je vois avec Kevin demain matin pour répondre sur le paramétrage des groupes/roles dans Keycloak

Nous regardons de notre coté : l’erreur 404 et les rôles sans utilisateurs.
je reviens vers vous dés que j’ai des réponses

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.