Keycloack - filtrage des groupes à la volée

Bonjour,

Est-il possible de filtrer les groupes autorisés dans le paramétrage du AUTH_PROVIDER keycloack via les userinfo_mappings
“groups”: [ “realm.roles”, “groups” ]
Pour n’autoriser que les groupes commençant par AAAA%

Simplicité version 5.3 à jour.

Je suis pas expert mais je pense qu’il y a ce qu’il faut pour lister des groupes autorisés (sans wildcard). cf. la doc sur le connecteur keycloak.

NB: sous contrôle de @Francois, ce connecteur utilise les APIs de Keycloak, on est donc au delà du protocole standard OIC

Je ne comprends pas la question.

La wildcard AAAA* du paramètre USER_SYNC_GROUPS_INCLUDE sert à synchroniser via API keycloak tous les groupes “commençant par AAAA” en base locale.

Dans le mapping du AUTH_PROVIDER, les groupes listés dans le mapping des “groups” sont ajoutés au profil s’ils sont présents dans le service “userinfo” du protocole d’authent. Il n’y a pas de wildcard prévue.

Merci, tu as répondu à ma question.

Est-ce qu’il est prévu d’ajouter une wildcard prévue au niveau de groups dans le AUTH_PROVIDER ?

Actuellement je récupère à la volée tous les groupes de l’utilisateur s’ils sont présents dans le service “userinfo”

Groupe 1; Groupe 2; AAAA 1; AAAA 2

Mon idée était de filtrer les groupes AAAA% pour ne créer que les groupes AAAA% et les associés au profils.

Je ne peux pas surcharger le platformHooks à tout hasard ?

une relance sur mon dernier post

Sans présumer de la réponse de @Francois pour le cas particulier de KeyCloak, dans le cas général dans un preLoadGrant il y a la possibilité d’exploiter le contenu de la session info pour implémenter des règles (ex: l’attributions de droits) en fonction de ce qui est retourné par l’IdP:

	@Override
	public void preLoadGrant(Grant g) {
		AppLog.info(g.getSessionInfo().toString(), g);
	}

Je passe ton besoin en feature request.

Si je comprends bien, tu souhaites que les groups qui sont montés dans le profil puissent avoir une wildcard sans avoir besoin de tous les lister dans le paramètre.

actuellement il faut être explicite dans le AUTH_PROVIDER mapping :
"groups": [ "AAAA1", "AAAA2", "AAAA3", "AAAA4" ]
syntaxe plus générique :
"groups": [ "AAAA*" ]

Attention au nom des groupes, il est préférable d’avoir des “_” et non des espaces pour respecter la regexp de Simplicité sur les nommages techniques.

Nota : Simplicité ne va pas créer les groupes, pour la synchronisation auto via API Keycloack des users+groups il y a d’autres paramètres.

@sebhardy

  • Peux tu nous donner ton paramétrage AUTH_PROVIDER pour keycloak avec la syntaxe actuelle et celle que tu souhaites ?
  • et également le userinfo que tu récupères (avec les realm.roles ou les groups)
  • et aussi le paramètre KEYCLOAK_SYNC

Je ne vois pas très bien à quel niveau tu souhaites positionner un wilcard ?
car le paramètre “groups” donne juste les chemins dans le userinfo du système d’authent où se trouve le/les groupes à charger.

A mon avis il va falloir ajouter un autre paramètre au niveau AUTH_PROVIDER pour filtrer, ou réutiliser le paramètre d’import prefix de KEYCLOAK_SYNC.

Je te communique les informations par mail, je ne préfère pas partager les logs ici.

Ok compris, il faut pouvoir spécifier un filtre au niveau du mapping et pas de la synchronisation.

Voici une syntaxe qui permettra d’avoir plusieurs filtres (que ça vienne des roles ou des groupes Keycloak) :

"groups": [ "realm.roles", "groups" ],
"whitelist": [ "PEPS_*", "SIMPLCITE_*" ]

Ca évitera comme tu l’indiques de créer des groupes en local qui n’ont rien à voir avec votre application.

L’évolution étant simple, ce sera backporté et livré en 5.3.30.

1 Like

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