« DeepSeek apiplatform keycloak » : différence entre les versions
| (11 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 127 : | Ligne 127 : | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
--- | ---- | ||
=== 3. '''Exemple de flux complet''' === | === 3. '''Exemple de flux complet''' === | ||
==== 1. '''Étape 1 : Authentification''' ==== | ==== 1. '''Étape 1 : Authentification''' ==== | ||
| Ligne 140 : | Ligne 141 : | ||
:Si le token est valide et que l'utilisateur a les permissions nécessaires, l'API renvoie les données demandées. | :Si le token est valide et que l'utilisateur a les permissions nécessaires, l'API renvoie les données demandées. | ||
: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 153 : | Ligne 155 : | ||
==== 4. '''Gestion des utilisateurs''' : ==== | ==== 4. '''Gestion des utilisateurs''' : ==== | ||
: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 163 : | Ligne 166 : | ||
==== 3. '''Keycloak Admin Client''' : ==== | ==== 3. '''Keycloak Admin Client''' : ==== | ||
: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é. | ||
| Ligne 170 : | Ligne 173 : | ||
Lorsque vous utilisez '''API Platform''' avec un serveur '''Keycloak''', il est important de comprendre la différence entre '''ID Token''' et '''Access Token''', car ces deux types de tokens ont des rôles distincts dans le processus d'authentification et d'autorisation. Voici une explication détaillée : | Lorsque vous utilisez '''API Platform''' avec un serveur '''Keycloak''', il est important de comprendre la différence entre '''ID Token''' et '''Access Token''', car ces deux types de tokens ont des rôles distincts dans le processus d'authentification et d'autorisation. Voici une explication détaillée : | ||
---- | |||
=== 1. '''Access Token'''=== | === 1. '''Access Token'''=== | ||
==== a. '''Rôle''' : ==== | ==== a. '''Rôle''' : ==== | ||
| Ligne 195 : | Ligne 198 : | ||
:1. Authentifier l'utilisateur (vérifier que le token est valide et signé par Keycloak). | :1. Authentifier l'utilisateur (vérifier que le token est valide et signé par Keycloak). | ||
:2. Autoriser l'accès aux routes ou opérations en fonction des rôles ou permissions contenus dans le token. | :2. Autoriser l'accès aux routes ou opérations en fonction des rôles ou permissions contenus dans le token. | ||
---- | |||
===2. '''ID Token'''=== | ===2. '''ID Token'''=== | ||
| Ligne 239 : | Ligne 242 : | ||
| '''Utilisation dans API Platform''' || Non utilisé directement. || Utilisé pour l'authentification et l'autorisation. | | '''Utilisation dans API Platform''' || Non utilisé directement. || Utilisé pour l'authentification et l'autorisation. | ||
|} | |} | ||
--- | ---- | ||
===4. '''Flux typique avec API Platform et Keycloak'''=== | ===4. '''Flux typique avec API Platform et Keycloak'''=== | ||
| Ligne 253 : | Ligne 256 : | ||
:Le client envoie l''''Access Token''' dans l'en-tête `Authorization` des requêtes API. | :Le client envoie l''''Access Token''' dans l'en-tête `Authorization` des requêtes API. | ||
:API Platform valide l''''Access Token''' et vérifie les permissions avant de renvoyer les données. | :API Platform valide l''''Access Token''' et vérifie les permissions avant de renvoyer les données. | ||
---- | |||
===5. '''Exemple concret'''=== | ===5. '''Exemple concret'''=== | ||
===='''Scénario''' :==== | ===='''Scénario''' :==== | ||
| Ligne 281 : | Ligne 285 : | ||
:API Platform valide l''''Access Token''' en utilisant la clé publique de Keycloak. | :API Platform valide l''''Access Token''' en utilisant la clé publique de Keycloak. | ||
:Si le token est valide et que l'utilisateur a les permissions nécessaires, l'API renvoie les données. | :Si le token est valide et que l'utilisateur a les permissions nécessaires, l'API renvoie les données. | ||
---- | |||
===6. '''Bonnes pratiques'''=== | ===6. '''Bonnes pratiques'''=== | ||
| Ligne 287 : | Ligne 291 : | ||
:'''Utiliser HTTPS''' : Pour protéger les tokens lors de leur transmission. | :'''Utiliser HTTPS''' : Pour protéger les tokens lors de leur transmission. | ||
:'''Vérifier les scopes et rôles''' : Assurez-vous que l'Access Token contient les permissions nécessaires pour accéder aux ressources. | :'''Vérifier les scopes et rôles''' : Assurez-vous que l'Access Token contient les permissions nécessaires pour accéder aux ressources. | ||
---- | |||
===7. '''En résumé''' === | ===7. '''En résumé''' === | ||
l''''ID Token''' est utilisé pour authentifier l'utilisateur côté client, tandis que l''''Access Token''' est utilisé pour accéder aux ressources protégées côté serveur (API Platform).<br /> | l''''ID Token''' est utilisé pour authentifier l'utilisateur côté client, tandis que l''''Access Token''' est utilisé pour accéder aux ressources protégées côté serveur (API Platform).<br /> | ||
| Ligne 295 : | Ligne 300 : | ||
=== [[ Mistral_apiplatform_keycloak | Voir les réponses aux mêmes questions posées à Mistral]] === | === [[ Mistral_apiplatform_keycloak | Voir les réponses aux mêmes questions posées à Mistral]] === | ||
[[category:DeepSeek]] [[category:api]] | [[category:DeepSeek]] [[category:api]] [[Catégorie: Apiplatform]] [[category:Keycloak]] | ||