Udostępnij za pośrednictwem


Aplikacja desktopowa, która wywołuje webowe API: wywoływanie webowego API

Dotyczy: Zielony okrąg z białym symbolem znacznika wyboru. Najemcy usługi Workforce Biały okrąg z szarym symbolem X. Najemcy zewnętrzni (dowiedzieć się więcej)

Teraz, gdy masz token, możesz wywołać chroniony internetowy interfejs API.

Wywołaj API internetowe

Właściwości AuthenticationResult w MSAL.NET

Metody uzyskiwania tokenów zwracają wartość AuthenticationResult. W przypadku metod asynchronicznych Task<AuthenticationResult> zwraca.

W MSAL.NET AuthenticationResult uwidacznia:

  • AccessToken aby internetowy interfejs API uzyskiwał dostęp do zasobów. Ten parametr jest ciągiem, zwykle zakodowanym w formacie Base-64 JWT. Klient nigdy nie powinien szukać wewnątrz tokenu dostępu. Format nie jest gwarantowany, aby zachować stabilność i można go zaszyfrować dla zasobu. Pisanie kodu zależnego od zawartości tokenu dostępu po stronie klienta jest jednym z największych źródeł błędów i problemów z logiką klienta. Aby uzyskać więcej informacji, zobacz Tokeny dostępu.
  • IdToken dla użytkownika. Ten parametr jest zakodowany w formacie JWT. Aby uzyskać więcej informacji, zobacz Tokeny identyfikatorów.
  • ExpiresOn informuje o dacie i godzinie wygaśnięcia tokenu.
  • TenantId zawiera klienta, w którym został znaleziony użytkownik. W scenariuszach Microsoft Entra B2B dla użytkowników-gości identyfikator dzierżawy odnosi się do dzierżawy gościa, a nie dzierżawy głównej. Gdy token jest dostarczany dla użytkownika, AuthenticationResult zawiera również informacje o tym użytkowniku. W przypadku poufnych przepływów klienta, w których tokeny są żądane bez obecności użytkownika dla aplikacji, informacje o użytkowniku mają wartość null.
  • Element Scopes , dla którego wystawiono token.
  • Unikatowy identyfikator użytkownika.

IAccount

MSAL.NET definiuje pojęcie konta za pośrednictwem interfejsu IAccount . Ta zmiana powodująca niezgodność zapewnia właściwą semantyka. Ten sam użytkownik może mieć kilka kont w różnych katalogach firmy Microsoft Entra. Ponadto MSAL.NET zapewnia bardziej szczegółowe informacje w przypadku scenariuszy gościa, ponieważ podano dane dotyczące konta domowego. Na poniższym diagramie przedstawiono strukturę interfejsu IAccount .

Struktura interfejsu IAccount

Klasa AccountId identyfikuje konto w określonej dzierżawie z właściwościami przedstawionymi w poniższej tabeli.

Nieruchomość opis
TenantId Reprezentacja ciągu identyfikatora GUID, który jest identyfikatorem dzierżawcy, w którym znajduje się konto.
ObjectId Reprezentacja ciągu dla GUID, będącego identyfikatorem użytkownika właściciela konta w tenancie.
Identifier Unikatowy identyfikator konta. Identifier to łączenie ObjectId i TenantId oddzielane przecinkami. Nie są one zakodowane w formacie Base 64.

Interfejs IAccount reprezentuje informacje o pojedynczym koncie. Ten sam użytkownik może być obecny w różnych dzierżawach, co oznacza, że użytkownik może mieć wiele kont. Członkowie są pokazani w poniższej tabeli.

Własność opis
Username Ciąg zawierający wartość wyświetlaną w formacie UserPrincipalName (UPN), na przykład john.doe@contoso.com. Ten ciąg może mieć wartość null, w przeciwieństwie do parametrów HomeAccountId i HomeAccountId.Identifier, które nie będą mieć wartości null. Ta właściwość zastępuje właściwość DisplayableIdIUser w poprzednich wersjach MSAL.NET.
Environment Ciąg zawierający dostawcę tożsamości dla tego konta, na przykład login.microsoftonline.com. Ta właściwość zastępuje właściwość IdentityProvider w IUser, z tą różnicą, że IdentityProvider oprócz informacji o środowisku chmury zawiera również informacje o najemcy. W tym miejscu wartość jest jedynie gospodarzem.
HomeAccountId Identyfikator konta domowego użytkownika. Ta właściwość jednoznacznie identyfikuje użytkownika w tenantach Microsoft Entra.

Wywoływanie chronionego interfejsu API przy użyciu tokenu

Po zwróceniu AuthenticationResult przez bibliotekę MSAL w pliku result, dodaj go do nagłówka autoryzacji HTTP przed dokonaniem wywołania w celu uzyskania dostępu do chronionego interfejsu internetowego API.

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

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

Następne kroki

  • Dowiedz się więcej, tworząc aplikację jednostronicową React (SPA), która loguje użytkowników w poniższej serii samouczków wieloczęściowych.

  • Eksploracja przykładowego kodu na komputer stacjonarny dla platformy tożsamości Microsoft< c0 />