Классическое приложение, которое обращается к веб-API (вызов веб-API)
Теперь у вас есть токен и вы можете вызвать защищенный веб-API.
Для получения маркеров методы возвращают объект AuthenticationResult
. Для асинхронных методов возвращается Task<AuthenticationResult>
.
MSAL.NET AuthenticationResult
предоставляет следующие параметры:
AccessToken
— обеспечивает для веб-API доступ к ресурсам. Это строковый параметр, который обычно представляет собой маркер JWT в кодировке Base-64. Клиент никогда не должен считывать содержимое маркера доступа. Стабильность формата не гарантируется, и маркер может быть зашифрован для конкретного ресурса. Написание кода, который зависит от содержимого маркера доступа на стороне клиента, является одним из основных источников для ошибок и сбоев в логике клиента. Дополнительные сведения см. в разделе Маркеры доступа.IdToken
— предназначается для пользователей. Этот параметр является зашифрованным маркером JWT. Дополнительные сведения см. в разделе Маркеры идентификации.ExpiresOn
— сообщает дату и время истечения срока действия маркера.TenantId
— содержит сведения о клиенте, в котором был найден пользователь. Для гостевых пользователей в сценариях Microsoft Entra B2B идентификатор клиента является гостевым клиентом, а не уникальным клиентом. При предоставлении маркера для пользователя в объектеAuthenticationResult
также содержится информация об этом пользователе. Для потоков конфиденциальных клиентов, где маркеры запрашиваются без пользователя для приложения, эта информация о пользователе имеет значение NULL.Scopes
— обозначает области, для которых выдан маркер.- Уникальный идентификатор пользователя.
В MSAL.NET понятие учетной записи определяется через интерфейс IAccount
. Такое радикальное изменение обеспечивает правильную семантику. Один и тот же пользователь может иметь несколько учетных записей в разных каталогах Microsoft Entra. Также MSAL.NET предоставляет более подробные сведения в сценариях с гостевым входом благодаря добавлению информации о домашней учетной записи.
Структура интерфейса IAccount
представлена на следующей схеме.
Класс AccountId
определяет учетную запись в конкретном клиенте с помощью свойств, приведенных в следующей таблице.
Свойство | Description |
---|---|
TenantId |
Строковое представление идентификатора GUID, которое является идентификатором клиента, где находится учетная запись. |
ObjectId |
Строковое представление идентификатора GUID, являющееся идентификатором пользователя, которому принадлежит учетная запись в клиенте. |
Identifier |
Уникальный идентификатор для учетной записи. Identifier является объединением ObjectId и TenantId , разделенных запятой. Для этих значений шифрование Base 64 не применяется. |
Интерфейс IAccount
предоставляет сведения об одной учетной записи. Один и тот же пользователь может быть в разных клиентах, это означает, что у пользователя может быть несколько учетных записей. Компоненты этого интерфейса представлены в следующей таблице.
Свойство | Description |
---|---|
Username |
Строка с отображаемым значением в формате UserPrincipalName (UPN), например john.doe@contoso.com. Эта строка может иметь значение NULL, в отличие от свойств HomeAccountId и HomeAccountId.Identifier, у которых не может быть значения NULL. Это свойство заменяет свойство DisplayableId интерфейса IUser из предыдущих версий MSAL.NET. |
Environment |
Строка с поставщиком удостоверений для этой учетной записи, например login.microsoftonline.com . Это свойство заменяет свойство IdentityProvider интерфейса IUser , за исключением того, что в свойстве IdentityProvider также содержались сведения о клиенте в дополнение к информации об облачной среде. Содержащееся здесь значение определяет только узел. |
HomeAccountId |
Идентификатор домашней учетной записи пользователя. Это свойство однозначно идентифицирует пользователя в клиентах Microsoft Entra. |
После того как AuthenticationResult
возвращается MSAL в переменную result
, ее нужно добавить в HTTP-заголовок авторизации перед тем, как делать вызов для доступа к защищенному веб-API.
httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
// Call the web API.
HttpResponseMessage response = await _httpClient.GetAsync(apiUri);
...
Дополнительные сведения см. в статье о создании одностраничного приложения React, которое входит в систему пользователей в следующей серии руководств по нескольким частьм.
Изучение примеров кода платформа удостоверений Майкрософт настольном компьютере