Dela via


Skrivbordsapp som anropar webb-API:er: Anropa ett webb-API

Nu när du har en token kan du anropa ett skyddat webb-API.

Anropa en webb-API

AuthenticationResult-egenskaper i MSAL.NET

Metoderna för att hämta token returnerar AuthenticationResult. För asynkrona metoder Task<AuthenticationResult> returnerar.

I MSAL.NET AuthenticationResult exponeras:

  • AccessToken för att webb-API:et ska få åtkomst till resurser. Den här parametern är en sträng, vanligtvis en Base-64-kodad JWT. Klienten bör aldrig titta i åtkomsttoken. Formatet är inte garanterat stabilt och kan krypteras för resursen. Att skriva kod som är beroende av åtkomsttokeninnehåll på klienten är en av de största felkällorna och klientlogikbrytningarna. Mer information finns i Åtkomsttoken.
  • IdToken för användaren. Den här parametern är en kodad JWT. Mer information finns i ID-token.
  • ExpiresOn anger datum och tid när token upphör att gälla.
  • TenantId innehåller klientorganisationen där användaren hittades. För gästanvändare i Microsoft Entra B2B-scenarier är klientorganisations-ID:t gästklientorganisationen, inte den unika klientorganisationen. När token levereras för en användare innehåller AuthenticationResult även information om den här användaren. För konfidentiella klientflöden där token begärs utan användare för programmet är den här användarinformationen null.
  • För Scopes vilken token utfärdades.
  • Det unika ID:t för användaren.

IAccount

MSAL.NET definierar begreppet konto via IAccount gränssnittet. Den här icke-bakåtkompatibla ändringen ger rätt semantik. Samma användare kan ha flera konton i olika Microsoft Entra-kataloger. Dessutom ger MSAL.NET bättre information när det gäller gästscenarier eftersom hemkontoinformation tillhandahålls. Följande diagram visar gränssnittets IAccount struktur.

IAccount interface structure

Klassen AccountId identifierar ett konto i en specifik klientorganisation med de egenskaper som visas i följande tabell.

Property beskrivning
TenantId En strängrepresentation för ett GUID, vilket är ID:t för klientorganisationen där kontot finns.
ObjectId En strängrepresentation för ett GUID, vilket är ID för den användare som äger kontot i klientorganisationen.
Identifier Unik identifierare för kontot. Identifier är sammanlänkningen av ObjectId och TenantId avgränsad med ett kommatecken. De är inte base 64-kodade.

Gränssnittet IAccount representerar information om ett enda konto. Samma användare kan finnas i olika klientorganisationer, vilket innebär att en användare kan ha flera konton. Dess medlemmar visas i följande tabell.

Property beskrivning
Username En sträng som innehåller det visningsbara värdet i UPN-format (UserPrincipalName), till exempel john.doe@contoso.com. Den här strängen kan vara null, till skillnad från HomeAccountId och HomeAccountId.Identifier, som inte är null. Den här egenskapen ersätter DisplayableId egenskapen IUser för i tidigare versioner av MSAL.NET.
Environment En sträng som innehåller identitetsprovidern för det här kontot, till exempel login.microsoftonline.com. Den här egenskapen ersätter IdentityProvider egenskapen IUser, förutom den som IdentityProvider också hade information om klientorganisationen, utöver molnmiljön. Här är värdet bara värden.
HomeAccountId Konto-ID för hemkontot för användaren. Den här egenskapen identifierar användaren unikt i Microsoft Entra-klienter.

Använda token för att anropa ett skyddat API

När AuthenticationResult har returnerats av MSAL i lägger du till det i resultHTTP-auktoriseringshuvudet innan du anropar för att komma åt det skyddade webb-API:et.

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

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

Nästa steg

Gå vidare till nästa artikel i det här scenariot, Flytta till produktion.