Estou usando tokens JWT em cabeçalhos HTTP para autenticar solicitações para um servidor de recursos. O servidor de recursos e o servidor de autenticação são duas funções de trabalho separadas no Azure.
Não consigo decidir se devo armazenar as reivindicações no token ou anexá-las à solicitação / resposta de alguma outra maneira. A lista Reivindicações afeta a renderização dos elementos da interface do usuário do lado do cliente, bem como o acesso aos dados no servidor. Por esse motivo, quero garantir que as solicitações recebidas pelo servidor sejam autênticas e validadas antes do processamento da solicitação.
Exemplos de declarações são: CanEditProductList, CanEditShopDescription, CanReadUserDetails.
Os motivos pelos quais desejo usar o token JWT para eles são:
- Melhor proteção contra a edição de declarações do lado do cliente (por exemplo, lista de reivindicações de hackers).
- Não há necessidade de procurar as reivindicações em cada solicitação.
Os motivos pelos quais não quero usar o token JWT:
- O servidor de autenticação precisa conhecer a lista de reivindicações centradas no aplicativo.
- O token se torna um ponto único de entrada de hackers.
- Li algumas coisas dizendo que os tokens JWT não se destinam a dados no nível do aplicativo.
Parece-me que ambos têm desvantagens, mas estou inclinado a incluir essas declarações no token e só quero executá-lo por pessoas que já lidaram com isso antes.
OBSERVAÇÃO: usarei HTTPS para todas as solicitações de API; portanto, parece-me que o token estará seguro 'o suficiente'. Estou usando AngularJS, C #, API da Web 2 e MVC5.