Pular para o conteúdo principal

Casos de uso comuns

Nesta seção, forneceremos alguns exemplos para ajudar você a entender cenários onde as reivindicações personalizadas de token podem ser úteis, oferecendo algumas referências. Assim, quando você encontrar dificuldades no gerenciamento de acesso, poderá avaliar se as reivindicações personalizadas de token podem trazer mais conveniência.

Tornar o controle de acesso baseado em atributos (ABAC) possível

Controle de acesso baseado em atributos (ABAC) é um modelo de controle de acesso que utiliza atributos (como papéis de usuário, propriedades do recurso e condições ambientais) para tomar decisões de controle de acesso. É uma forma flexível e dinâmica de gerenciar o acesso a recursos protegidos.

Suponha que você esteja desenvolvendo um aplicativo, e o lançamento do app seja dividido em duas fases: beta público e lançamento oficial. Mesmo após o lançamento oficial do app, você deseja que os usuários antigos que participaram do beta público continuem usando os recursos pagos.

Após o lançamento oficial do app, você utiliza o recurso de controle de acesso baseado em papel (RBAC) do Logto para implementar o controle de acesso ao uso dos recursos pagos. Para verificar facilmente se um usuário já utilizava o app durante a fase beta pública, você pode usar o método getCustomJwtClaims() para adicionar uma reivindicação createdAt no payload do token.

Então, ao realizar o controle de acesso em suas APIs protegidas, você precisa permitir tokens de acesso que atendam a uma das seguintes condições:

  1. Com o contexto RBAC, possuir o escopo para acessar recursos pagos.
  2. O campo createdAt ser anterior ao término da fase beta pública.

Se não houver o recurso de reivindicações personalizadas de token, ao verificar permissões para autorização (Authorization), seria necessário chamar a Management API do Logto para verificar se o usuário com o token de acesso atual possui as permissões correspondentes ao papel exigido por determinado recurso de API.

Em um cenário semelhante, suponha que seu app exiba mensagens de aniversário na página de login se o aniversário do usuário estiver próximo. Você pode usar reivindicações personalizadas de token para adicionar um campo de aniversário ao payload do token, que pode ser usado para determinar se uma mensagem específica deve ser exibida.

Bloquear manualmente a emissão de tokens

Suponha que Joe esteja administrando um jogo online e utilize o Logto como sistema de gerenciamento de identidade e acesso (IAM).

Imagine que esse jogo exige recargas para comprar tempo de jogo. Joe registra o saldo de cada usuário em seu serviço de jogo e desconta continuamente do saldo conforme o tempo de jogo é utilizado. Joe deseja forçar os jogadores a fazer logout quando o saldo da conta for esgotado, incentivando-os a recarregar.

Neste caso, Joe também pode usar o recurso de reivindicações personalizadas de token fornecido pelo Logto para alcançar esse objetivo:

  1. No script, uma chamada de API externa buscar dados externos pode ser usada para recuperar o saldo atual do jogador no servidor de jogos do Joe.
  2. Se o saldo for menor ou igual a 0, o método api.denyAccess() pode ser utilizado para bloquear a emissão do token.

Neste momento, como não será possível obter um novo token de acesso válido, o jogador será forçado a sair do jogo.