Existe-t-il un moyen d'obtenir une liste d'utilisateurs sur un domaine Keycloak via REST SANS en utilisant un compte administrateur? Peut-être que certains sorte de rôle assignable à partir de la console d'administration? Vous cherchez des idées.
En ce moment, j'utilise les informations d'identification d'administrateur pour récupérer un jeton d'accès, puis j'utilise ce jeton pour extraire les utilisateurs du realm/users
point final.
Obtenir le jeton (à partir de l'application node.js via request
):
uri: `${keycloakUri}/realms/master/protocol/openid-connect/token`,
form: {
grant_type: 'password',
client_id: 'admin-cli',
username: adminUsername,
password: adminPassword,
}
Utilisation du jeton:
uri: `${keycloakUri}/admin/realms/${keycloakRealm}/users`,
headers: {
'authorization': `bearer ${passwordGrantToken}`,
}
Je veux pouvoir utiliser des informations utilisateur génériques (noms d'utilisateur, e-mails, noms complets) à partir d'une application client.
Vous devez attribuer le view-users
rôle du realm-management
client, pour l'utilisateur souhaité. Ce serait la configuration pour l'utilisateur:
Ensuite, vous pouvez récupérer tous les utilisateurs du ${keycloakUri}/admin/realms/${keycloakRealm}/users
point final. Ce sont les informations récupérées de l'enpoint, accessibles via Postman:
De plus, sans rapport avec la question posée, je vous encourage fortement à ne pas utiliser grant_type=password
sauf si vous en avez absolument besoin. Depuis le blog keycloak :
RESULT=`curl --data "grant_type=password&client_id=curl&username=user&password=password" http://localhost:8180/auth/realms/master/protocol/openid-connect/token`
C'est un peu cryptique et heureusement, ce n'est pas comme ça que vous devriez vraiment obtenir des jetons. Les jetons doivent être obtenus par les applications Web en redirigeant vers la page de connexion Keycloak. Nous le faisons uniquement pour que nous puissions tester le service car nous n'avons pas encore d'application pouvant invoquer le service. Fondamentalement, ce que nous faisons ici est d'invoquer le point de terminaison du jeton Keycloaks OpenID Connect avec le type d'autorisation défini sur mot de passe, qui est le flux des informations d'identification du propriétaire de la ressource qui permet d'échanger un nom d'utilisateur et un mot de passe pour un jeton.
Voir aussi Oauth2 spec .