Jeton porteur porte-clés
L’authentification unique (SSO) de Red Hat, ou sa version open source, Keycloak, est l’un des principaux produits de SSO Web et est basé sur des normes populaires telles que SAML (Security Assertion Markup Language) 2.0, OpenID Connect et OAuth 2.0. L’une des fonctionnalités les plus importantes de Red Hat SSO est que nous pouvons accéder directement à Keycloak de plusieurs façons, que ce soit par le biais d’un simple formulaire de connexion HTML ou d’un appel API. Dans le scénario suivant, nous allons générer un jeton JWT, puis le valider. Tout sera fait à l’aide d’appels API, de sorte que l’interface utilisateur de Keycloak n’est pas exposée directement au public.
Tout
d’abord, nous allons créer un utilisateur simple dans Keycloak, comme le montre la figure 1.
Figure 1 : Création d’un utilisateur dans Keycloak. >
Remplissez tous les champs obligatoires, tels que Nom d’utilisateur , Prénom et Nom. Nom , comme illustré à la figure 2.
Figure 2 : Entrez les informations de l’utilisateur. >
Définissez le mot de passe de l’utilisateur, comme illustré à la figure 3.
Figure 3 : Définition du mot de passe de l’utilisateur. >
Configurer un client L’étape
suivante consiste à créer un client spécifique dans notre domaine, comme le montre la figure 4. Un client dans Keycloak représente une ressource à laquelle des utilisateurs particuliers peuvent accéder, que ce soit pour authentifier un utilisateur, demander des informations d’identité ou valider un jeton d’accès.
Figure 4 : Visualisez vos clients existants. >
Cliquez sur Créer pour ouvrir la boîte de dialogue Ajouter un client, comme illustré à la figure 5.
Figure 5 : Création d’un client. >
Remplissez tous les champs obligatoires dans le client forme. Faites particulièrement attention au flux de subvention directe (illustré à la figure 6) et définissez sa valeur sur subvention directe . Remplacez également le type d’accès par confidentiel.
Figure 6 : Remplacement du flux d’authentification du client. >
Enfin, remplacez les informations d’identification du client dans le champ Authentificateur client par ID client et secret , comme illustré à la figure 7.
Figure 7 : Définissez les informations d’identification de votre nouveau client. >
Testez votre nouveau client
Nous pouvons maintenant tester notre client nouvellement créé via l’API REST pour simuler une simple connexion. Notre URL d’authentification est la suivante :
http://localhost:8080/auth/realms/Remplissez les paramètres et définissez notre et avec notre nom d’utilisateur et mot de passe :
curl -L -X POST 'http://localhost:8080/auth/realms/whatever-realm/protocol/openid-connect/token' \ -H 'Content-Type : application/x-www-form-urlencoded' \ --data-urlencode 'client_id=clientid-03' \ --data-urlencode 'grant_type=password' \ --data-urlencode 'client_secret=ec78c6bb-8339-4bed-9b1b-e973d27107dc' \ --data-urlencode 'scope=openid' \ --data-urlencode 'username=emuhamma' \ --data-urlencode 'password=1'Nous pouvons également utiliser des outils d’API REST comme Postman pour simuler une requête HTTP POST, comme le montre la figure 8.
Figure 8 : Notre requête HTTP POST simulée. >
Le résultat serait un jeton JWT valide :
{ « access_token" » : « eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiAwNjEwLCJpc3MiOiJodHRwO....... wKRTus6PAoHMFlIlYQ75dYiLzzuRMvdXkHl6naLNQ8wYDv4gi7A3eJ163YzXSJf5PmQ », « expires_in » : 600, « refresh_expires_in » : 1800, « refresh_token » : "eyJhbGciOiJIUzI1NiIsInR5cC....... IsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUifQ.ePV2aqeDjlg6ih6SA7_x77gT4JYyv7HvK7PLQW-X1mM », « token_type » : « porteur », « id_token » : « eyJhbGciOiJSUz....... A_d_LV96VCLBeTJSpqeqpMJYlh4AMJqN6kddtrI4ixZLfwAIj-Qwqn9kzGe-v1-oe80wQXrXzVBG7TJbKm4x5bgCO_B9lnDMrey90rvaKKr48K697ug », « not-before-policy » : 0, « session_state » : « 22c8278b-3346-468e-9533-f41f22ed264f », « scope » : « profil de messagerie openid » }Une mauvaise combinaison de nom d’utilisateur et de mot de passe entraîne un code de réponse HTTP 401 et un corps de réponse comme ceci :
{ « error » : « invalid_grant », « error_description » : « Informations d’identification de l’utilisateur invalides » }Et voilà. Vous disposez maintenant d’une API de connexion configurée pour fonctionner correctement avec Keycloak. Amusez-vous!