- Création du realm 'lions-user-manager' dédié à l'application - Configuration du client frontend uniquement (lions-user-manager-client) - Backend utilise directement l'Admin API (admin/admin) sans client séparé - Création de l'utilisateur de test: testuser/test123 - Création des rôles: admin, user_manager, user_viewer, auditor, sync_manager - Mise à jour des configurations pour utiliser le bon realm - Scripts de setup: setup-keycloak-correct.sh - Documentation: KEYCLOAK_SETUP.md Corrections par rapport à la première tentative: - Utilisation d'un realm dédié au lieu de 'master' - Pas de client pour le backend (utilise directement Admin API) - Configuration OIDC correcte pour le frontend
168 lines
5.1 KiB
Markdown
168 lines
5.1 KiB
Markdown
# Configuration Keycloak - lions-user-manager
|
|
|
|
## ✅ Configuration effectuée
|
|
|
|
La configuration Keycloak a été effectuée avec succès via le script `setup-keycloak-simple.sh`.
|
|
|
|
## 📋 Clients créés
|
|
|
|
### 1. Client Backend: `lions-user-manager`
|
|
- **Type**: Service Account (client credentials)
|
|
- **Client ID**: `lions-user-manager`
|
|
- **Secret**: `sD8hT13lG6c79WOWQk3dVzya5pfPhzw3`
|
|
- **Port**: 8081
|
|
- **Redirect URIs**: `http://localhost:8081/*`
|
|
- **Web Origins**: `http://localhost:8081`, `http://localhost:8080`
|
|
- **Usage**: API REST backend pour gérer les utilisateurs Keycloak
|
|
|
|
### 2. Client Frontend: `lions-user-manager-client`
|
|
- **Type**: Confidential (authorization code flow)
|
|
- **Client ID**: `lions-user-manager-client`
|
|
- **Secret**: `client-secret-lions-2025`
|
|
- **Port**: 8080
|
|
- **Redirect URIs**: `http://localhost:8080/*`, `http://localhost:8081/*`
|
|
- **Web Origins**: `*`
|
|
- **Standard Flow**: Activé
|
|
- **Direct Access Grants**: Activé
|
|
- **Usage**: Interface web JSF/PrimeFaces
|
|
|
|
## 👥 Utilisateur de test
|
|
|
|
- **Username**: `testuser`
|
|
- **Password**: `test123`
|
|
- **Email**: `test@lions.dev`
|
|
- **Nom complet**: Test User
|
|
- **Rôles**: `admin`, `user_manager`
|
|
|
|
## 🔐 Rôles créés
|
|
|
|
Les rôles suivants ont été créés dans le realm `master`:
|
|
|
|
1. **admin** - Accès complet à toutes les fonctionnalités
|
|
2. **user_manager** - Gestion des utilisateurs et des rôles
|
|
3. **user_viewer** - Consultation en lecture seule
|
|
4. **auditor** - Consultation des logs d'audit
|
|
5. **sync_manager** - Gestion de la synchronisation
|
|
|
|
## 🚀 Démarrage des applications
|
|
|
|
### Backend (port 8081)
|
|
|
|
Le backend est configuré avec OIDC désactivé car il utilise directement l'API Admin de Keycloak via service account.
|
|
|
|
```bash
|
|
cd lions-user-manager-server-impl-quarkus
|
|
mvn quarkus:dev
|
|
```
|
|
|
|
**Configuration dans `application-dev.properties`**:
|
|
```properties
|
|
# OIDC désactivé pour le backend (utilise service account)
|
|
quarkus.oidc.enabled=false
|
|
|
|
# API Admin Keycloak
|
|
lions.keycloak.server-url=http://localhost:8180
|
|
lions.keycloak.admin-username=admin
|
|
lions.keycloak.admin-password=admin
|
|
```
|
|
|
|
### Frontend (port 8080)
|
|
|
|
Le frontend utilise OIDC pour l'authentification des utilisateurs.
|
|
|
|
```bash
|
|
cd lions-user-manager-client-quarkus-primefaces-freya
|
|
mvn quarkus:dev
|
|
```
|
|
|
|
**Configuration dans `application-dev.properties`**:
|
|
```properties
|
|
# OIDC activé pour le frontend
|
|
quarkus.oidc.auth-server-url=http://localhost:8180/realms/master
|
|
quarkus.oidc.client-id=lions-user-manager-client
|
|
quarkus.oidc.credentials.secret=client-secret-lions-2025
|
|
```
|
|
|
|
## 🌐 URLs d'accès
|
|
|
|
- **Keycloak Admin**: http://localhost:8180/admin (admin/admin)
|
|
- **Backend API**: http://localhost:8081
|
|
- **Frontend Web**: http://localhost:8080
|
|
- **Swagger UI**: http://localhost:8081/q/swagger-ui
|
|
|
|
## 🔧 Résolution des problèmes
|
|
|
|
### Problème: "Forbidden" sur http://localhost:8081
|
|
|
|
**Cause**: OIDC est désactivé dans le backend, ce qui provoque une erreur de sécurité.
|
|
|
|
**Solution**: Le backend est accessible uniquement via les endpoints API qui ne nécessitent pas d'authentification utilisateur (il utilise le service account pour communiquer avec Keycloak).
|
|
|
|
Testez plutôt:
|
|
```bash
|
|
curl http://localhost:8081/api/users?realm=master
|
|
```
|
|
|
|
### Problème: "Client not found" sur les pages XHTML
|
|
|
|
**Cause**: Le client `lions-user-manager-client` n'était pas configuré dans Keycloak.
|
|
|
|
**Solution**: ✅ Résolu par le script `setup-keycloak-simple.sh`
|
|
|
|
### Problème: Impossible de se connecter avec testuser
|
|
|
|
**Vérifications**:
|
|
1. Vérifier que l'utilisateur existe dans Keycloak Admin Console
|
|
2. Vérifier que le mot de passe est `test123`
|
|
3. Vérifier que le compte est activé (`enabled: true`)
|
|
|
|
## 📝 Test de connexion
|
|
|
|
### Test via curl (backend)
|
|
|
|
```bash
|
|
# 1. Obtenir un token avec le client backend
|
|
curl -X POST http://localhost:8180/realms/master/protocol/openid-connect/token \
|
|
-H "Content-Type: application/x-www-form-urlencoded" \
|
|
-d "client_id=lions-user-manager" \
|
|
-d "client_secret=sD8hT13lG6c79WOWQk3dVzya5pfPhzw3" \
|
|
-d "grant_type=client_credentials"
|
|
|
|
# 2. Test avec authentification utilisateur
|
|
curl -X POST http://localhost:8180/realms/master/protocol/openid-connect/token \
|
|
-H "Content-Type: application/x-www-form-urlencoded" \
|
|
-d "client_id=lions-user-manager-client" \
|
|
-d "client_secret=client-secret-lions-2025" \
|
|
-d "username=testuser" \
|
|
-d "password=test123" \
|
|
-d "grant_type=password"
|
|
```
|
|
|
|
### Test via navigateur (frontend)
|
|
|
|
1. Ouvrir http://localhost:8080
|
|
2. Vous serez redirigé vers Keycloak pour l'authentification
|
|
3. Se connecter avec `testuser` / `test123`
|
|
4. Vous serez redirigé vers l'application
|
|
|
|
## 🔄 Réinitialisation de la configuration
|
|
|
|
Pour réinitialiser et reconfigurer Keycloak:
|
|
|
|
```bash
|
|
# 1. Supprimer les clients existants (via Admin Console ou API)
|
|
# 2. Relancer le script
|
|
bash setup-keycloak-simple.sh
|
|
```
|
|
|
|
## 📚 Documentation complémentaire
|
|
|
|
- [Keycloak Documentation](https://www.keycloak.org/documentation)
|
|
- [Quarkus OIDC Guide](https://quarkus.io/guides/security-oidc-code-flow-authentication)
|
|
- [PrimeFaces Documentation](https://www.primefaces.org/showcase/)
|
|
|
|
---
|
|
|
|
**Date de configuration**: 2025-12-04
|
|
**Script utilisé**: `setup-keycloak-simple.sh`
|