Le flux du code d’autorisation est le schéma habituel lorsque le navigateur quitre votre site, que l’utilisateur se connecte chez Intastellar, et qu’Intastellar le renvoie sur votre site avec un code à usage unique que vous échangez contre des jetons.
Ce manuel par rapport au flux React / JS brut en fenêtre contextuelle
Si vous utilisez @intastellar/signin-sdk-react ou le bundle HTML/JS brut, la connexion s’exécute en général dans une fenêtre contextuelle et un jeton arrive via postMessage. Dans ce mode, vous ne construisez pas manuellement l’URL d’autorisation GET ni la requête de jeton POST.
Utilisez cette page lorsque votre équipe met en œuvre autorisation + rappel + jeton (pile personnalisée, certains mobiles ou applications web pilotées par le serveur). Pour choisir d’abord les types de client, voir Premiers pas.
Les noms de paramètres ci-dessous suivent l’usage courant OAuth 2.0 / OIDC — confirmez les noms exacts, les scopes et les URL de découverte dans votre enregistrement Intastellar et votre référence technique.
Ce dont vous avez besoin
- Client ID, URI de redirection enregistrés et (pour les clients confidentiels) secret client.
- Un endroit sûr pour stocker
stateet lecode_verifierPKCE entre les étapes de redirection. - Des URI de redirection HTTPS en production.
Étape 1 — Envoyer l’utilisateur vers l’autorisation
Envoyez le navigateur vers le point de terminaison d’autorisation avec des paramètres de requête :
| Paramètre | Rôle |
|---|---|
response_type | Utilisez code pour ce flux. |
client_id | Votre client ID enregistré. |
redirect_uri | Doit correspondre exactement à une URI enregistrée. |
scope | Scopes séparés par des espaces (souvent inclut openid pour OIDC). |
state | Valeur aléatoire imprévisible ; vous la vérifiez au retour. |
code_challenge | PKCE : hachage SHA-256 de code_verifier, encodé en Base64url (clients publics). |
code_challenge_method | En général S256. |
Exemple (sauts de ligne pour la lisibilité) :
GET AUTHORIZATION_ENDPOINT?
response_type=code
&client_id=YOUR_CLIENT_ID
&redirect_uri=https%3A%2F%2Fapp.example.com%2Fauth%2Fcallback
&scope=openid%20profile%20email
&state=RANDOM_STATE
&code_challenge=CODE_CHALLENGE
&code_challenge_method=S256Stockez state et le code_verifier brut (pour PKCE) côté serveur ou dans un cookie sûr à courte durée de vie afin de pouvoir les valider au rappel.
Étape 2 — Gérer le rappel
Intastellar redirige vers votre redirect_uri avec :
| Paramètre de requête | Signification |
|---|---|
code | Code d’autorisation à usage unique. |
state | Écho de la valeur envoyée ; doit correspondre au state stocké. |
Si l’utilisateur refuse l’accès ou en cas d’erreur, vous pouvez recevoir error et error_description à la place — traitez-les sans les considérer comme un succès.
Étape 3 — Échanger le code contre des jetons
POST vers le point de terminaison de jeton (en général application/x-www-form-urlencoded) :
| Champ | Rôle |
|---|---|
grant_type | authorization_code |
code | Le code issu du rappel. |
redirect_uri | Même URI qu’à l’étape 1. |
client_id | Votre client ID. |
code_verifier | PKCE : le vérificateur secret d’origine (clients publics). |
client_secret | Clients confidentiels uniquement. |
La réponse inclut en général access_token, éventuellement refresh_token, et un id_token lorsque openid a été demandé. Validez le jeton d’ID (émetteur, audience, expiration, signature) via les JWKS de l’émetteur lorsque vous vous appuyez sur les revendications dans votre application.
Liste de contrôle sécurité
- Ne sautez jamais la vérification de
state— elle prévient le CSRF sur le rappel. - Utilisez PKCE pour tout client qui ne peut pas détenir un secret client (SPA, mobile).
- Utilisez HTTPS pour chaque URI de redirection en production.
- Gardez les jetons de rafraîchissement et les secrets client uniquement sur les serveurs que vous contrôlez.
Questions fréquentes
invalid_grant juste après le rappel
Souvent code déjà utilisé, code expiré ou incompatibilité redirect_uri / PKCE. Les codes sont en général à usage unique. Voir Déconnexion, erreurs et dépannage.
Avons-nous besoin de PKCE sur une application uniquement serveur ?
Si le navigateur démarre le flux et qu’il n’y a pas de secret dans le navigateur, oui. Si un serveur confidentiel démarre et termine tout sans exposer le secret, suivez ce que votre enregistrement autorise — utilisez tout de même state.
Suite
- URI de redirection et rappels — resserrer l’enregistrement et éviter les erreurs d’incompatibilité.
- Sessions, cookies et jetons — après l’arrivée des jetons.
Last updated