Настольное приложение, которое обращается к веб-API: вызов веб-API
применяется к: арендаторы рабочей силы
внешние клиенты (подробнее)
Теперь у вас есть токен и вы можете вызвать защищенный веб-API.
Вызов веб-API
Свойства объекта AuthenticationResult в MSAL.NET
Методы получения токенов возвращают объект AuthenticationResult
. Для асинхронных методов возвращается Task<AuthenticationResult>
.
MSAL.NET AuthenticationResult
предоставляет следующие параметры:
-
AccessToken
для веб-API для доступа к ресурсам. Это строковый параметр, который обычно представляет собой маркер JWT в кодировке Base-64. Клиент никогда не должен считывать содержимое маркера доступа. Стабильность формата не гарантируется, а он может быть зашифрован для ресурса. Написание кода, который зависит от содержимого маркера доступа на стороне клиента, является одним из основных источников для ошибок и сбоев в логике клиента. Дополнительные сведения см. в разделе Маркеры доступа. -
IdToken
— предназначается для пользователя. Этот параметр является зашифрованным маркером JWT. Дополнительные сведения см. в разделе Маркеры идентификации. -
ExpiresOn
— сообщает дату и время истечения срока действия маркера. -
TenantId
— содержит сведения о клиенте, в котором был найден пользователь. Для гостевых пользователей в сценариях Microsoft Entra B2B идентификатор клиента является гостевым клиентом, а не уникальным клиентом. При передаче маркера для пользователя в объектеAuthenticationResult
также содержится информация об этом пользователе. Для потоков конфиденциальных клиентов, где токены запрашиваются для приложения без участия пользователя, информация о пользователе будет отсутствовать. -
Scopes
для которого был выдан токен. - Уникальный идентификатор пользователя.
IAccount
В MSAL.NET понятие учетной записи определяется через интерфейс IAccount
. Такое радикальное изменение обеспечивает правильную семантику. Один и тот же пользователь может иметь несколько учетных записей в разных каталогах Microsoft Entra. Также MSAL.NET предоставляет более подробные сведения в сценариях с гостевым входом благодаря добавлению информации о домашней учетной записи.
Структура интерфейса IAccount
представлена на следующей схеме.
Класс AccountId
определяет учетную запись в конкретном клиенте с помощью свойств, приведенных в следующей таблице.
Свойство | Описание |
---|---|
TenantId |
Строковое представление идентификатора GUID, которое является идентификатором клиента, где находится учетная запись. |
ObjectId |
Строковое представление идентификатора GUID, являющееся идентификатором пользователя, которому принадлежит учетная запись в клиенте. |
Identifier |
Уникальный идентификатор для учетной записи.
Identifier является объединением ObjectId и TenantId , разделенных запятой. Они не закодированы с помощью Base 64. |
Интерфейс IAccount
предоставляет сведения об одной учетной записи. Один и тот же пользователь может быть в разных арендаторах, это означает, что у пользователя может быть несколько учетных записей. Члены показаны в следующей таблице.
Свойство | Описание |
---|---|
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. |
Используйте маркер для вызова защищенного API
После того как 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, которое выполняет вход пользователей, в следующей серии руководств.
Изучение платформы удостоверений Microsoft с настольными примерами кода