Documentation
Connexion

Endpoints et clés

Issuer, endpoints OIDC, JWKS et algorithmes de signature d'Oreus.

Issuer

https://oreus-sso.dev2.dev-id.fr/oidc

L'endpoint du tenant est https://oreus-sso.dev2.dev-id.fr ; l'issuer OIDC vit sous /oidc. La confusion entre les deux est la première cause d'échec de découverte.

Découverte

https://oreus-sso.dev2.dev-id.fr/oidc/.well-known/openid-configuration

Un client doit lire ce document plutôt que coder les URL en dur : elles peuvent changer, l'issuer non.

Endpoints

RôleURL
Autorisationhttps://oreus-sso.dev2.dev-id.fr/oidc/auth
Jetonshttps://oreus-sso.dev2.dev-id.fr/oidc/token
UserInfohttps://oreus-sso.dev2.dev-id.fr/oidc/me
JWKShttps://oreus-sso.dev2.dev-id.fr/oidc/jwks
Déconnexionhttps://oreus-sso.dev2.dev-id.fr/oidc/session/end
Révocationhttps://oreus-sso.dev2.dev-id.fr/oidc/token/revocation
Introspectionhttps://oreus-sso.dev2.dev-id.fr/oidc/token/introspection

userinfo_endpoint est /oidc/me, et non /oidc/userinfo comme chez beaucoup de fournisseurs d'identité. Raison de plus pour passer par la découverte.

JWKS

https://oreus-sso.dev2.dev-id.fr/oidc/jwks

C'est là que le serveur de ressources récupère les clés publiques pour vérifier la signature d'un jeton entrant. Trois règles :

  • Mettre les clés en cache, en les rafraîchissant sur kid inconnu. Les interroger à chaque requête fait d'Oreus un point de défaillance.
  • Sélectionner la clé par kid, jamais la première du jeu.
  • Épingler l'algorithme attendu, sans jamais lire alg depuis le jeton : c'est ce qui ouvre l'attaque alg: none.

Algorithmes

Valeur
Signature des id_tokenES384
PKCES256 (seul supporté)

ES384 est de la courbe elliptique P-384 : la bibliothèque de vérification doit la gérer, toutes ne le font pas par défaut.

Ce qu'un serveur de ressources doit vérifier

Décoder un JWT ne le valide pas. Sur chaque jeton entrant :

  1. Signature valide contre le JWKS, avec le kid du jeton
  2. iss égal à https://oreus-sso.dev2.dev-id.fr/oidc
  3. aud égal à l'identifiant de votre ressource API
  4. exp non dépassé, nbf atteint
  5. scope couvrant l'opération demandée
  6. organization_id cohérent avec la ressource visée, pour un jeton d'organisation

Décoder un JWT ne le valide pas : une bibliothèque de vérification de signature est indispensable. N'accordez jamais un accès sur le simple décodage des claims.

Scopes

ScopeEffet
openidObligatoire. Donne l'id_token et l'accès à UserInfo.
profileNom, nom d'utilisateur, avatar.
emailAdresse e-mail et son état de vérification.
offline_accessRefresh token. Nécessite prompt=consent.
urn:logto:scope:organizationsFait apparaître le claim organizations.
urn:logto:scope:organization_rolesRôles de l'utilisateur dans ses organisations.

Les scopes propres à votre API (read:organization, etc.) s'ajoutent à cette liste et doivent être déclarés sur la ressource côté Oreus.

Sur cette page