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