Clients et applications 22 min de lecture

Types de clients et configuration

Qu'est-ce qu'un Client ?

Un Client est une application enregistree aupres de Keycloak qui peut demander l'authentification d'un utilisateur. Chaque application qui doit interagir avec Keycloak doit etre enregistree comme client.

Types de clients

Client public (Public)

  • Pour les applications qui ne peuvent pas garder un secret (SPA, applications mobiles)
  • Pas de client secret
  • Utilise PKCE (Proof Key for Code Exchange) pour securiser le flux

Client confidentiel (Confidential)

  • Pour les applications backend qui peuvent garder un secret
  • Possede un client_id et un client_secret
  • Utilise pour les APIs, les microservices, les applications serveur

Creer un client dans Keycloak

Via la console

  1. Selectionnez votre Realm
  2. Allez dans Clients > Create client
  3. Choisissez le type : OpenID Connect
  4. Entrez le Client ID : mon-frontend
  5. Configurez : Client authentication = Off (public) ou On (confidential)
  6. Configurez les Valid redirect URIs

Via l'API admin

# Creer un client public (SPA)
curl -s -X POST "http://localhost:8080/admin/realms/mon-application/clients" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "mon-frontend",
    "publicClient": true,
    "redirectUris": ["http://localhost:3000/*"],
    "webOrigins": ["http://localhost:3000"],
    "directAccessGrantsEnabled": false
  }'

# Creer un client confidentiel (API backend)
curl -s -X POST "http://localhost:8080/admin/realms/mon-application/clients" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "mon-backend",
    "publicClient": false,
    "secret": "mon-secret-securise",
    "serviceAccountsEnabled": true,
    "directAccessGrantsEnabled": true,
    "redirectUris": ["http://localhost:8000/*"]
  }'

Redirect URIs et Web Origins

  • Valid Redirect URIs : URLs autorisees pour la redirection apres authentification. Utilisez des patterns precis, evitez * en production.
  • Web Origins : Origines autorisees pour les requetes CORS. Necessaire pour les SPA.
  • Post Logout Redirect URIs : URLs autorisees apres deconnexion.
Securite : Ne mettez jamais * comme redirect URI en production. Specifiez toujours les URLs exactes pour eviter les attaques de redirection.