Configurer des revendications personnalisées sur les utilisateurs

Ce document explique comment configurer des revendications personnalisées sur les utilisateurs d'Identity Platform. Les revendications personnalisées sont insérées dans les jetons utilisateur lors de l'authentification. Votre application peut exploiter ces revendications pour gérer des scénarios d'autorisation complexes, tels que la restriction de l'accès d'un utilisateur à une ressource en fonction de son rôle.

Avant de commencer

Utiliser des revendications personnalisées

Pour préserver la sécurité, définissez des revendications personnalisées à l'aide du SDK Admin sur votre serveur. L'exemple suivant montre comment utiliser des revendications personnalisées avec Node.js. La documentation de référence du SDK Admin contient des exemples pour d'autres langages.

  1. Définissez la revendication personnalisée que vous souhaitez utiliser. Dans l'exemple suivant, une revendication personnalisée est définie sur l'utilisateur pour indiquer qu'il est un administrateur :

    // Set admin privilege on the user corresponding to uid.
    admin.auth().setCustomUserClaims(uid, {admin: true}).then(() => {
      // The new custom claims will propagate to the user's ID token the
      // next time a new one is issued.
    });
    
  2. Validez la revendication personnalisée la prochaine fois qu'elle est envoyée à votre serveur :

    // Verify the ID token first.
    admin.auth().verifyIdToken(idToken).then((claims) => {
      if (claims.admin === true) {
        // Allow access to requested admin resource.
      }
    });
    
  3. Pour déterminer quelles revendications personnalisées sont présentées à un utilisateur, procédez comme suit :

    // Lookup the user associated with the specified uid.
    admin.auth().getUser(uid).then((userRecord) => {
      // The claims can be accessed on the user record.
      console.log(userRecord.customClaims.admin);
    });
    

Les revendications personnalisées sont extrêmement puissantes. Toutefois, veuillez noter les points suivants :

  • La taille des revendications personnalisées ne peut pas dépasser 1 000 octets. Tenter de transmettre des revendications supérieures à 1 000 octets entraîne une erreur.
  • Les revendications personnalisées sont insérées dans le jeton JWT de l'utilisateur lors de l'émission du jeton. Les nouvelles revendications ne sont pas disponibles tant que le jeton n'est pas actualisé. Vous pouvez actualiser un jeton en mode silencieux en appelant user.getIdToken(true).
  • Pour assurer la continuité et la sécurité, ne définissez des revendications personnalisées que dans un environnement de serveur sécurisé.

Étape suivante