Cliente OAuth para C# (.NET): implementação de autorização através de serviços terceiros

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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.0


Ou através do .NET CLI:



dotnet add package OAuthClient.Net --version 2.1.0


Apó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                    

Recommendations