Keycloak récupérer les attributs personnalisés pour KeycloakPrincipal
dans mon service rest je peux obtenir les informations principales après authentification en utilisant
KeycloakPrincipal kcPrincipal = (KeycloakPrincipal) servletRequest.getUserPrincipal();
déclaration.
Keycloak principal ne fait pas cotain toutes les informations dont j'ai besoin à propos de l'utilisateur authentifié. Est-il possible de personnaliser mon propre type principal? Sur le keycloak-server-end, nous avons développé un fournisseur de Fédération d'utilisateurs. J'ai vu que UserModel permet d'ajouter un ensemble d'attributs personnalisés à mon utilisateur.
Est-il possible d'insérer mon personnalisée principal dans ce code?
est-il possible de récupérer ces attributs à partir de keycloak principal?
Quel est le chemin?
2 réponses
Pour ajouter des attributs personnalisés que vous devez faire trois choses:
- ajouter des attributs à la console d'administration
- ajouter la cartographie des claims
- demandes D'accès
Le premier est expliqué très bien ici: http://www.keycloak.org/docs/3.3/server_admin/topics/users/attributes.html
Ajouter un mappage de revendication:
- Ouvrir la console d'administration de votre domaine.
- aller aux Clients et ouvrez votre client
- cela ne fonctionne que pour les paramètres > Type D'accès confidentiel ou public (non porteur seulement)
- Aller à Mappeurs
- Créer un mappage à partir de votre attribut json
- cochez "Add to ID token"
demandes D'accès:
final Principal userPrincipal = httpRequest.getUserPrincipal();
if (userPrincipal instanceof KeycloakPrincipal) {
KeycloakPrincipal<KeycloakSecurityContext> kp = (KeycloakPrincipal<KeycloakSecurityContext>) userPrincipal;
IDToken token = kp.getKeycloakSecurityContext().getIdToken();
Map<String, Object> otherClaims = token.getOtherClaims();
if (otherClaims.containsKey("YOUR_CLAIM_KEY")) {
yourClaim = String.valueOf(otherClaims.get("YOUR_CLAIM_KEY"));
}
} else {
throw new RuntimeException(...);
}
J'espère que cela vous aidera et vous conviendra. J'ai utilisé ce pour un attribut personnalisé, j'ai ajouté avec un thème personnalisé.
Sélectionnez Utilisateurs > recherche > cliquez sur ID > allez à l'onglet Attributs > Ajouter un attribut > par exemple: téléphone > Enregistrer
sélectionnez Clients > cliquez sur L'ID du Client > allez à L'onglet Mappers > créer mapper
Obtenir les attributs personnalisés