Comment utiliser Keycloak avec Symfony
Keycloak est une solution open-source de gestion des identités et des accès qui fournit des fonctionnalités de sécurité robustes pour les applications web. Si vous êtes un expert en sécurité souhaitant intégrer Keycloak avec Symfony, les étapes suivantes vous guideront tout au long du processus :
Installer le bundle Keycloak
Pour commencer à utiliser Keycloak avec Symfony, vous devez installer le bundle Keycloak. Ce bundle fournit l’intégration nécessaire entre Symfony et Keycloak. Vous pouvez l’installer via Composer en exécutant la commande suivante :
composer require trikoder/oauth2-bundleConfigurer le bundle Keycloak
Une fois le bundle installé, vous devez le configurer pour vous connecter à votre serveur Keycloak. Ouvrez le fichier config/packages/oauth2.yaml et ajoutez la configuration suivante :
oauth2: resource_owners: keycloak: type: keycloak client_id: YOUR_CLIENT_ID client_secret: YOUR_CLIENT_SECRET base_url: https://your-keycloak-server/auth/realms/your-realm redirect_route: keycloak_auth_redirect redirect_params: {} check_path: /keycloak_auth_check failure_path: /keycloak_auth_failureVeillez à remplacer YOUR_CLIENT_ID, YOUR_CLIENT_SECRET et https://your-keycloak-server/auth/realms/your-realm par les valeurs appropriées pour votre configuration Keycloak.
Configurer la sécurité Symfony
Ensuite, vous devez configurer le système de sécurité de Symfony pour utiliser Keycloak pour l’authentification. Ouvrez le fichier config/packages/security.yaml et ajoutez la configuration suivante :
security: providers: keycloak: id: trikoder.oauth2.user_provider
firewalls: main: anonymous: lazy oauth: resource_owners: keycloak: '/login/check-keycloak' login_path: /login use_forward: false failure_path: /login
access_control: - { path: ^/admin, roles: ROLE_ADMIN } - { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/secured, roles: ROLE_USER }Implémenter l’authentification Keycloak
Il est maintenant temps d’implémenter l’authentification Keycloak dans votre application Symfony. Créez un nouveau contrôleur, par exemple src/Controller/KeycloakController.php, et ajoutez le code suivant :
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\Routing\Annotation\Route;
class KeycloakController extends AbstractController{ /** * @Route("/login/check-keycloak", name="keycloak_auth_redirect") */ public function redirectAction() { // Cette action est gérée par le bundle Keycloak }
/** * @Route("/login/keycloak", name="keycloak_auth_check") */ public function checkAction() { // Cette action est gérée par le bundle Keycloak }
/** * @Route("/login/keycloak-failure", name="keycloak_auth_failure") */ public function failureAction() { // Cette action est gérée par le bundle Keycloak }}Ces actions gèreront le processus d’authentification Keycloak et redirigeront l’utilisateur en conséquence.
Protéger les routes avec Keycloak
Enfin, vous pouvez protéger des routes spécifiques dans votre application Symfony en utilisant l’authentification Keycloak. Par exemple, si vous souhaitez protéger la route /secured, ouvrez le contrôleur correspondant et ajoutez l’annotation @Security("is_granted('ROLE_USER')") :
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\Routing\Annotation\Route;use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
class MyController extends AbstractController{ /** * @Route("/secured", name="secured_route") * @Security("is_granted('ROLE_USER')") */ public function securedAction() { // Cette route est protégée par l'authentification Keycloak }}Grâce à ces étapes, vous avez intégré avec succès Keycloak avec Symfony et ajouté l’authentification à votre application en utilisant les fonctionnalités de sécurité de Keycloak.
N’oubliez pas d’adapter la configuration et les extraits de code selon vos exigences spécifiques et votre configuration Keycloak.