3. November 2025 · Dean Hume
Ein moderner Leitfaden für OAuth 2.0 mit C# und Visual Studio Code
Übersetzung des englischen Artikels. Englisches Original

Vor vielen Jahren habe ich einen Artikel über die Grundlagen von OAuth (Englisch) geschrieben. Er war damals hilfreich, ist inzwischen aber ziemlich veraltet. In den vergangenen 14 Jahren hat sich viel verändert! OAuth 2.0 hat sich zum De-facto-Standard entwickelt, um APIs abzusichern und Anwendungen den autorisierten Zugriff auf Ressourcen zu ermöglichen.
In meinem älteren Artikel habe ich ein SoundCloud-Beispiel und ältere Bibliotheken verwendet. Dieser aktualisierte Leitfaden zeigt dir die Umsetzung von OAuth 2.0 in C# mit Visual Studio Code, modernen Bibliotheken und bewährten Vorgehensweisen.

Ob du eine Konsolenanwendung oder eine Web-API entwickelst oder Dienste wie Google oder Microsoft Graph einbindest: Dieser Leitfaden hilft dir beim Einstieg mit einer übersichtlichen und einfachen Implementierung.
Voraussetzungen
Bevor wir loslegen, benötigst du Folgendes:
- Das .NET SDK herunterladen
- Visual Studio Code herunterladen
- Grundkenntnisse in HTTP und REST-APIs
- Eine registrierte OAuth-2.0-Anwendung, etwa bei Google, Microsoft oder einem eigenen Anbieter.
Los geht's!
Schritt 1: Eine neue Konsolenanwendung erstellen
Öffne dein Terminal und führe diese Befehle aus:
dotnet new console -n OAuthDemo
cd OAuthDemo
Schritt 2: Die benötigten Pakete installieren
Für die OAuth-Abläufe verwenden wir Microsoft.Identity.Client:
dotnet add package Microsoft.Identity.Client
dotnet add package Microsoft.Extensions.Configuration
Schritt 3: Die OAuth-Einstellungen konfigurieren
Erstelle eine Datei namens appsettings.json, um deine Anmeldedaten zu speichern:
{
"OAuth": {
"ClientId": "your-client-id",
"TenantId": "your-tenant-id",
"Authority": "https://login.microsoftonline.com/your-tenant-id",
"Scopes": [ "https://graph.microsoft.com/.default" ],
"ClientSecret": "your-client-secret"
}
}
Was ist dietenant-id? Das ist die eindeutige Kennung (GUID) deines Azure-Active-Directory-Mandanten (AAD). Du findest sie im Azure-Portal unter Azure Active Directory > Übersicht. Alternativ kannst du statt der GUID deinen Domänennamen verwenden, etwacontoso.onmicrosoft.com. Je nach OAuth-Anbieter kann dies anders aussehen.
Schritt 4: Authentifizieren und ein Zugriffstoken abrufen
Hier ist ein einfaches Beispiel, das mit MSAL ein Zugriffstoken abruft:
using Microsoft.Identity.Client;
using Microsoft.Extensions.Configuration;
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
var clientId = config["OAuth:ClientId"];
var tenantId = config["OAuth:TenantId"];
var authority = config["OAuth:Authority"];
var scopes = config.GetSection("OAuth:Scopes").Get<string[]>();
var app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithAuthority(authority)
.WithClientSecret(config["OAuth:ClientSecret"])
.Build();
var result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
Console.WriteLine($"Access Token: {result.AccessToken}");
Schritt 5: Einen authentifizierten API-Aufruf ausführen
Verwende HttpClient, um eine geschützte Ressource aufzurufen:
using System.Net.Http;
using System.Net.Http.Headers;
using var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", result.AccessToken);
var response = await httpClient.GetAsync("https://graph.microsoft.com/v1.0/users");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
Test-Endpunkt:https://graph.microsoft.com/v1.0/usersliefert eine Liste der Benutzer in deinem Azure-AD-Mandanten. Damit der Aufruf funktioniert, benötigt deine App-Registrierung Anwendungsberechtigungen wieUser.Read.All. Außerdem muss die Administratorzustimmung erteilt sein.
Wenn alles wie erwartet funktioniert, solltest du eine Antwort wie diese erhalten:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
"value": [
{
"businessPhones": [],
"displayName": "Dean Hume",
"givenName": "Dean",
"jobTitle": null,
"mail": null,
"mobilePhone": null,
"officeLocation": null,
"preferredLanguage": "en",
"surname": "Hume",
"userPrincipalName": "email.com#EXT#@email.onmicrosoft.com",
"id": "id-response-goes-here"
}
]
}
Optional: Eine OAuth-Testanwendung in Entra ID einrichten
Dieser Schritt ist optional, denn möglicherweise möchtest du deinen eigenen OAuth-Anbieter verwenden. Ich wollte allerdings sicherstellen, dass mein Code funktioniert, und habe dafür eine Anwendung in Microsoft Entra ID eingerichtet.
Wenn du das ebenfalls ausprobieren möchtest, empfehle ich diese Ressourcen:
- Schnellstart: Einen neuen Mandanten in Microsoft Entra ID erstellen (Englisch)
- Client-ID und Clientgeheimnis aus Entra ID abrufen (Englisch)
Fazit
OAuth 2.0 muss nicht einschüchternd sein. Mit modernen Bibliotheken wie MSAL und Werkzeugen wie Visual Studio Code kannst du dich mit wenigen Zeilen Code sicher authentifizieren und auf APIs zugreifen.
Ein Beispiel mit diesem Code findest du im GitHub-Repository (Englisch), das ich als Ergänzung zu diesem Artikel erstellt habe.