Поделиться через


Настольное приложение, которое обращается к веб-API: вызов веб-API

применяется к: зеленый круг с символом белой флажки. арендаторы рабочей силы Белый круг с серым символом X. внешние клиенты (подробнее)

Теперь у вас есть токен и вы можете вызвать защищенный веб-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 представлена на следующей схеме.

Структура интерфейса 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 с настольными примерами кода