PHPackages                             keycloak-auth/symfony-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. keycloak-auth/symfony-bundle

ActiveSymfony-bundle[Authentication &amp; Authorization](/categories/authentication)

keycloak-auth/symfony-bundle
============================

Modern Symfony bundle for Keycloak JWT authentication

v1.0.10(3mo ago)1101MITPHPPHP &gt;=8.1

Since Jan 12Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/emopro-project/symfony-keycloak-bundle)[ Packagist](https://packagist.org/packages/keycloak-auth/symfony-bundle)[ RSS](/packages/keycloak-auth-symfony-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (14)Versions (11)Used By (0)

Symfony Keycloak Bundle
=======================

[](#symfony-keycloak-bundle)

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
--------------

[](#-installation)

Ajoutez le bundle dans votre application Symfony.

### 1. Activer le bundle

[](#1-activer-le-bundle)

Dans `config/bundles.php` :

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

---

⚙️ Configuration de base
------------------------

[](#️-configuration-de-base)

### 2. Fichier de configuration

[](#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)
-------------------------------------------

[](#-authentification-web-utilisateur-humain)

Configuration du **client Keycloak** :

### Paramètres importants

[](#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

[](#options-à-activer)

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

---

🔑 Authentification API ↔ API (Client Credentials)
-------------------------------------------------

[](#-authentification-api--api-client-credentials)

### Cas d’usage

[](#cas-dusage)

- 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)
----------------------------------

[](#-exemple-de-cas-réel-entreprise)

### Contexte

[](#contexte)

- ERP
- CRM
- Facturation
- RH
- IAM centralisé : **Keycloak**

### Scénario

[](#scénario)

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

✅ `client_credentials`

---

🧩 Configuration Keycloak – Client API
-------------------------------------

[](#-configuration-keycloak--client-api)

### Settings

[](#settings)

- **Client Authentication** : Enabled ✅
- **Service Accounts Roles** : Enabled ✅
- **Standard Flow** : Enabled ✅

### Roles

[](#roles)

- `realm-management`
- ou `manage-clients`

### Mappers

[](#mappers)

- Mapper les **roles** dans le token JWT

---

🧪 Exemple d’utilisation dans Symfony
------------------------------------

[](#-exemple-dutilisation-dans-symfony)

### Injection des cas d’usage

[](#injection-des-cas-dusage)

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

### Contrôleur d’exemple

[](#contrôleur-dexemple)

```
