A implementação padrão do IdentityServer4, QuickStart UI, utiliza o algoritmo RSA RS256 (RSASSA-PKCS1-v1_5 using SHA-256) para assinar seus JWTs.

System of equations

Ao ter o primeiro contato com o IdentityServer4, através de seus samples, na maioria dos exemplos será utilizado essa anotação:

Na linha 7, há um comando .AddDeveloperSigningCredentials(). Esse método cria um arquivo tempkey.rsa na raiz do projeto. Esse arquivo é um JWK, que o IdentityServer4 utiliza para Assinar Digitalmente o JWT.

Esse Extensions Method utiliza rotinas internas para gerar uma chave RSA, RS256 (RSASSA-PKCS1-v1_5 using SHA-256).

RSA

RSA é o acronimo de Rivest–Shamir–Adleman, é uma criptografia criada em 1977 e revolucionou os métodos utilizados na época. Pois introduziu o conceito de chaves assimétricas. Até então os modelos de criptografia utilizam a mesma chave para criptografar e descriptografar o conteúdo.

symmetric-encryption

Já na chave assimétrica a chave de Criptografia é diferente da chave de descriptografia.

asymmetric-encryption

Voltando para o JWT, chave assimétrica é perfeita para abordagem. Embora seja possivel visualizar o Payload do JWT e válidar seu conteúdo através da chave pública. Não é possivel alterar o conteúdo, pois a assinatura digital vai perder a validade. Pois partimos do príncipio que só quem consegue assinar digitalmente o JWT é quem possui a chave privada.

É a melhor opção?

Não, porém isso não significa que a criptografia seja ruim. Embora o RSA é seguro e não foi identificado nenhuma brecha de segurança, no entanto há algoritmos atualmente que são melhores. As recomendações atuais da RFC pedem para utilizar RSASSA-PSS (PS256) ou ECDsa using P-256 and SHA-256 (ES256).

Qual o problema com DeveloperSigning?

Não há nenhum problema com a forma como o RSA é criado pelo IdentityServer4. Porém, antes de subir um ambiente de Produção, saiba que o gerenciamento do Key Material não está completo. É preciso efetuar modificações.

Um dos impactos iniciais num ambiente que utiliza o IdentityServer4 é que ele não suporta Scale. O primeiro sintoma ao escalar um servidor IdentityServer4 reside no gerenciamento do Key Material.

Com isso as chamadas ao seu servidor serão invalidadas dependendo de qual servidor responder.

Conclusão

Nesse artigo vimos como IdentityServer4 assina o JWT e quais os impactos de subir esse ambiente para produção. No próximo vamos falar sobre o Key Material e como configurar para um ambiente de produção.

Referências