OpenID Connect · OAuth 2.1

Se connecter avec Orneos

Authentifiez vos utilisateurs avec leur compte Orneos via OpenID Connect et OAuth 2.1 (Authorization Code + PKCE S256 obligatoire).

1. Découverte et points de terminaison

Le fournisseur OpenID Connect d’Orneos publie sa configuration standard à l’adresse https://orneos.eu/.well-known/openid-configuration. L’émetteur (iss) des jetons JWT signés en RS256 est toujours https://orneos.eu.

La page d’autorisation et l’écran de consentement sont servis sur https://login.orneos.eu/oauth/authorize, tandis que les appels serveur-à-serveur (/oauth/token, /oauth/userinfo, /oauth/revoke, /oauth/jwks) s’effectuent sur https://orneos.eu.

Découverte OIDC
curl -s https://orneos.eu/.well-known/openid-configuration | jq .

2. Autorisation et PKCE (S256 obligatoire)

Toutes les applications tierces (confidentielles comme publiques) doivent utiliser PKCE (RFC 7636) avec la méthode S256. Les requêtes sans code_challenge ou utilisant plain sont refusées.

Générez un code_verifier aléatoire (43 à 128 caractères URL-safe), calculez son empreinte SHA-256 encodée en base64url sans remplissage (code_challenge), puis redirigez l’utilisateur vers https://login.orneos.eu/oauth/authorize.

  • response_type=code et code_challenge_method=S256 obligatoires
  • scope : openid (obligatoire), profile (nom, identifiant, avatar), email (adresse e-mail vérifiée)
  • state : jeton anti-CSRF aléatoire vérifié au retour sur votre redirect_uri
  • prompt=consent (optionnel) : force le ré-affichage de l’écran de consentement
URL d’autorisation
https://login.orneos.eu/oauth/authorize
  ?client_id=orn_0123456789abcdef01234567
  &redirect_uri=https%3A%2F%2Fexample.com%2Foauth%2Fcallback
  &response_type=code
  &scope=openid%20profile%20email
  &state=9f8e7d6c5b4a3f2e1d0c
  &code_challenge=E9Melhoa2OwvFrGMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256

3. Échange du code et rotation du Refresh Token

Après le consentement de l’utilisateur, Orneos redirige vers votre redirect_uri avec ?code=...&state=.... Le code d’autorisation est valable 120 secondes et à usage unique.

Échangez-le sur POST https://orneos.eu/oauth/token en fournissant votre code_verifier. Vous recevez un access_token (1 h), un id_token JWT signé en RS256, et un refresh_token (90 jours, à rotation unique).

Chaque appel grant_type=refresh_token invalide immédiatement le jeton utilisé et en renvoie un nouveau. Si un refresh_token déjà consommé est rejoué, toute la session de l’application pour cet utilisateur est révoquée par sécurité.

Échange authorization_code
curl -X POST https://orneos.eu/oauth/token \
  -u "orn_0123456789abcdef01234567:orns_VOTRE_SECRET" \
  -d "grant_type=authorization_code" \
  -d "code=CODE_RECU" \
  -d "redirect_uri=https://example.com/oauth/callback" \
  -d "code_verifier=VOTRE_CODE_VERIFIER"
Renouvellement refresh_token
curl -X POST https://orneos.eu/oauth/token \
  -u "orn_0123456789abcdef01234567:orns_VOTRE_SECRET" \
  -d "grant_type=refresh_token" \
  -d "refresh_token=ornr_VOTRE_REFRESH_TOKEN"

4. UserInfo et révocation (RFC 7009)

Appelez GET https://orneos.eu/oauth/userinfo avec l’en-tête Authorization: Bearer <access_token> pour récupérer les informations correspondant aux scopes autorisés par l’utilisateur.

Pour déconnecter un utilisateur ou révoquer ses accès côté serveur, envoyez son refresh_token ou son access_token à POST https://orneos.eu/oauth/revoke.

Appel UserInfo
curl -H "Authorization: Bearer ACCESS_TOKEN" https://orneos.eu/oauth/userinfo
Révocation (RFC 7009)
curl -X POST https://orneos.eu/oauth/revoke \
  -u "orn_0123456789abcdef01234567:orns_VOTRE_SECRET" \
  -d "token=ornr_VOTRE_REFRESH_TOKEN"

5. Bouton officiel « Se connecter avec Orneos »

Utilisez le bouton officiel ci-dessous pour offrir un repère visuel familier et accessible (clair ou sombre) à vos utilisateurs.

HTML + CSS autonomes
<a class="orneos-signin-btn" href="/auth/orneos">
  <svg aria-hidden="true" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2">
    <circle cx="12" cy="12" r="9"/>
    <path d="M12 3a9 9 0 0 0 0 18"/>
  </svg>
  <span>Se connecter avec Orneos</span>
</a>

<style>
.orneos-signin-btn {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 10px 18px; border-radius: 8px; font: 600 15px/1.2 system-ui, sans-serif;
  background: #ffffff; color: #0f172a; border: 1px solid #cbd5e1; text-decoration: none;
}
.orneos-signin-btn:hover { border-color: #002FA7; color: #002FA7; }
</style>