keycloak-auth/symfony-bundle 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

keycloak-auth/symfony-bundle

最新稳定版本:v1.0.10

Composer 安装命令:

composer require keycloak-auth/symfony-bundle

包简介

Modern Symfony bundle for Keycloak JWT authentication

README 文档

README

Bundle Symfony pour intégrer Keycloak comme fournisseur d’identité (IAM) et gérer :

  • 🔐 L’authentification des utilisateurs (login / mot de passe)
  • 🤖 L’authentification API ↔ API via client_credentials
  • 🏢 Des architectures d’entreprise avec IAM centralisé

🚀 Installation

Ajoutez le bundle dans votre application Symfony.

1. Activer le bundle

Dans config/bundles.php :

return [
    // ...
    KeycloakAuthBundle\KeycloakBundle::class => ['all' => true],
];

⚙️ Configuration de base

2. Fichier de configuration

Créez le fichier :

config/packages/keycloak.yaml

Contenu :

keycloak:
  realm: "votre-realm-keycloak"
  client_id: "keycloak-client-id"
  client_secret: "keycloak-client-secret"
  base_url: "http://keycloak:8080" # URL de votre serveur Keycloak
  redirect_uri: "http://localhost:8085/login/check" # URI déclarée dans Keycloak

🌐 Authentification Web (utilisateur humain)

Configuration du client Keycloak :

Paramètres importants

  • Root URL

    http://localhost:8085
    
  • Valid Redirect URIs

    http://localhost:8085/*
    
  • Valid Post Logout Redirect URIs

    http://localhost:8085/login/check
    

Options à activer

  • Standard Flow ✅
  • Direct Access Grants ✅ (login + mot de passe)

🔑 Authentification API ↔ API (Client Credentials)

Cas d’usage

  • Aucun utilisateur humain
  • Une application appelle une autre application
  • L’identité = application

👉 Le flow client_credentials est le plus adapté

🧠 Exemple de cas réel (Entreprise)

Contexte

  • ERP
  • CRM
  • Facturation
  • RH
  • IAM centralisé : Keycloak

Scénario

  • Le service Facturation appelle le CRM
  • Aucun utilisateur connecté
  • Authentification basée sur l’application

client_credentials

🧩 Configuration Keycloak – Client API

Settings

  • Client Authentication : Enabled ✅
  • Service Accounts Roles : Enabled ✅
  • Standard Flow : Enabled ✅

Roles

  • realm-management
  • ou manage-clients

Mappers

  • Mapper les roles dans le token JWT

🧪 Exemple d’utilisation dans Symfony

Injection des cas d’usage

use KeycloakAuthBundle\Application\UseCase\GetClientCredentialsToken;
use KeycloakAuthBundle\Application\UseCase\AuthenticateUser;

Contrôleur d’exemple

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use KeycloakAuthBundle\Application\UseCase\GetClientCredentialsToken;
use KeycloakAuthBundle\Application\UseCase\AuthenticateUser;

class TestController extends AbstractController
{
    public function __construct(
        private readonly GetClientCredentialsToken $getClientCredential,
        private AuthenticateUser $authenticateUser
    ) {}

    #[Route("/")]
    public function test(Request $request): JsonResponse
    {
        $token = $this->getClientCredential->execute();

        if ($token) {
            $user = $this->authenticateUser->execute($token);
        }

        return $this->json([
            'token' => $token,
            'decoded' => $user->toArray() ?? null,
        ]);
    }
}

🔐 Sécurité & bonnes pratiques

  • Ne jamais exposer le client_secret
  • Utiliser HTTPS en production
  • Limiter les rôles accordés aux services
  • Vérifier les audiences (aud) dans les tokens

📌 Résumé des flows supportés

Flow Usage Activer dans Keycloak
authorization_code Login utilisateur Standard Flow ✅
direct_access_grants Login / mot de passe Direct Access Grants ✅
client_credentials API ↔ API Service Accounts Roles ✅

📄 Licence

MIT

✨ Bundle prêt pour des architectures modernes, sécurisées et orientées microservices.

🎯 1. Sécurité (raison n°1)

Dans ton contexte (Keycloak, JWT, login, token, JWKS…), le RateLimiter protège contre :

🔥 Attaques classiques

Brute-force login

Flood sur /token

Abus du refresh token

Enumeration d’utilisateurs

DoS applicatif léger

统计信息

  • 总下载量: 101
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-14

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固