« DeepSeek apiplatform keycloak » : différence entre les versions

Ligne 56 : Ligne 56 :


== Comment fonctionne apiplatform et un sevrveur keycloak ensemble ? ==
== Comment fonctionne apiplatform et un sevrveur keycloak ensemble ? ==
L'intégration d''''API Platform''' et d'un serveur '''Keycloak''' permet de créer une architecture sécurisée où les API sont protégées par un système d'authentification et d'autorisation robuste. Voici comment ces deux technologies fonctionnent ensemble :
L'intégration d''''API Platform''' et d'un serveur '''Keycloak''' permet de créer une architecture sécurisée où les API sont protégées par un système d'authentification et d'autorisation robuste. Voici comment ces deux technologies fonctionnent ensemble :
---
---
=== 1. '''Rôles de chaque composant''' ===  
=== 1. '''Rôles de chaque composant''' ===  
*'''API Platform''' :  
*'''API Platform''' :  
Ligne 69 : Ligne 66 :
:Gère les utilisateurs, les rôles, les permissions, et délivre des tokens d'accès (JWT) via des protocoles comme OAuth2 et OpenID Connect.
:Gère les utilisateurs, les rôles, les permissions, et délivre des tokens d'accès (JWT) via des protocoles comme OAuth2 et OpenID Connect.
---
---
=== 2. '''Flux d'intégration''' ===  
=== 2. '''Flux d'intégration''' ===  
Voici les étapes clés pour faire fonctionner API Platform et Keycloak ensemble :
Voici les étapes clés pour faire fonctionner API Platform et Keycloak ensemble :
==== a. '''Configuration de Keycloak''' ====
==== a. '''Configuration de Keycloak''' ====
*1. '''Créer un Realm''' :  
*1. '''Créer un Realm''' :  
Ligne 87 : Ligne 82 :
:URL du serveur Keycloak.
:URL du serveur Keycloak.
:Client ID et Client Secret (pour l'authentification côté serveur).
:Client ID et Client Secret (pour l'authentification côté serveur).
==== b. '''Configuration d'API Platform''' ====  
==== b. '''Configuration d'API Platform''' ====  
===== 1. '''Installer un bundle de sécurité''' : =====
===== 1. '''Installer un bundle de sécurité''' : =====
Ligne 104 : Ligne 98 :
     - { path: ^/api, roles: ROLE_USER }
     - { path: ^/api, roles: ROLE_USER }
</syntaxhighlight>
</syntaxhighlight>
===== 3. '''Valider les tokens JWT''' :=====
===== 3. '''Valider les tokens JWT''' :=====
* API Platform valide les tokens JWT reçus dans les requêtes en utilisant la clé publique de Keycloak.
* API Platform valide les tokens JWT reçus dans les requêtes en utilisant la clé publique de Keycloak.
* La clé publique est généralement récupérée depuis l'endpoint `.well-known/jwks.json` de Keycloak.
* La clé publique est généralement récupérée depuis l'endpoint `.well-known/jwks.json` de Keycloak.
==== c. '''Authentification des Utilisateurs''' ====  
==== c. '''Authentification des Utilisateurs''' ====  
*1. '''Flux OAuth2/OpenID Connect''' :
*1. '''Flux OAuth2/OpenID Connect''' :
Ligne 119 : Ligne 111 :
:API Platform valide le token JWT en utilisant la clé publique de Keycloak.
:API Platform valide le token JWT en utilisant la clé publique de Keycloak.
:Si le token est valide, l'utilisateur est authentifié et les rôles/permissions sont extraits du token.
:Si le token est valide, l'utilisateur est authentifié et les rôles/permissions sont extraits du token.
==== d. '''Autorisation''' ====  
==== d. '''Autorisation''' ====  
*Les rôles et permissions contenus dans le token JWT sont utilisés pour restreindre l'accès aux routes ou opérations spécifiques.
*Les rôles et permissions contenus dans le token JWT sont utilisés pour restreindre l'accès aux routes ou opérations spécifiques.
Ligne 135 : Ligne 126 :
}
}
</syntaxhighlight>
</syntaxhighlight>
---
---
=== 3. '''Exemple de flux complet''' ===
=== 3. '''Exemple de flux complet''' ===
==== 1. '''Étape 1 : Authentification''' ====  
==== 1. '''Étape 1 : Authentification''' ====  
Ligne 151 : Ligne 140 :
:Sinon, une erreur `401 Unauthorized` ou `403 Forbidden` est renvoyée.
:Sinon, une erreur `401 Unauthorized` ou `403 Forbidden` est renvoyée.
---
---
=== 4. '''Avantages de cette intégration''' ===  
=== 4. '''Avantages de cette intégration''' ===  
==== 1. '''Sécurité''' : ====  
==== 1. '''Sécurité''' : ====  
Ligne 165 : Ligne 153 :
:Keycloak offre une interface pour gérer les utilisateurs, les rôles, et les permissions.
:Keycloak offre une interface pour gérer les utilisateurs, les rôles, et les permissions.
---
---
=== 5. '''Outils et Bibliothèques Utiles''' ===
=== 5. '''Outils et Bibliothèques Utiles''' ===
==== 1. '''lexik/jwt-authentication-bundle''' : ====  
==== 1. '''lexik/jwt-authentication-bundle''' : ====  
Ligne 176 : Ligne 163 :
:Pour interagir avec Keycloak programmatiquement (créer des utilisateurs, des rôles, etc.).
:Pour interagir avec Keycloak programmatiquement (créer des utilisateurs, des rôles, etc.).
---
---
En résumé, API Platform et Keycloak fonctionnent ensemble en utilisant des tokens JWT pour sécuriser les API.<br />
En résumé, API Platform et Keycloak fonctionnent ensemble en utilisant des tokens JWT pour sécuriser les API.<br />
Keycloak gère l'authentification et l'autorisation, tandis qu'API Platform expose les API et valide les tokens pour garantir un accès sécurisé.
Keycloak gère l'authentification et l'autorisation, tandis qu'API Platform expose les API et valide les tokens pour garantir un accès sécurisé.