Проблема с многопользовательским приложением единого входа в Azure AD или поставщиком утверждений AD FS

Немного предыстории:

Моя компания (действующая как поставщик услуг) в настоящее время поддерживает единый вход с нашими федеративными партнерами (IdP) через AD FS 2.0. Каждый партнер настраивается как поставщик утверждений, и создаются правила преобразования входящих заявлений, которые будут отправляться в наше веб-приложение.

После аутентификации токен, содержащий утверждения, отправляется в нашу конечную точку STS (например, https://sts.companyname.ca/adfs/ls), где утверждения преобразуются и отправляются на URL-адрес нашего веб-приложения (например, https://companyname.ca/externalsignin.aspx) и обрабатывается промежуточным программным обеспечением OWIN, которое предшествует поиску / созданию учетной записи.

Все это прекрасно работает. Теперь перед нами стоит задача интегрировать единый вход Azure AD в систему, чтобы упростить процесс адаптации.

Я дошел до создания нового каталога в Azure и создания в нем нового приложения. Я пометил приложение как мультитенантное и установил URL-адрес ответа на "https://sts.companyname.ca/adfs/ls ". В клиенте AD FS 2.0 на нашем сервере я создал нового поставщика утверждений под названием «AzureAD» и импортировал URL-адрес метаданных из раздела конечных точек приложения на консоли Azure. Тестирование входа в систему с помощью электронной почты от нашего арендатора сработало отлично. Проблема заключается в том, что при тестировании с использованием электронной почты организации от другого клиента проверка подлинности завершается ошибкой с сообщением о неверном запросе:

Изображение неверного запроса

После некоторого исследования выяснилось, что это произошло из-за того, что форма входа была создана для login.microsoftonline.com/tenantid, тогда как login.microsoftonline.com/common следует использовать для мультитенантных приложений. Поэтому я повторно импортировал метаданные из https://login.microsoftonline.com/common/federationmetadata/2007-06/federationmetadata.xml и обновлен. введите здесь описание изображения

Теперь я действительно вижу запрос на согласие, когда вхожу в систему с другой учетной записью организации, но после аутентификации сообщение на sts.companyname.ca/adfs/ls не выполняется, поскольку токен был подписан для "sts.windows.net/0000-" 000000-000000-0000 ", но поставщик утверждений в AD FS определяется заполнителем sts.windows.net/{tenantid}. введите описание изображения здесь

Я понятия не имею, как заставить эту работу работать только с одним поставщиком утверждений Azure с шаблонной конечной точкой (также я могу добавить только 1 поставщика утверждений Azure, поскольку все они используют одни и те же сертификаты подписи).

Любая помощь в преодолении этого препятствия будет принята с благодарностью.


person jeramie    schedule 07.07.2016    source источник


Ответы (1)


это не сработает из-за несоответствия импеданса того, как Azure AD выдает токен (тот же ключ подписи, но разные издатели клиента) с ограничением в ADFS, которое не допускает нескольких доверительных отношений поставщика утверждений с одним и тем же ключом подписи.

Это можно сделать одним из следующих

  1. Используйте Azure AD B2B, чтобы пригласить гостей из одного или нескольких клиентов Azure AD в свой клиент Azure AD, а затем подключите ADFS к своему клиенту как одно доверие CP.
  2. В ADFS 2016 у нас также был запрос на обработку каждого клиента Azure AD как отдельного доверия CP с разными политиками / правилами принятия / дополнения утверждений. С этой целью мы теперь позволяем моделировать каждого клиента Azure AD как уникальное доверие CP.

Надеюсь это ответит на твой вопрос.

Спасибо // Сэм (@MrADFS)

person SamuelD MSFT    schedule 08.07.2016
comment
Спасибо. Похоже, что Azure AD B2B - лучший вариант. Однако кажется, что процесс приглашения внешних пользователей зависит от импорта файла csv с максимальной длиной 2000 строк. Требует ли это, чтобы мы приглашали нового пользователя каждый раз, когда он добавляется в партнерский клиент, чтобы он мог получить доступ к нашим ресурсам? Нашими партнерами являются школьные советы, у некоторых из которых более 100 000 пользователей, которым будет требоваться доступ с постоянным добавлением новых учеников. - person jeramie; 11.07.2016
comment
В итоге я написал дополнительный код для использования OpenIdConnectAuthentication с дополнительным поставщиком вместо того, чтобы делать это через ADFS. Ваше здоровье! - person jeramie; 12.07.2016