Qu’est-ce qu’une réclamation (claim) ?
Une réclamation (claim) est une paire nom-valeur qui transmet des informations spécifiques. Par exemple, dans un objet JSON :
{
"sub": "foo",
"email": "[email protected]"
}
Dans cet exemple, sub
est une réclamation qui représente l’identifiant du sujet avec la valeur foo
, et email
est une réclamation qui représente l’adresse email avec la valeur [email protected]
.
Nous utilisons sujet au lieu de utilisateur parce que sans une définition claire, le sujet (
sub
) peut représenter un utilisateur, un appareil, ou toute entité.
Utilisations des réclamations (claims)
Les réclamations sont largement utilisées dans divers contextes, tels que :
- JSON Web Token (JWT) : Dans un JWT, les réclamations sont utilisées pour représenter des informations sur le token, telles que l’issuer (
iss
), le sujet (sub
), et le temps d’expiration (exp
). - OpenID Connect (OIDC) : Dans OIDC, les réclamations sont utilisées pour représenter les informations de l’utilisateur dans le Jeton ID (ID token) et le Point de terminaison userinfo (Userinfo endpoint) , telles que l’adresse email de l’utilisateur (
email
), le nom (name
), et la photo de profil (picture
).
Réclamations standards
Dans JWT et OIDC, il y a des réclamations standards définies par les spécifications. Certaines réclamations standards courantes incluent :
iss
: L’issuer du token. Par exemple, si le Serveur d'autorisation (Authorization server) qui a émis le token esthttps://example.com
, dans la plupart des cas, la réclamationiss
sera la même (https://example.com
).sub
: Le sujet du token. Il représente l’entité à laquelle le token se rapporte. Par exemple, dans un ID token, la réclamationsub
représente généralement l’identifiant de l’utilisateur.aud
: L’audience du token. Elle indique les destinataires pour lesquels le token est destiné. Par exemple, si le token est destiné à accéder à une API àhttps://api.example.com
, la réclamationaud
sera la même (https://api.example.com
).exp
: Le temps d’expiration du token. Il indique quand le token ne devrait plus être accepté pour traitement.nbf
: Le temps “not before” du token. Il indique quand le token devrait commencer à être accepté pour le traitement.iat
: Le temps d’émission du token. Il indique quand le token a été émis.jti
: L’ID JWT du token. Il fournit un identifiant unique pour le token.
OIDC définit également des réclamations standards supplémentaires pour les informations utilisateur. Voir Réclamations dans la spécification OIDC pour plus de détails.
Réclamations personnalisées
En plus des réclamations standards, vous pouvez définir des réclamations personnalisées pour représenter des informations spécifiques à l’application. Par exemple, vous pouvez inclure une réclamation role
pour représenter le rôle de l’utilisateur dans l’application.
Les réclamations personnalisées peuvent être espacées de noms avec des Identificateurs Uniformes de Ressource (URIs) pour éviter les conflits avec d’autres réclamations. Par exemple :
{
"https://example.com/claims/role": "admin"
}
Dans cet exemple, la réclamation role
est espacée de nom avec https://example.com/claims/
pour assurer son unicité. Alternativement, vous pouvez définir votre propre
Nom Uniforme de Ressource (URN) pour les réclamations personnalisées :
{
"urn:example:claims:role": "admin"
}
Dans cet exemple, la réclamation role
est espacée de nom avec urn:example:claims:
.