Bibliothek OAuth-Client für C# (.NET): Implementierung sicherer Autorisierung
In der modernen Webentwicklung ist die Integration mit externen Diensten (Google, GitHub, Facebook usw.) über das OAuth 2.0-Protokoll zum De-facto-Standard geworden. Für die .NET-Plattform gibt es mehrere ausgereifte Lösungen, aber eine der flexibelsten und leistungsfähigsten ist die Bibliothek OAuth-Client für C# (.NET), verfügbar über das NuGet-Paket OAuthClient.Net. Diese Bibliothek bietet Entwicklern einen vollständigen Satz von Werkzeugen zur Implementierung von Authorization Code Flow, Implicit Grant und Client Credentials Flow.
Hauptfunktionen der Bibliothek
- Unterstützung aller gängigen OAuth 2.0-Anbieter — Google, GitHub, Microsoft, Facebook, VK, Yandex und benutzerdefinierte Server.
- Automatische Token-Verwaltung — Abruf von Access Token, Refresh Token, automatische Aktualisierung bei Ablauf der Gültigkeit.
- Integrierter CSRF-Schutz — Generierung und Überprüfung von State-Parametern.
- Asynchrone Arbeitsweise — alle Methoden unterstützen async/await.
- Flexible Konfiguration — Einrichtung über Code oder JSON-Datei.
- Erweiterbarkeit — Möglichkeit, eigene Anbieter über Schnittstellen hinzuzufügen.
Installation und Einbindung
Die Installation erfolgt über den NuGet Package Manager:
Install-Package OAuthClient.Net -Version 2.1.0Oder über die .NET CLI:
dotnet add package OAuthClient.Net --version 2.1.0Nach der Installation muss der Namespace importiert werden:
using OAuthClient;using OAuthClient.Models;using OAuthClient.Providers;Basisbeispiel: Autorisierung über Google
Betrachten wir ein einfaches Szenario — das Abrufen von Benutzerdaten von Google nach erfolgreicher Autorisierung.
public async Task<UserInfo> AuthenticateWithGoogleAsync(){ // Konfiguration des Anbieters var googleProvider = new GoogleOAuthProvider( clientId: "YOUR_GOOGLE_CLIENT_ID", clientSecret: "YOUR_GOOGLE_CLIENT_SECRET", redirectUri: "https://yourapp.com/oauth/callback" );
// Erstellen des Clients var oauthClient = new OAuthClient(googleProvider);
// Generieren der URL für die Weiterleitung des Benutzers string authUrl = oauthClient.GetAuthorizationUrl( scope: new[] { "openid", "profile", "email" }, state: Guid.NewGuid().ToString() );
// Nachdem der Benutzer zur Callback-URL zurückgekehrt ist: // Extrahieren des Codes aus dem Query-Parameter "code" string authorizationCode = HttpContext.Request.Query["code"];
// Austausch des Codes gegen ein Token var tokenResponse = await oauthClient.ExchangeCodeForTokenAsync(authorizationCode);
// Abrufen der Benutzerinformationen var userInfo = await oauthClient.GetUserInfoAsync(tokenResponse.AccessToken);
return userInfo;}Arbeit mit Refresh Token
Für langlebige Sitzungen verwaltet die Bibliothek die Token-Aktualisierung automatisch. Beispiel für das Speichern und Wiederherstellen einer Sitzung:
// Speichern des Refresh Token nach der ersten Autorisierungstring refreshToken = tokenResponse.RefreshToken;// Speichern Sie es in der Datenbank oder einem geschützten Speicher
// Wiederherstellen der Sitzung: Abrufen eines neuen Access Tokenvar newTokenResponse = await oauthClient.RefreshAccessTokenAsync(refreshToken);
// Automatische Aktualisierung (integrierte Logik)oauthClient.TokenRefreshed += (sender, args) =>{ // Protokollieren oder Speichern des neuen Refresh Token Console.WriteLine($"Neuer Refresh Token: {args.NewRefreshToken}");};Benutzerdefinierter OAuth-Anbieter
Wenn eine Verbindung zu einem Dienst hergestellt werden muss, der nicht in der Liste der integrierten Anbieter enthalten ist, ermöglicht die Bibliothek die Erstellung eines eigenen:
public class CustomProvi Auch in der Bibliothek
OAuth-Client für Java: ScribeJava und Spring Security OAuth2
Swagger/OpenAPI-Generierung für PHP: Die besten Tools und Bibliotheken
Generierung von QR-Codes mit PHP: Bibliothek phpqrcode und vollständiger Leitfaden
Standard-Java-Bibliothek: vollständiger Überblick und Codebeispiele
Arbeiten mit XML in Go (Golang): Paket encoding/xml und Alternativen