javascript - Comment implémenter l'authentification d'une SPA React avec Keycloak et le flux PKCE ?
C'est ma première fois à travailler avec Keycloak. J'ai préparé une instance de Keycloak sur ma machine locale dans laquelle je peux créer des realms, des clients, etc.
J'ai trouvé des exemples d'utilisation de React + Keycloak, mais aucun d'entre eux n'utilisait le flux PKCE.
Je ne sais pas comment configurer Keycloak et React. Je sais seulement que l'application cliente doit être capable de générer un vérificateur de code et un défi de code.
Je cherche un exemple simple d'implémentation de l'autorisation en utilisant React et Keycloak, qui devrait suivre le flux OAuth 2.0 Authorization Code Grant avec PKCE, ou des conseils sur ce qu'il faut faire du côté de React et du côté de Keycloak pour implémenter OAuth 2.0.
Ce que je veux faire :
- Configuration d'une instance Keycloak (prête)
- Enregistrement d'un client public dans Keycloack (prêt)
- Mise en œuvre d'un scénario de connexion simple sur le web (le scénario suit le flux d'autorisation OAuth 2.0 avec le code de consentement PKCE)
Réponse #1
(Ancienne interface Keycloak)
Allez dans votre royaume, puis dans client et sélectionnez votre client :
- Définir
Type d'accèssurpublic - Activé
Flux standard activé - Ajoutez les
URI de redirection validesetorigines webappropriés - Allez dans
Paramètres avancéset dans le champMéthode de défi de code pour l'échange de clé de preuve, sélectionnezS256, puis cliquez surEnregistrer.
(Nouvelle interface Keycloak)
Sélectionnez votre royaume, puis allez dans le client et cliquez dans votre client :
- Définir
Authentification du clientsurOFF - Dans
Flux d’authentification, sélectionnezFlux standard - Ajoutez les
URI de redirection valideset lesorigines Webappropriés - Cliquez sur le bouton
Enregistrer - Allez à l'onglet
Avancé - Allez à la section
Paramètres avancéset dans le champMéthode de défi de code pour la clé de preuve d’échange de codesélectionnezS256, puis cliquez surEnregistrer.
Sur l'adaptateur de votre application React, ajoutez "enable-pkce" : true.
Extrait de la documentation de Keycloak :
L'adaptateur KeycloakInstalled prend en charge le mécanisme PKCE [RFC 7636] pour fournir une protection supplémentaire lors des échanges de code contre jeton dans le protocole OIDC. Le PKCE peut être activé avec le paramètre "enable-pkce": true dans la configuration de l'adaptateur. Il est fortement recommandé d'activer le PKCE afin d'éviter les attaques par injection de code et par réutilisation de code.

