- Instructions détaillées pour démarrer l'application - Explications de l'architecture d'authentification - Guide de résolution des problèmes courants - Diagramme de flux d'authentification
201 lines
6.2 KiB
Markdown
201 lines
6.2 KiB
Markdown
# Guide de démarrage - Lions User Manager
|
|
|
|
## 🚀 Configuration Keycloak effectuée
|
|
|
|
La configuration Keycloak a été effectuée avec succès ! Voici ce qui a été configuré :
|
|
|
|
### ✅ Realm dédié
|
|
- **Nom du realm** : `lions-user-manager`
|
|
- ✅ Architecture correcte : realm séparé pour l'application (pas `master`)
|
|
|
|
### ✅ Client configuré
|
|
- **Client Frontend** : `lions-user-manager-client`
|
|
- Secret : `client-secret-lions-2025`
|
|
- Type : Confidential (Authorization Code Flow + Direct Access)
|
|
- Redirect URIs : `http://localhost:8080/*`, `http://localhost:8081/*`
|
|
|
|
- **Backend** : Pas de client séparé ✅
|
|
- Utilise directement l'Admin API avec les credentials `admin/admin`
|
|
- Architecture correcte : pas besoin de service account pour ce cas d'usage
|
|
|
|
### ✅ Utilisateur de test
|
|
- **Username** : `testuser`
|
|
- **Password** : `test123`
|
|
- **Email** : test@lions.dev
|
|
- **Rôles** : `admin`, `user_manager`
|
|
|
|
### ✅ Rôles créés
|
|
- `admin` - Accès complet
|
|
- `user_manager` - Gestion utilisateurs
|
|
- `user_viewer` - Lecture seule
|
|
- `auditor` - Consultation logs
|
|
- `sync_manager` - Synchronisation
|
|
|
|
## 📦 Démarrage de l'application
|
|
|
|
### 1. Vérifier que Keycloak tourne
|
|
|
|
```bash
|
|
curl http://localhost:8180/realms/lions-user-manager/.well-known/openid-configuration
|
|
```
|
|
|
|
Si Keycloak ne tourne pas, le démarrer :
|
|
```bash
|
|
# Exemple avec Docker
|
|
docker run -p 8180:8080 \
|
|
-e KEYCLOAK_ADMIN=admin \
|
|
-e KEYCLOAK_ADMIN_PASSWORD=admin \
|
|
quay.io/keycloak/keycloak:latest start-dev
|
|
```
|
|
|
|
### 2. Démarrer le Backend (port 8081)
|
|
|
|
```bash
|
|
cd lions-user-manager-server-impl-quarkus
|
|
mvn quarkus:dev
|
|
```
|
|
|
|
**Note** : Le backend utilise directement l'Admin API de Keycloak avec `admin/admin`. OIDC est désactivé car pas nécessaire.
|
|
|
|
**Vérification** :
|
|
```bash
|
|
# Test de l'API (doit renvoyer une liste vide ou des utilisateurs)
|
|
curl "http://localhost:8081/api/users?realm=lions-user-manager"
|
|
```
|
|
|
|
### 3. Démarrer le Frontend (port 8080)
|
|
|
|
```bash
|
|
cd lions-user-manager-client-quarkus-primefaces-freya
|
|
mvn quarkus:dev
|
|
```
|
|
|
|
**Configuration OIDC active** pour le frontend (fichier `application-dev.properties`) :
|
|
```properties
|
|
quarkus.oidc.auth-server-url=http://localhost:8180/realms/lions-user-manager
|
|
quarkus.oidc.client-id=lions-user-manager-client
|
|
quarkus.oidc.credentials.secret=client-secret-lions-2025
|
|
quarkus.oidc.application-type=web-app
|
|
```
|
|
|
|
### 4. Accéder à l'application
|
|
|
|
#### Frontend Web
|
|
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
|
|
|
|
#### Backend API
|
|
- Swagger UI : http://localhost:8081/q/swagger-ui
|
|
- Health Check : http://localhost:8081/q/health
|
|
- Metrics : http://localhost:8081/q/metrics
|
|
|
|
## 🔧 Résolution des problèmes
|
|
|
|
### Problème : "Forbidden" sur http://localhost:8081
|
|
|
|
**C'est normal !** Le backend ne sert pas de pages web directement. Utilisez plutôt :
|
|
- Les endpoints API : http://localhost:8081/api/users?realm=lions-user-manager
|
|
- Le Swagger UI : http://localhost:8081/q/swagger-ui
|
|
|
|
### Problème : "Client not found" sur le frontend
|
|
|
|
**Solution** : Relancer le script de configuration :
|
|
```bash
|
|
bash setup-keycloak-correct.sh
|
|
```
|
|
|
|
### Problème : Impossible de se connecter avec testuser
|
|
|
|
**Vérifications** :
|
|
1. Vérifier que l'utilisateur existe dans le bon realm :
|
|
- Admin Console : http://localhost:8180/admin
|
|
- Realm : `lions-user-manager` (pas `master` !)
|
|
- Users → testuser
|
|
|
|
2. Vérifier le mot de passe : `test123`
|
|
|
|
3. Vérifier que le compte est activé (Enabled: ON)
|
|
|
|
### Problème : "Unauthorized" sur les API
|
|
|
|
Le backend utilise l'Admin API avec `admin/admin`. Vérifiez :
|
|
```properties
|
|
# Dans application-dev.properties
|
|
lions.keycloak.admin-username=admin
|
|
lions.keycloak.admin-password=admin
|
|
```
|
|
|
|
## 📋 Architecture de l'authentification
|
|
|
|
```
|
|
┌─────────────────┐
|
|
│ Utilisateur │
|
|
└────────┬────────┘
|
|
│
|
|
│ 1. Accède à http://localhost:8080
|
|
│
|
|
▼
|
|
┌─────────────────────────┐
|
|
│ Frontend (port 8080) │ ← OIDC activé
|
|
│ PrimeFaces + Quarkus │
|
|
└────────┬────────────────┘
|
|
│
|
|
│ 2. Redirige vers Keycloak
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────┐
|
|
│ Keycloak (port 8180) │
|
|
│ Realm: lions-user-manager │
|
|
│ Client: lions-user-manager-client │
|
|
└────────┬────────────────────────────┘
|
|
│
|
|
│ 3. Login: testuser/test123
|
|
│ 4. Retourne token
|
|
│
|
|
▼
|
|
┌─────────────────────────┐
|
|
│ Frontend authentifié │
|
|
└────────┬────────────────┘
|
|
│
|
|
│ 5. Appelle l'API avec token
|
|
│
|
|
▼
|
|
┌──────────────────────────────┐
|
|
│ Backend API (port 8081) │ ← OIDC désactivé
|
|
│ Utilise Admin API directe │
|
|
└──────────┬───────────────────┘
|
|
│
|
|
│ 6. Auth avec admin/admin
|
|
│
|
|
▼
|
|
┌──────────┐
|
|
│ Keycloak │
|
|
│ Admin API│
|
|
└──────────┘
|
|
```
|
|
|
|
## 🎯 Prochaines étapes
|
|
|
|
1. ✅ Keycloak configuré
|
|
2. ✅ Utilisateur de test créé
|
|
3. ⏳ Tester l'authentification sur le frontend
|
|
4. ⏳ Tester les API du backend
|
|
5. ⏳ Développer les pages manquantes
|
|
6. ⏳ Implémenter les fonctionnalités métier
|
|
|
|
## 📞 Support
|
|
|
|
En cas de problème :
|
|
1. Vérifier les logs des applications
|
|
2. Vérifier la configuration Keycloak dans l'Admin Console
|
|
3. Consulter `KEYCLOAK_SETUP.md` pour plus de détails
|
|
4. Relancer `setup-keycloak-correct.sh` si nécessaire
|
|
|
|
---
|
|
|
|
**Date de configuration** : 2025-12-04
|
|
**Realm** : `lions-user-manager`
|
|
**Credentials test** : `testuser` / `test123`
|