Search English articles

3. November 2025 ·

Ein moderner Leitfaden für OAuth 2.0 mit C# und Visual Studio Code

Übersetzung des englischen Artikels. Englisches Original

OAuth 2.0 mit C# und Visual Studio Code

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.

Logo von OAuth 2.0

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:

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 die tenant-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, etwa contoso.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/users liefert eine Liste der Benutzer in deinem Azure-AD-Mandanten. Damit der Aufruf funktioniert, benötigt deine App-Registrierung Anwendungsberechtigungen wie User.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:

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.