web-dev-qa-db-fra.com

Comment générer un jeton JWT via l'API Rest Keycloak?

Je travaille sur l'intégration de Keycloak dans une application existante. Dans le cadre de ce processus, je dois tester que l'application Web peut accepter les jetons jwt générés à partir de keycloak.

J'ai lu les documents de l'API http://www.keycloak.org/docs-api/3.4/rest-api/index.html et je n'ai trouvé aucune méthode pour créer un jeton jwt.

Quelqu'un connaît-il des méthodes api REST pour créer un jeton jwt dans Keycloak?

7
Magick

Selon les détails de la liste de diffusion keycloak fournis par les membres de la liste de diffusion keycloak [Виталий Ищенко et Hynek Mlnarik]

Cela dépend beaucoup du JWT que vous souhaitez émettre. Pour des exemples de génération de jeton d'accès, voir [1], pour le jeton d'action, voir [2], personnalisé, voir [3].

[1] https://github.com/keycloak/keycloak/blob/master/services/src/main/Java/org/keycloak/protocol/oidc/TokenManager.Java#L698

[2] https://github.com/keycloak/keycloak/blob/master/services/src/main/Java/org/keycloak/authentication/actiontoken/DefaultActionToken.Java#L14

[3] https://github.com/keycloak/keycloak/blob/master/core/src/main/Java/org/keycloak/jose/jws/JWSBuilder.Java

Keycloak suit la spécification OIDC, et vous pouvez utiliser n'importe lequel des flux définis dans OAuth2 [1] ainsi que certains flux supplémentaires ajoutés dans OIDC

OIDC dicte l'utilisation de JWT, donc les jetons d'accès (ainsi que refresh_token, id_token et autres sont JWT) seront retournés au format JWT

Pour trouver les adresses de jeton et d'authentification, keycloak fournit l'URL de découverte OIDC, c'est-à-dire http://keycloakhost:keycloakport/auth/realms/{realm}/.well-known/openid-configuration

Il existe de nombreuses bibliothèques qui permettront de simplifier les procédures de demande de jeton écrites pour les spécifications OIDC. Mais Keycloak a un ensemble d'adaptateurs écrits, qui peuvent parfaitement s'intégrer dans votre pile technologique existante [2]. Je pense que leur permettre d'accéder à des jetons JWT bruts

[1] https://aaronparecki.com/oauth-2-simplified/

[2] http://www.keycloak.org/docs/latest/securing_apps/index.html#openid-connect-

7
Subodh Joshi