Freigeben über


Desktop-App, die Web-APIs aufruft: Aufrufen einer Web-API

Da Sie nun über ein Token verfügen, können Sie eine geschützte Web-API aufrufen.

Aufrufen einer Web-API

AuthenticationResult-Eigenschaften in MSAL.NET

Die Methoden zum Abrufen von Token geben AuthenticationResult zurück. Bei asynchronen Methoden wird Task<AuthenticationResult> zurückgegeben.

In MSAL.NET macht AuthenticationResult Folgendes verfügbar:

  • Das AccessToken, über das die Web-API auf Ressourcen zugreift. Dieser Parameter ist eine Zeichenfolge, in der Regel ein Base64-codiertes JWT. Der Client sollte jedoch niemals Zugriff auf die Informationen im Zugriffstoken erhalten. Die Stabilität des Formats ist nicht garantiert, und das Format kann für die Ressource verschlüsselt werden. Geschriebener Code, der vom Inhalt von Zugriffstoken auf dem Client abhängig ist, stellt eine der häufigsten Ursachen für Fehler und Brüche in der Clientlogik dar. Weitere Informationen finden Sie unter Zugriffstoken.
  • Das IdToken für den Benutzer. Dieser Parameter ist ein codiertes JWT. Weitere Informationen finden Sie unter ID-Token.
  • ExpiresOn gibt das Datum und die Uhrzeit des Tokenablaufs an.
  • Die TenantId enthält den Mandanten, in dem der Benutzer gefunden wurde. Bei Gastbenutzern (Microsoft Entra B2B-Szenarien) entspricht die Mandanten-ID dem Gastmandanten, nicht dem eindeutigen Mandanten. Wenn das Token für einen Benutzer bereitgestellt wird, enthält AuthenticationResult auch Informationen zu diesem Benutzer. Bei Flows für vertrauliche Clients, in denen Token ohne Benutzer für die Anwendung angefordert werden, wird für diese Benutzerinformationen NULL zurückgegeben.
  • Die Scopes, für die das Token ausgegeben wurde.
  • Die eindeutige ID für den Benutzer

IAccount

MSAL.NET definiert das Konzept eines Kontos über die IAccount-Schnittstelle. Durch diese wichtige Änderung (Breaking Change) wird die richtige Semantik bereitgestellt. Ein und derselbe Benutzer kann über mehrere Konten in unterschiedlichen Microsoft Entra-Verzeichnissen verfügen. Zudem bietet MSAL.NET bessere Informationen für Gastszenarien, weil Informationen zum Stammkonto bereitgestellt werden. Im folgenden Diagramm ist die Struktur der IAccount-Schnittstelle dargestellt.

Struktur der IAccount-Schnittstelle

Die AccountId-Klasse identifiziert ein Konto in einem bestimmten Mandanten mit den in der folgenden Tabelle aufgeführten Eigenschaften.

Eigenschaft BESCHREIBUNG
TenantId Eine Zeichenfolgendarstellung für eine GUID, bei der es sich um die ID des Mandanten handelt, in dem sich das Konto befindet.
ObjectId Eine Zeichenfolgendarstellung für eine GUID, bei der es sich um die ID des Benutzers handelt, der Besitzer des Kontos im Mandanten ist.
Identifier Eindeutiger Bezeichner für das Konto. Identifier ist die Verkettung von ObjectId und TenantId, durch ein Komma getrennt. Sie sind nicht Base64-codiert.

Die IAccount-Schnittstelle stellt Informationen über ein einziges Konto dar. Ein und derselbe Benutzer kann in verschiedenen Mandanten vorhanden sein, was bedeutet, dass ein Benutzer über mehrere Konten verfügen kann. Die zugehörigen Member sind in der folgenden Tabelle aufgeführt.

Eigenschaft BESCHREIBUNG
Username Eine Zeichenfolge, die den anzeigbaren Wert im UPN-Format (UserPrincipalName) enthält, z. B. john.doe@contoso.com. Diese Zeichenfolge kann NULL sein. „HomeAccountId“ und „HomeAccountId.Identifier“ sind dagegen nie NULL. Diese Eigenschaft ersetzt die DisplayableId-Eigenschaft von IUser in früheren Versionen von MSAL.NET.
Environment Eine Zeichenfolge, die den Identitätsanbieter für dieses Konto (z. B. login.microsoftonline.com) enthält. Diese Eigenschaft ersetzt die IdentityProvider-Eigenschaft von IUser, mit der Ausnahme, dass IdentityProvider zusätzlich zur Cloudumgebung auch Informationen über den Mandanten enthielt. Hier umfasst der Wert nur den Host.
HomeAccountId Die Konto-ID des Stammkontos für den Benutzer. Diese Eigenschaft identifiziert den Benutzer eindeutig über mehrere Microsoft Entra-Mandanten hinweg.

Verwenden des Tokens zum Aufrufen einer geschützten API

Nachdem das AuthenticationResult von MSAL in result zurückgegeben wurde, müssen Sie es dem HTTP-Autorisierungsheader hinzufügen, bevor Sie den Aufruf zum Zugreifen auf die geschützte Web-API ausführen.

httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);

// Call the web API.
HttpResponseMessage response = await _httpClient.GetAsync(apiUri);
...

Nächste Schritte

  • Erfahren Sie mehr, indem Sie eine React-Single-Page-Webanwendung (Single-Page Application, SPA) erstellen, die Benutzer bei der folgenden mehrteiligen Lernprogrammreihe anmeldet.

  • Erkunden von Desktopcodebeispielen der Microsoft Identity Platform