Aplikacja desktopowa, która wywołuje webowe API: wywoływanie webowego API
Dotyczy: Najemcy usługi Workforce
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
.
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ść DisplayableId IUser 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 />