Tous les Projets
Backend

Microservices Sécurisés — OAuth2 / OIDC / Keycloak

Microservices e-commerce sécurisés où Keycloak est le serveur d'autorisation central. Deux resource servers Spring Boot (inventaire, commandes) valident les JWT émis par Keycloak ; order-service appelle inventory via OpenFeign avec propagation du token ; un client Angular se connecte via OIDC.

2
Resource servers
Keycloak
Identity provider
OpenFeign
Inter-service
Angular OIDC
Client
Approche

Keycloak comme IdP central ; resource servers JWT + converter de rôles + propagation de token Feign

Stack Technique
Java 17Spring Boot 3.2Spring SecurityKeycloakOAuth2/OIDCOpenFeignAngularH2Swagger
Mots-clés
KeycloakOAuth2OIDCJWTSpring SecurityOpenFeignAngularMicroservices
Analyse Approfondie

Une étude ciblée de la sécurité OAuth2 / OpenID Connect pour microservices, avec Keycloak comme fournisseur d'identité d'un domaine e-commerce.

Architecture

                    ┌──────────────┐
                    │   Keycloak   │  realm: sdia-realm  (:8080)
                    │ (OAuth2/OIDC)│
                    └──────┬───────┘
                           │ JWT (Bearer)
        ┌──────────────────┼──────────────────────────┐
        ▼                  ▼                            ▼
  ┌───────────────┐  ┌───────────────────┐     ┌───────────────┐
  │  ecom-app     │  │  order-service     │ ──► │  inventory-   │
  │  (Angular)    │  │  :8088 (OpenFeign) │     │  service :8087│
  └───────────────┘  └───────────────────┘     └───────────────┘
                     propage le token via FeignInterceptor

Détails de sécurité

  • SecurityConfig enregistre chaque service en resource server (oauth2ResourceServer().jwt())
  • JwtAuthConverter convertit les rôles realm/client Keycloak en autorités Spring Security
  • FeignInterceptor sur order-service transmet le token Bearer à inventory-service
  • Les deux services utilisent des bases H2 en mémoire ; order-service embarque Swagger UI

Modules : inventory-service (produits, :8087) · order-service (commandes, :8088) · ecom-app-angular (client login OIDC, :4200).