Refactor: Backend Frontend-Centric Auth - Suppression OIDC, validation JWT
Architecture modifiée pour Frontend-Centric Authentication: 1. **Suppression des dépendances OIDC** - quarkus-oidc → quarkus-smallrye-jwt - quarkus-keycloak-authorization → quarkus-smallrye-jwt-build - Le backend ne gère plus l'authentification OAuth 2. **Configuration JWT simple** - Validation des tokens JWT envoyés par le frontend - mp.jwt.verify.publickey.location (JWKS de Keycloak) - mp.jwt.verify.issuer (Keycloak realm) - Authentification via Authorization: Bearer header 3. **Suppression configurations OIDC** - application.properties: Suppression %dev.quarkus.oidc.* - application.properties: Suppression %prod.quarkus.oidc.* - application-prod.properties: Remplacement par mp.jwt.* - Logging: io.quarkus.oidc → io.quarkus.smallrye.jwt 4. **Sécurité simplifiée** - quarkus.security.auth.proactive=false - @Authenticated sur les endpoints - CORS configuré pour le frontend - Endpoints publics: /q/*, /openapi, /swagger-ui/* Flux d'authentification: 1️⃣ Frontend → Keycloak (OAuth login) 2️⃣ Frontend ← Keycloak (access_token) 3️⃣ Frontend → Backend (Authorization: Bearer token) 4️⃣ Backend valide le token JWT (signature + issuer) 5️⃣ Backend → Frontend (données API) Avantages: ✅ Pas de secret backend à gérer ✅ Pas de client btpxpress-backend dans Keycloak ✅ Séparation claire frontend/backend ✅ Backend devient une API REST stateless ✅ Tokens gérés par le frontend (localStorage/sessionStorage) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
# Configuration de production pour BTP Xpress avec Keycloak
|
||||
# Configuration de production pour BTP Xpress - Frontend-Centric Auth
|
||||
# Variables d'environnement requises :
|
||||
# - DB_URL : URL de la base de données PostgreSQL
|
||||
# - DB_USERNAME : Nom d'utilisateur de la base de données
|
||||
# - DB_PASSWORD : Mot de passe de la base de données
|
||||
# - KEYCLOAK_SERVER_URL : URL du serveur Keycloak
|
||||
# - KEYCLOAK_REALM : Nom du realm Keycloak
|
||||
# - KEYCLOAK_CLIENT_ID : ID du client Keycloak
|
||||
# - KEYCLOAK_CLIENT_SECRET : Secret du client Keycloak
|
||||
# Le frontend gère l'authentification OAuth avec Keycloak
|
||||
# Le backend valide simplement les tokens JWT envoyés par le frontend
|
||||
|
||||
# Base de données
|
||||
quarkus.datasource.jdbc.url=${DB_URL:jdbc:postgresql://postgres:5432/btpxpress}
|
||||
@@ -32,23 +30,22 @@ quarkus.http.cors.exposed-headers=Content-Disposition
|
||||
quarkus.http.cors.access-control-max-age=24H
|
||||
quarkus.http.cors.access-control-allow-credentials=true
|
||||
|
||||
# Configuration Keycloak OIDC
|
||||
quarkus.oidc.auth-server-url=${KEYCLOAK_SERVER_URL:https://security.lions.dev}/realms/${KEYCLOAK_REALM:btpxpress}
|
||||
quarkus.oidc.client-id=${KEYCLOAK_CLIENT_ID:btpxpress-backend}
|
||||
quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET}
|
||||
quarkus.oidc.tls.verification=required
|
||||
quarkus.oidc.authentication.redirect-path=/login
|
||||
quarkus.oidc.authentication.restore-path-after-redirect=true
|
||||
# JWT validation - Tokens envoyés par le frontend
|
||||
mp.jwt.verify.publickey.location=https://security.lions.dev/realms/btpxpress/protocol/openid-connect/certs
|
||||
mp.jwt.verify.issuer=https://security.lions.dev/realms/btpxpress
|
||||
quarkus.smallrye-jwt.enabled=true
|
||||
quarkus.smallrye-jwt.auth-mechanism=MP-JWT
|
||||
quarkus.smallrye-jwt.require-named-principal=false
|
||||
|
||||
# Sécurité
|
||||
quarkus.security.auth.enabled=true
|
||||
quarkus.security.auth.proactive=true
|
||||
quarkus.security.auth.proactive=false
|
||||
|
||||
# Permissions pour accès public aux endpoints de documentation et santé
|
||||
quarkus.http.auth.permission.public.paths=/q/*,/openapi,/swagger-ui/*
|
||||
quarkus.http.auth.permission.public.policy=permit
|
||||
|
||||
# Authentification requise pour tous les autres endpoints
|
||||
# Authentification JWT requise pour tous les autres endpoints
|
||||
quarkus.http.auth.permission.authenticated.paths=/*
|
||||
quarkus.http.auth.permission.authenticated.policy=authenticated
|
||||
|
||||
@@ -57,7 +54,7 @@ quarkus.log.level=INFO
|
||||
quarkus.log.category."dev.lions.btpxpress".level=INFO
|
||||
quarkus.log.category."org.hibernate".level=WARN
|
||||
quarkus.log.category."io.quarkus".level=INFO
|
||||
quarkus.log.category."io.quarkus.oidc".level=DEBUG
|
||||
quarkus.log.category."io.quarkus.smallrye.jwt".level=INFO
|
||||
|
||||
# Métriques et monitoring
|
||||
quarkus.micrometer.export.prometheus.enabled=true
|
||||
|
||||
Reference in New Issue
Block a user