ADFS 3.0 для веб-API собственного приложения, возвращающего несанкционированное разрешение, отклоненное на локальном IIS - PullRequest
0 голосов
/ 26 мая 2020
  • Клиент: собственное мобильное приложение
  • На стороне сервера: веб-API
  • Веб-сервер - IIS Onprem 2012R2.
  • ADFS 3.0 on Prem 2012R2.

Требование

  1. Аутентификация из собственного мобильного приложения с ADFS и получение токена носителя oauth2 - успешно.
  2. WebAPI - Подтверждение полученного токена носителя из мобильного приложения в заголовке «Авторизация» к ADFS и получите претензии.

Код

  1. Добавил это в автозагрузку. cs

    app.UseActiveDirectoryFederationServicesBearerAuthentication (новый ActiveDirectoryFederationServicesBearerAuthenticationOptions {MetadataEndpoint = ConfigurationManager.AppSettings ["ida: AdfsMetadataEndpoint};

// Значения для этих двух конфигураций были установлены в файле Web.config.

Добавлен атрибут «Авторизация» в Контроллер. (На данный момент это добавлено только для 1 контроллера, в конечном итоге мы планируем добавить его глобально).

Проблема . Когда клиентское приложение отправляет HTTP-запрос к этому API, включая заголовок «Authorization» с «Bearer», API отвечает 401 Unauthorized. {"message": "Авторизация была отклонена для этого запроса". }

Дополнительные примечания - Это отлично работает, когда веб-API был запущен локально с использованием IIS express или даже был развернут как приложение на IIS локально. Возможность получения значений утверждений.

Проблема возникает только тогда, когда api развернут как приложение на локальном веб-сервере windows 2012 R2.

На веб-сервере в диспетчере IIS для проверки подлинности приложения установлено значение «Анонимный», для идентификатора установлено значение «ApplicationPoolIdentity».

Поскольку для проверки подлинности для приложения API в IIS установлено значение «Анонимный», другие контроллеры API доступны без токена. Только этот контроллер возвращает 401, поскольку у нас есть атрибут «Авторизовать». Итак, очевидно, что атрибут Authorize ожидает чего-то и терпит неудачу.

Есть ли способ узнать, что не так?

Журналы сервера IIS указывают только на 401 неавторизованный запрос, и нет дополнительная информация.

Существуют ли какие-либо настройки, которые необходимо включить в IIS или в коде, чтобы специально вызывать авторизацию на основе токена носителя oauth2?

Ссылки Конфигурация доверяющих частей (веб-API) и клиента Adfs (мобильное собственное клиентское приложение) https://docs.microsoft.com/en-us/previous-versions/adfs-windows-server-2012R2/dn660967 (v = msdn.10)

...