Se connecter avec Sporty
Si vous avez seulement besoin de savoir qui est une personne, il vous faut OpenID Connect,
c'est-à-dire le flux du code d'autorisation avec openid dans
le scope.
Faites pointer n'importe quelle bibliothèque OIDC vers
https://api.sporty.plus/.well-known/openid-configuration et elle se configurera toute seule.
Écrire la vérification à la main est possible, mais en vaut rarement la peine.
L'id_token
Renvoyé avec le jeton d'accès lorsque openid a été accordé. Il s'agit d'un JWT RS256 :
{
"iss": "https://api.sporty.plus",
"sub": "9f1c2e40-...",
"aud": "your-client-id",
"iat": 1789304059,
"nbf": 1789304059,
"exp": 1789307659,
"auth_time": 1789304050,
"nonce": "what-you-sent",
"at_hash": "xQ7f...",
"name": "Ada Lovelace",
"given_name": "Ada",
"family_name": "Lovelace",
"locale": "hr",
"email": "ada@example.com",
"email_verified": true
}
| Claim | Remarques |
|---|---|
sub | L'identifiant permanent du membre. C'est celui-ci qu'il faut stocker. Il ne change jamais ; une adresse e-mail, si. |
aud | Votre client id. Vérifiez-le. |
nonce | Présent si vous en avez envoyé un. Vérifiez-le. |
at_hash | Lie cet id_token au jeton d'accès émis avec lui. |
auth_time | Le moment où le membre a donné son accord. Pas forcément celui où il s'est connecté — nous ne l'enregistrons pas, ne construisez donc pas de comportement max_age dessus. |
name, given_name, family_name, locale | Uniquement avec profile. |
email, email_verified | Uniquement avec email. |
Le vérifier
Récupérez https://api.sporty.plus/oauth2/jwks, choisissez la clé dont le kid correspond à
l'en-tête du jeton, vérifiez la signature RS256, puis contrôlez iss, aud et exp.
curl https://api.sporty.plus/oauth2/jwks
Mettez le JWKS en cache — une heure est raisonnable — mais récupérez-le à nouveau lorsque vous
rencontrez un kid inconnu, plutôt que d'échouer.
/userinfo
Un id_token est un instantané. Pour les valeurs actuelles :
curl https://api.sporty.plus/oauth2/userinfo \
-H "Authorization: Bearer $ACCESS_TOKEN"
Les mêmes claims, filtrés de la même façon selon le scope, avec toujours sub.
Rotation des clés
Nous renouvelons rarement la clé de signature, et quand nous le faisons :
- la nouvelle clé publique apparaît dans le JWKS, à côté de l'ancienne, avant que quoi que ce soit ne soit signé avec elle ;
- tous les jetons d'accès existants cessent de fonctionner. La clé de signature est partagée avec les jetons d'accès, donc une rotation y met fin. Vos jetons de rafraîchissement survivent — utilisez-les, et soyez prêt à redemander l'autorisation si cela échoue.
Si un jeton d'apparence valide est soudain rejeté, rafraîchissez-le une fois avant de supposer que quelque chose est cassé.