Biblioteca Cliente OAuth para C# (.NET): implementação de autorização segura
No desenvolvimento web moderno, a integração com serviços externos (Google, GitHub, Facebook, etc.) através do protocolo OAuth 2.0 tornou-se o padrão de facto. Para a plataforma .NET, existem várias soluções maduras, mas uma das mais flexíveis e eficientes é a biblioteca Cliente OAuth para C# (.NET), disponível através do pacote NuGet OAuthClient.Net. Esta biblioteca fornece aos desenvolvedores um conjunto completo de ferramentas para implementar Authorization Code Flow, Implicit Grant e Client Credentials Flow.
Principais funcionalidades da biblioteca
- Suporte a todos os provedores OAuth 2.0 populares — Google, GitHub, Microsoft, Facebook, VK, Yandex e servidores personalizados.
- Gerenciamento automático de tokens — obtenção de Access Token, Refresh Token, atualização automática quando expirado.
- Proteção integrada contra ataques CSRF — geração e verificação de parâmetros state.
- Operação assíncrona — todos os métodos suportam async/await.
- Configuração flexível — configuração através de código ou arquivo JSON.
- Extensibilidade — possibilidade de adicionar provedores próprios através de interfaces.
Instalação e configuração
A instalação é feita através do NuGet Package Manager:
Install-Package OAuthClient.Net -Version 2.1.0Ou através do .NET CLI:
dotnet add package OAuthClient.Net --version 2.1.0Após a instalação, é necessário importar o namespace:
using OAuthClient;using OAuthClient.Models;using OAuthClient.Providers;Exemplo básico: autorização via Google
Vamos considerar um cenário simples — obter dados do usuário do Google após autorização bem-sucedida.
public async Task<UserInfo> AuthenticateWithGoogleAsync(){ // Configuração do provedor var googleProvider = new GoogleOAuthProvider( clientId: "YOUR_GOOGLE_CLIENT_ID", clientSecret: "YOUR_GOOGLE_CLIENT_SECRET", redirectUri: "https://yourapp.com/oauth/callback" );
// Criação do cliente var oauthClient = new OAuthClient(googleProvider);
// Geração da URL para redirecionamento do usuário string authUrl = oauthClient.GetAuthorizationUrl( scope: new[] { "openid", "profile", "email" }, state: Guid.NewGuid().ToString() );
// Após o usuário retornar à URL de callback: // Extrair o código do parâmetro de query "code" string authorizationCode = HttpContext.Request.Query["code"];
// Troca do código por token var tokenResponse = await oauthClient.ExchangeCodeForTokenAsync(authorizationCode);
// Obtenção de informações do usuário var userInfo = await oauthClient.GetUserInfoAsync(tokenResponse.AccessToken);
return userInfo;}Trabalhando com Refresh Token
Para sessões de longa duração, a biblioteca gerencia automaticamente a renovação de tokens. Exemplo de salvamento e restauração de sessão:
// Salvar o Refresh Token após a primeira autorizaçãostring refreshToken = tokenResponse.RefreshToken;// Salve-o no banco de dados ou armazenamento seguro
// Restauração da sessão: obtenção de um novo Access Tokenvar newTokenResponse = await oauthClient.RefreshAccessTokenAsync(refreshToken);
// Atualização automática (lógica embutida)oauthClient.TokenRefreshed += (sender, args) =>{ // Registrar ou salvar o novo Refresh Token Console.WriteLine($"Novo Refresh Token: {args.NewRefreshToken}");};Provedor OAuth personalizado
Se for necessário conectar-se a um serviço que não está na lista de provedores integrados, a biblioteca permite criar o seu próprio:
public class CustomProvi Também na biblioteca
Vision para Swift: guia completo com exemplos práticos
ErrorOr para C# (.NET): guia completo com exemplos práticos
Geração de PDF em Swift (iOS/macOS): visão geral das ferramentas e exemplos
Geolocalização e Mapas em TypeScript: bibliotecas e exemplos práticos
Trabalhando com imagens em C# (.NET): guia completo