Qonkery

Sécurisation des API avec Quarkus et Keycloak (SSO)

Sécurisation des API avec Quarkus et Keycloak (SSO)

La sécurité des API est devenue un enjeu critique pour toutes les organisations qui développent des solutions numériques. Les applications modernes reposent souvent sur des microservices exposés via des API, ce qui augmente leur surface d’attaque. Garantir que seules les bonnes personnes accèdent aux bonnes ressources est donc essentiel.

Chez Qonkery, notre approche repose sur deux piliers : Quarkus comme framework backend réactif et performant, et Keycloak comme fournisseur d’identité et solution de Single Sign-On (SSO).

Principes de sécurisation des API

Une API sécurisée doit respecter trois principes fondamentaux :

  1. Authentification : vérifier l’identité de l’utilisateur ou du service appelant.
  2. Autorisation : contrôler l’accès aux ressources selon les rôles ou permissions.
  3. Traçabilité : journaliser les actions pour garantir la conformité et permettre des audits.

Plutôt que de disperser ces logiques dans chaque service, l’approche moderne consiste à les centraliser grâce à un serveur d’identité comme Keycloak.

Méthodes courantes de sécurisation

  • JWT (JSON Web Token) : Keycloak délivre des tokens signés, faciles à transporter et valider côté Quarkus. Ces tokens contiennent l’identité, les rôles et les permissions.
  • OAuth2 / OpenID Connect : standards pour la délégation d’accès et l’authentification moderne. OIDC, en particulier, enrichit OAuth2 avec des informations sur l’utilisateur.
  • RBAC (Role-Based Access Control) : attribuer des droits selon des rôles bien définis (admin, manager, user…).

Grâce à ses extensions (quarkus-oidc, quarkus-security), Quarkus facilite l’intégration de ces méthodes sans complexité excessive.

Intégration de Quarkus avec Keycloak (SSO)

Keycloak est un serveur d’identité open-source qui gère :

  • les utilisateurs,
  • les rôles,
  • les sessions,
  • et les jetons d’accès.

L’un de ses principaux atouts est le Single Sign-On (SSO) : une fois connecté à Keycloak, un utilisateur accède à plusieurs applications sans se reconnecter.

Configuration côté Quarkus

Tout passe par le fichier application.properties :

quarkus.oidc.auth-server-url=http://localhost:8080/realms/qonkery
quarkus.oidc.client-id=api-service
quarkus.oidc.credentials.secret=mon-secret
quarkus.oidc.application-type=service

Sécurisation des endpoints

Avec Quarkus, sécuriser un endpoint est aussi simple que d’ajouter une annotation :

@GET
@Path("/secure-data")
@RolesAllowed({"user", "admin"})
public Response getSecureData(@Context SecurityContext securityContext) {
    String username = securityContext.getUserPrincipal().getName();
    // Logique métier ici
    return Response.ok("Données sécurisées pour " + username).build();
}

Validation des tokens

Quarkus valide automatiquement les tokens JWT reçus dans les requêtes. Si le token est invalide ou expiré, l’accès est refusé avec un code 401.

Gestion des rôles et permissions

Keycloak permet de définir des rôles au niveau du realm ou du client. Ces rôles sont inclus dans le token JWT et peuvent être utilisés dans Quarkus pour contrôler l’accès aux ressources.

Conclusion

La sécurisation des API avec Quarkus et Keycloak (SSO) offre une solution robuste et évolutive pour protéger les services modernes. En centralisant l’authentification et l’autorisation, nous réduisons la complexité, améliorons la sécurité et facilitons la gestion des utilisateurs. Chez Qonkery, cette approche nous permet de garantir que nos applications restent sûres tout en offrant une expérience utilisateur fluide.

Pour aller plus loin:

Les noms de produits, logos et marques appartiennent à leurs propriétaires respectifs. Les noms de sociétés, produits et services présents sur ce site sont utilisés uniquement à titre d’identification et ne constituent en aucun cas une approbation ou un soutien officiel.