Intégration OIDC

Ascencia ID parle OAuth 2.1 et OpenID Connect. Si ta bibliothèque connaît la découverte automatique, une seule URL suffit.

Découverte

Pointe ton client sur cette adresse : il y trouvera tout le reste, sans que tu aies à écrire une seule URL à la main.

https://id.ascencia.re/.well-known/openid-configuration

C'est ce document qui fait foi. La page que tu lis en est la version commentée ; en cas de divergence, croyez le document.

Points d’entrée

https://id.ascencia.re/oauth/authorizeDémarre le flux. C’est l’écran que voit l’utilisateur.
https://id.ascencia.re/oauth/tokenÉchange le code contre des jetons. PKCE exigé.
https://id.ascencia.re/oauth/userinfoLe profil, selon les scopes accordés.
https://id.ascencia.re/oauth/logoutFin de session, avec déconnexion des autres sites.
https://id.ascencia.re/oauth/revokeRévoque un jeton d’accès ou de rafraîchissement.
https://id.ascencia.re/oauth/introspectVérifie qu’un jeton est encore valable.
https://id.ascencia.re/.well-known/jwks.jsonLes clés publiques, pour vérifier une signature.

Ce qui est imposé, et pourquoi

Flux
authorization_coderefresh_tokenclient_credentials
PKCE
obligatoire, S256
Signature des jetons
ES256
Mode de réponse
query
Déconnexion propagée
back-channel logout pris en charge

Les flux implicit et password ne sont pas supportés et ne le seront pas : OAuth 2.1 les a retirés. plain n'est pas accepté pour PKCE — il n'apporte aucune protection.

Un seul mode de réponse est annoncé, parce qu'un seul est implémenté. En annoncer davantage serait un piège : un client qui demande form_post — précisément pour que son code ne traîne ni dans l'URL, ni dans l'historique, ni dans un Referer — le recevrait quand même en query, sans le savoir.

Scopes

openid
Obligatoire. Donne l’identifiant du compte.
profile
Nom affiché et avatar.
email
Adresse e-mail et son état de vérification.
offline_access
Jeton de rafraîchissement, pour rester connecté.
ascencia.roles
Les rôles du compte sur VOTRE application.
ascencia.perms
Les permissions qui en découlent, déjà résolues.
ascencia.membership
Le profil du compte sur ton application.

Les trois scopes ascencia.* évitent à ton application de réimplémenter une gestion de rôles : tu reçois les rôles et les permissions déjà résolus pour le compte, sur ton application, dans le jeton.

Obtenir un client_id

Les applications sont enregistrées depuis la console d'administration : il n'y a pas d'auto-inscription. Le type choisi à la création décide du reste — présence d'un secret, flux autorisés, code d'intégration proposé.

Une fois l'application créée, la console affiche l'extrait prêt à coller pour Next.js, SvelteKit, PHP ou le widget. Le client_secret n'est montré qu'une seule fois : il est stocké haché, personne ne peut le relire.