OAuth-Client für C# (.NET): Implementierung der Autorisierung über Drittanbieterdienste

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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


Oder über die .NET CLI:



dotnet add package OAuthClient.Net --version 2.1.0


Nach 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                    

Empfehlungen