Preciso que somente alguns poucos endpoints da minha API usem um token diferente, porque eles vão ser chamados por uma aplicação menos segura e não quero que esse outro token tenha acesso a toda aplicação igual ao token padrão que o Identity gera para usar nos endpoints com o [Authorize]
.
Até agora o que fiz foi:
– Gerar manualmente um token com um algoritmo que eu criei
– Retornar esse token através de um endpoint seguro somente para usuários [Authorize]
Agora para autorizar os endpoints eu tenho que fazer a validação também manualmente, resgatando do banco e comparando o token que recebi, mas eu gostaria que essa parte pudesse pelo menos usar um [decorator]
também.
– Tentei sobrescrever o AuthorizeAttribute
, mas isso não é mais possível no .net core
– Tentei criar uma policy e chamar [Authorize(Policy = "NovoToken")]
, mas antes de chamar a validação da policy já retornava Unauthorized
porque não tinha o token do identity.
– E por último tentei implementar um IAuthorizationFilter
. Isso até funcionou, mas pra ele funcionar eu preciso usar o [AllowAnonymous]
junto e fica feio ter que colocar esses dois decorator.
Finalmente minhas perguntas são:
1. Tem uma maneira melhor de criar um decorator que não vai cair na validação padrão do Identity e deixar eu fazer só a minha validação?
2. Ou teria como usar o próprio Identity pra criar e validar um token alternativo, mas deixando ele com permissão para endpoints específicos da API?