ASP.NET Core 3.1 — PKCE Component
No post ASP.NET Core 3.1 — IdentityServer4 — Client-Security-PKCE (Parte 11) eu falei sobre o PKCE (Proof Key for Code Exchange).
Eu percebi também que a implementação dele não é algo trivial, então decidi fazer um componente para apenas chamar o método de extensão UsePkce()
através das options do serviço para o protocolo do OpenID Connect. Este componente segue os passos do tópico do protocolo da RFC 7636.
NuGet
O componente criado foi publicado no NuGet.
Para instalá-lo, basta utilizar o comando a seguir, ou pelo Visual Studio — mais fácil — basta adicionar a referência através do gerenciador de pacotes.
Install-Package Hopper.Authentication.OpenIdConnect.Pkce
Ou ainda, adicionar diretamente no csproj, como achar melhor!
<ItemGroup>
<PackageReference Include=”Hopper.Authentication.OpenIdConnect.Pkce” Version=”1.0.2" />
</ItemGroup>
GitHub
O código fonte do componente está no GitHub
Eu utilizei as Actions do GitHub para gerar a versão do pacote, compilar, gerar o pack para o NuGet e fazer a publicação automática sempre que uma nova versão de release for criada, vou explicar nos tópicos finais este processo, como fazer.
MVC (Model View Controller)
Em uma aplicação MVC, a configuração pode ser feita conforme o código a seguir.
Server
Não esqueça que o provider de autenticação/autorização precisa entender que vai receber uma solicitação com PKCE. No meu caso eu usei o IdentityServer4 com o client configurado com a obrigatoriedade do PKCE, então isso vai obrigar que o code_challenge
seja enviado.
Neste link, tem uma aplicação completa usando o componente e também o IdentityServer4.
NuGet Publish
Saiba como eu publiquei o componente no NuGet através do post ASP.NET Core 3.1 — PKCE Component — NuGet Publish
Originally published at http://alextochetto.com on November 12, 2020.