Cos’è un endpoint userinfo?
In OpenID Connect (OIDC) , un endpoint userinfo è un endpoint del OpenID Provider (OP) che offre informazioni utente ai client . L’endpoint userinfo è solitamente un endpoint supplementare al Token ID e consente ai client di recuperare ulteriori informazioni utente che non sono incluse nel token ID.
L’endpoint userinfo è definito nella specifica OpenID Connect Core ed è tipicamente accessibile dai client dopo che hanno ottenuto un token ID.
Come funziona un endpoint userinfo?
Quando un client effettua una richiesta all’endpoint userinfo, deve includere l’access token ottenuto dalla Richiesta di token e utilizzare i metodi HTTP GET
o POST
. L’endpoint userinfo convalida l’access token e restituisce le informazioni utente nella risposta.
Ecco un esempio non normativo di una richiesta userinfo:
GET /userinfo HTTP/1.1
Host: openid-provider.example.com
Authorization: Bearer some-access-token
Il percorso esatto dell’endpoint userinfo può variare nei diversi OpenID Provider. Puoi fare riferimento alla Scoperta di OpenID Connect (OIDC) del provider per trovare l’URL dell’endpoint userinfo. Se l’access token è valido, l’endpoint userinfo risponde con le informazioni utente:
HTTP/1.1 200 OK
Content-Type: application/json
{
"sub": "user123",
"name": "Alice",
"email": "[email protected]",
"birthdate": "1990-01-01",
"address": {
"street": "1234 Elm St",
"city": "Springfield",
"country": "US"
}
}
La risposta può contenere vari attributi utente come name
, email
, birthdate
e address
; e tipicamente, contiene più claim rispetto al Token ID . Gli attributi effettivi restituiti dipendono dalla configurazione del OpenID Provider (OP) e dal consenso dell’utente. Si prega di fare riferimento alla documentazione del tuo OpenID Provider per gli attributi specifici disponibili.
Firma e crittografia
La risposta userinfo può essere firmata e/o crittografata per garantirne l’integrità e la riservatezza. Se una o entrambe queste protezioni sono applicate, la risposta dell’endpoint userinfo sarà un JSON Web Token (JWT) invece di un semplice oggetto JSON.