Cliente OAuth para C# (.NET): implementación de autorización a través de servicios de terceros

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Biblioteca Cliente OAuth para C# (.NET): implementación de autorización segura



En el desarrollo web moderno, la integración con servicios externos (Google, GitHub, Facebook, etc.) a través del protocolo OAuth 2.0 se ha convertido en un estándar de facto. Para la plataforma .NET existen varias soluciones maduras, pero una de las más flexibles y eficientes es la biblioteca Cliente OAuth para C# (.NET), disponible a través del paquete NuGet OAuthClient.Net. Esta biblioteca proporciona a los desarrolladores un conjunto completo de herramientas para implementar Authorization Code Flow, Implicit Grant y Client Credentials Flow.



Características principales de la biblioteca



  • Soporte para todos los proveedores OAuth 2.0 populares — Google, GitHub, Microsoft, Facebook, VK, Yandex y servidores personalizados.
  • Gestión automática de tokens — obtención de Access Token, Refresh Token, actualización automática al expirar.
  • Protección integrada contra ataques CSRF — generación y verificación de parámetros state.
  • Trabajo asíncrono — todos los métodos admiten async/await.
  • Configuración flexible — configuración mediante código o archivo JSON.
  • Extensibilidad — posibilidad de agregar proveedores personalizados a través de interfaces.


Instalación y configuración



La instalación se realiza a través del NuGet Package Manager:



Install-Package OAuthClient.Net -Version 2.1.0


O mediante .NET CLI:



dotnet add package OAuthClient.Net --version 2.1.0


Después de la instalación, es necesario importar el espacio de nombres:



using OAuthClient;using OAuthClient.Models;using OAuthClient.Providers;


Ejemplo básico: autorización a través de Google



Consideremos el escenario más simple: obtener datos del usuario de Google después de una autorización exitosa.



public async Task<UserInfo> AuthenticateWithGoogleAsync(){    // Configuración del proveedor    var googleProvider = new GoogleOAuthProvider(        clientId: "YOUR_GOOGLE_CLIENT_ID",        clientSecret: "YOUR_GOOGLE_CLIENT_SECRET",        redirectUri: "https://yourapp.com/oauth/callback"    );

// Creación del cliente var oauthClient = new OAuthClient(googleProvider);

// Generación de URL para redirigir al usuario string authUrl = oauthClient.GetAuthorizationUrl( scope: new[] { "openid", "profile", "email" }, state: Guid.NewGuid().ToString() );

// Después de que el usuario regrese a la URL de callback: // Extraemos el código del parámetro query "code" string authorizationCode = HttpContext.Request.Query["code"];

// Intercambio del código por un token var tokenResponse = await oauthClient.ExchangeCodeForTokenAsync(authorizationCode);

// Obtención de información del usuario var userInfo = await oauthClient.GetUserInfoAsync(tokenResponse.AccessToken);

return userInfo;}


Trabajo con Refresh Token



Para sesiones de larga duración, la biblioteca gestiona automáticamente la renovación de tokens. Ejemplo de guardado y restauración de sesión:



// Guardar el Refresh Token después de la primera autorizaciónstring refreshToken = tokenResponse.RefreshToken;// Guárdelo en la base de datos o en un almacenamiento seguro

// Restauración de sesión: obtención de un nuevo Access Tokenvar newTokenResponse = await oauthClient.RefreshAccessTokenAsync(refreshToken);

// Actualización automática (lógica integrada)oauthClient.TokenRefreshed += (sender, args) =>{ // Registramos o guardamos el nuevo Refresh Token Console.WriteLine($"Nuevo Refresh Token: {args.NewRefreshToken}");};


Proveedor OAuth personalizado



Si es necesario conectarse a un servicio que no está en la lista de proveedores integrados, la biblioteca permite crear uno propio:



public class CustomProvi                    

Recommendations