Jetons

Lorsqu'un utilisateur est authentifié avec succès, l'application reçoit des jetons d'App ID. Le service utilise trois principaux types de jetons pour compléter le processus d'authentification : les jetons d'accès, d'identité et de rafraîchissement.

Accès aux jetons

Les jetons d'accès représentent l'autorisation et permettent la communication avec lesressources de back end qui sont protégées par des filtres d'autorisation définis par App ID. Le jeton est conforme aux spécifications JOSE (JavaScript Object Signing et Encryption). Le jeton est formaté comme suit : Jetons Web JSON sont signés avec une clé Web JSON qui utilise l'algorithme RS256.

Exemple de jeton :

Header:
{
   "alg": "RS256",
   "typ": "JWT",
   "kid": "appId-39a37f57-a227-4bfe-a044-93b6e6050a61-2018-08-02T11:57:43.401",
   "ver": 4
}
Payload:
{
   "iss": "https://us-south.appid.cloud.ibm.com/oauth/v4/39a37f57-a227-4bfe-a044-93b6e6050a61",
   "exp": 1551903163,
   "aud": [
   "968c2306-9aef-4109-bc06-4f5ed6axi24a"
   ],
   "sub": "2b96cc04-eca5-4122-a8de-6e07d14c13a5",
   "email_verified": true,
   "amr": [
   "cloud_directory"
   ],
   "iat": 1551899553,
   "tenant": "39a37f57-a227-4bfe-a044-93b6e6050a61",
   "scope": "openid appid_default appid_readprofile appid_readuserattr appid_writeuserattr appid_authenticated"
}

Jetons d'identité

Les jetons d'identité représentent une authentification et contiennent des informations concernant l'utilisateur. Ils peuvent vous donner des informations sur son nom, son adresse électronique, son sexe et son emplacement. Ils peuvent également renvoyer une URL à une image de l'utilisateur. Le jeton est formaté comme suit : Jetons Web JSON sont signés avec une clé Web JSON qui utilise l'algorithme RS256.

Exemple de jeton :

Header:
{
   "alg": "RS256",
   "typ": "JWT",
   "kid": "appId-39a37f57-a227-4bfe-a044-93b6e6050a61-2018-08-02T11:57:43.401",
   "ver": 4
}
Payload:
{
   "iss": "https://us-south.appid.cloud.ibm.com/oauth/v4/39a37f57-a227-4bfe-a044-93b6e6050a61",
   "aud": [
   "968c2306-9aef-4109-bc06-4f5ed6axi24a"
   ],
   "exp": 1551903163,
   "tenant": "39a37f57-a227-4bfe-a044-93b6e6050a61",
   "iat": 1551899553,
   "email": "appid155@mailinator.com",
   "name": "appid155@mailinator.com",
   "sub": "2b96cc04-eca5-4122-a8de-6e07d14c13a5",
   "email_verified": true,
   "identities": [
   {
      "provider": "cloud_directory",
      "id": "118c0278-3526-4954-876b-cf70eb88efa2"
   }
   ],
   "amr": [
   "cloud_directory"
   ]
}

Les jetons d'identité ne contiennent que des informations utilisateur partielles. Pour afficher toutes les informations fournies par le fournisseur d'identité, vous pouvez utiliser leNœud final /userinfo.

Jetons d'actualisation

App ID permet d'acquérir de nouveaux jetons d'accès et d'identité sans réauthentification, conformément à la définition de l 'OIDC. Un jeton d'actualisation peut être utilisé pour renouveler le jeton d'accès afin qu'un utilisateur n'ait à effectuer aucune action pour se connecter, telle que fournir des données d'identification. Comme pour les jetons d'accès, les jetons de régénération contiennent des données qui permettent à App ID de déterminer si vous avez autorisé. Cependant, ces jetons sont opaques.

Les jetons de régénération sont configurés pour avoir une durée de vie plus longue qu'un jeton d'accès normal. Lorsqu'un jeton d'accès expire, le jeton de régénération est toujours valide et peut être utilisé pour renouveler le jeton d'accès. Les jetons de régénération de App IDpeuvent être configurés pour durer entre 1 et 90 jours. Pour tirer le meilleur parti des jetons d'actualisation, conservez-les pendant toute leur durée de vie ou jusqu'à ce qu'ils soient renouvelés. Un utilisateur ne peut pas accéder directement à des ressources avec un simple jeton d'actualisation, ce qui rend ce jeton beaucoup plus sûr à conserver qu'un jeton d'accès. En tant que meilleure pratique, les jetons d'actualisation doivent être stockés de manière sécurisée par le client qui les a reçus et envoyés uniquement au serveur d'autorisation qui les a émis.

Pour plus de commodité, App ID renouvelle également son jeton de régénération - et sa date d'expiration - lorsque le jeton d'accès est renouvelé, ce qui permet à l'utilisateur de rester connecté pendant qu'il est actif à un certain moment avant l'expiration du jeton de régénération en cours. Sinon, si vous souhaitez utiliser des jetons de régénération pour forcer l'utilisateur à se connecter périodiquement, votre application peut utiliser uniquement les jetons de régénération qui sont renvoyés lorsque l'utilisateur se connecte en entrant ses données d'identification. Toutefois, nous recommandons de toujours utiliser le dernier jeton de rafraîchissement reçu de App ID, comme décrit dans les spécifications de OAuth 2.0.

Bien que ces jetons puissent rationaliser le processus de connexion, votre application ne doit pas en dépendre. Ils peuvent être révoqués à tout moment, par exemple lorsque vous pensez que vos jetons de régénération ont été compromis. Vous pouvez utiliser deux méthodes de révocation d'un jeton de régénération, si nécessaire. Si vous avez le jeton de rafraîchissement, vous pouvez le révoquer en vous basant sur les éléments suivants RFC7009. Par ailleurs, si vous disposez de l'ID utilisateur, vous pouvez révoquer le jeton de rafraîchissement à l'aide de l'API de gestion. Pour plus d'informations sur l'accès à l'API de gestion, voir la gestion de l'accès aux services.

Pour des exemples d'utilisation des jetons d'actualisation et de leur utilisation en vue d'implémenter une fonctionnalité remember-me, consultez getting started samples.

D'où proviennent les jetons ?

Les jetons sont émis par le serveur App ID OAuth et sont formatés sous forme de jetons Web JSON(JWT). Les jetons ont été signés avec une clé Web JSON(JWK) avec l'algorithme RS256.

Qu'advient-il des informations contenues dans le jeton ?

Le jeton d'accès contient un ensemble de revendications JWT standard et un ensemble de revendications spécifiques à App ID telles qu'un ID titulaire. Le jeton d'identité contient des informations spécifiques à l'utilisateur. Les informations contenues dans les jetons sont stockées en tant que revendications (claims) dans un profil utilisateur.

Comment les jetons sont-ils reçus ?

Les jetons sont reçus par votre application après une authentification réussie. Votre application peut utiliser les jetons pour extraire des informations sur l'autorisation et l'authentification des utilisateurs. Le jeton d'accès peut être utilisé pour accéder aux ressources protégées en envoyant une demande à la ressource. Votre application doit analyser l'en-tête pour pouvoir extraire les jetons.

Exemple de demande :

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer  mF_9.B5f-4.1JqM mF_9.B5f-4.1JqM

Comment les jetons sont-ils configurés ?

Vous pouvez personnaliser les jetons en utilisant des mappages de revendications (claims) personnalisées. Pour plus d'informations, voir Personnalisation des jetons.