Prijava putem Sportyja
Ako vam treba samo znati tko je netko, trebate OpenID Connect, a to je
tok authorization code s openid u opsegu.
Usmjerite bilo koju OIDC biblioteku na https://api.sporty.plus/.well-known/openid-configuration
i ona će se sama konfigurirati. Provjeru je moguće napisati i ručno, ali to se rijetko isplati.
id_token
Vraća se uz pristupni token kad je odobren openid. To je RS256 JWT:
{
"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 | Napomene |
|---|---|
sub | Trajni id člana. Upravo njega pohranite. Nikad se ne mijenja; adresa e-pošte može se promijeniti. |
aud | Vaš client id. Provjerite ga. |
nonce | Prisutan ako ste ga poslali. Provjerite ga. |
at_hash | Veže ovaj id_token uz pristupni token izdan zajedno s njim. |
auth_time | Kad je član dao odobrenje. Ne nužno i kad se prijavio — to ne bilježimo, pa na tome ne gradite ponašanje za max_age. |
name, given_name, family_name, locale | Samo uz profile. |
email, email_verified | Samo uz email. |
Provjera
Dohvatite https://api.sporty.plus/oauth2/jwks, odaberite ključ čiji kid odgovara zaglavlju
tokena, provjerite RS256, a zatim provjerite iss, aud i exp.
curl https://api.sporty.plus/oauth2/jwks
Spremite JWKS u predmemoriju — sat vremena je razumno — ali kad naiđete na kid koji ne
poznajete, ponovno ga dohvatite umjesto da javite pogrešku.
/userinfo
id_token je snimka stanja. Za trenutne vrijednosti:
curl https://api.sporty.plus/oauth2/userinfo \
-H "Authorization: Bearer $ACCESS_TOKEN"
Isti claimovi, uvjetovani opsegom na isti način, uvijek uključujući sub.
Rotacija ključeva
Ključ za potpisivanje mijenjamo rijetko, a kad to učinimo:
- novi javni ključ pojavljuje se u JWKS-u, uz stari, prije nego što se njime išta potpiše;
- svaki postojeći pristupni token prestaje raditi. Ključ za potpisivanje dijele i pristupni tokeni, pa ih rotacija poništava. Vaši refresh tokeni to preživljavaju — iskoristite ih i budite spremni na ponovnu autorizaciju ako to ne uspije.
Ako ikad vidite da je token koji izgleda valjano iznenada odbijen, jednom ga osvježite prije nego što zaključite da je nešto pokvareno.