Neste documento, você verá como configurar declarações personalizadas em usuários com o Identity Platform. As declarações personalizadas são inseridas em tokens de usuários durante a autenticação. O aplicativo pode usar essas declarações para lidar com cenários de autorização complexos, como a restrição do acesso de um usuário a um recurso com base no papel dele.
Antes de começar
Como usar declarações personalizadas
Para preservar a segurança, defina declarações personalizadas usando o SDK Admin no seu servidor. O exemplo a seguir mostra como usar declarações personalizadas com o Node.js. A referência do SDK Admin inclui exemplos para outros linguagens.
Defina a declaração personalizada que você quer usar. No exemplo a seguir, uma declaração personalizada é definida no usuário para descrever que ele é um administrador:
// 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. });
Valide a declaração personalizada na próxima vez que ela for enviada ao servidor:
// Verify the ID token first. admin.auth().verifyIdToken(idToken).then((claims) => { if (claims.admin === true) { // Allow access to requested admin resource. } });
Para determinar quais declarações personalizadas estão presentes para um usuário:
// 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); });
As declarações personalizadas são extremamente eficientes, mas observe o seguinte:
- As declarações personalizadas não podem exceder 1.000 bytes. A tentativa de transmitir reivindicações maiores que 1.000 bytes resultará em um erro.
- As declarações personalizadas são inseridas no JWT do usuário quando o token é emitido. Novas
reivindicações não estarão disponíveis até que o token seja atualizado. É possível atualizar
um token silenciosamente chamando
user.getIdToken(true)
. - Para manter a continuidade e a segurança, defina apenas declarações personalizadas em um ambiente de servidor seguro.
A seguir
- Saiba mais sobre as declarações personalizadas do Identity Platform na documentação de referência do SDK Admin.