Аутентификация Azure Active Directory из собственного приложения без необходимости входа пользователя

Вот что я пытаюсь сделать: собственное приложение, которое будет запускаться в системе, в которой я не могу привлечь пользователя для входа в систему, но я хочу получить доступ к веб-службам, защищенным AAD, с использованием токена носителя. Есть два варианта -

  1. Используйте поток на основе сертификата (которого я хочу избежать по нескольким причинам, характерным для моего проекта)
  2. Используйте секрет клиента

Проблема, с которой я столкнулся: когда я вызываю командуAcquiretokenasync с использованием идентификатора клиента собственного приложения AAD и учетных данных клиента, созданных с использованием секрета клиента веб-приложения AAD (на которое собственное приложение имеет разрешения), я получаю следующую ошибку:

{"AADSTS70002: Ошибка проверки учетных данных. AADSTS50012: Предоставлен неверный секрет клиента.\r\nИдентификатор трассировки: f52cc954-2674-47ee-9a7b-094451b05c7c\r\nИдентификатор корреляции: 1ba8ac64-cc4a-4ff7-83d6-a333504459d6\r\nTimestamp : 2016-08-20 01:45:08Z"}

Итак, учитывая, что секрет клиента действительно правильный (в чем я уверен), в чем может быть реальная проблема, стоящая за этой ошибкой?

Заранее спасибо за вашу помощь :)


person Hari Durairaj    schedule 20.08.2016    source источник


Ответы (2)


Вы не можете использовать собственный идентификатор клиента приложения и учетные данные клиента веб-приложения (секрет клиента). Собственное приложение не имеет связанного секрета, он есть только у веб-приложения. Предполагается, что нативные приложения работают на небезопасных хостах, таких как настольные компьютеры и смартфоны. Секреты клиентов станут слишком хрупкими.

Для получения дополнительной информации о том, как аутентифицировать собственное приложение и получить доступ к ресурсам, ознакомьтесь со следующими статьями:

person fernacolo    schedule 12.09.2016

Существует два типа приложений, которые мы можем зарегистрировать в Azure Active Directory.

  1. Выберите Native для клиентских приложений, установленных локально на устройстве. Этот параметр используется для общедоступных собственных клиентов OAuth.
  2. Выберите Веб-приложение/API для клиентских приложений и приложений ресурсов/API, установленных на защищенном сервере. Этот параметр используется для конфиденциальных веб-клиентов OAuth и общедоступных клиентов на основе агента пользователя. Одно и то же приложение может предоставлять как клиент, так и ресурс/API.

Собственные приложения — это общедоступные клиенты на языке OAuth2. Эти приложения предназначены для работы на устройстве, и им не доверяют для сохранения секрета, поэтому их запись в каталоге не имеет соответствующего свойства. Без секрета невозможно подтвердить подлинность приложения, поэтому такие приложения не могут получить разрешения на уровне приложения, и интерфейс портала отражает это. И наоборот, веб-приложения, опять же на языке OAuth2, являются конфиденциальными клиентами. Они могут получить делегированные токены для своих пользователей, но они также могут использовать учетные данные клиента, чтобы получить токены от себя. Собственные приложения могут получать токены для пользователя с помощью предоставления авторизации OAuth2.

См. эту статью далее.

person Chamila Maddumage    schedule 21.02.2019