#asp.net #azure-active-directory #single-sign-on #openid-connect #multi-tenant
#asp.net #azure-active-directory #единый вход #OpenID-connect #многопользовательский
Вопрос:
У нас есть веб-приложение SaaS, размещенное у поставщика, отличного от Azure. В настоящее время пользователи получают к нему доступ через встроенные индивидуальные учетные записи пользователей, но мы внедряем многопользовательский единый вход через Azure AD (Open ID Connect). Цель здесь состоит в том, чтобы каждая организация (использующая Azure AD) подписалась на наше веб-приложение, чтобы позволить своим пользователям входить в систему.
Сейчас я пытаюсь понять, как фильтровать и сопоставлять пользователей из организаций с подпиской.
Из того, что я прочитал, идентификатор арендатора, по-видимому, является ключевым идентификатором для данной организации, и проверка эмитента токена — это место, с которого можно начать ограничение организаций, не подписанных. Похоже, что я могу получить идентификатор арендатора из заявки (http://schemas.microsoft.com/identity/claims/tenantid ), что означает, что я могу проверить клиента в коде. Таким образом, мой упрощенный подход заключался бы в сохранении списка подписанных идентификаторов клиентов и сопоставлении их во время процесса входа.
Итак, вот мои вопросы:
- Нужно ли мне, чтобы каждая организация предоставляла мне свой идентификатор клиента, чтобы я мог вести список для сопоставления в процессе входа?
- Если да, является ли идентификатор клиента какой-либо конфиденциальной информацией?
- Есть ли способ управлять списком подписанных организаций или идентификаторов клиентов на самом портале Azure AD, чтобы мне не нужно было фильтровать его в коде?
Заранее спасибо.
Ответ №1:
В Stackoverflow есть много вопросов, связанных с многопользовательской арендой в Azure AD, но ни один из них не касается управления идентификаторами клиентов. Для меня возникает очевидный вопрос, такой как «Отлично, у нас более 1000 клиентов, которые используют Azure AD и хотели бы использовать единый вход с нашим приложением. Я могу догадаться, что это за домены, но идентификатор клиента — это действительно уникальный идентификатор, который мне нужен для правильного управления доступом. Итак, как мне практически получить это от более чем 1000 клиентов и является ли эта информация конфиденциальной? »
Документация Microsoft всегда редактирует иллюстрации идентификатора клиента, поэтому вы можете подумать, что это конфиденциальная информация, но я обнаружил, что ее довольно легко получить публично. Все, что вам нужно сделать, это скопировать следующий URL-адрес в браузер, и вы увидите идентификатор клиента:
https://login.microsoftonline.com /[домен вашего арендатора]/.хорошо известный/OpenID-конфигурация
Итак, для всех, кому интересно, вот ответы на мои собственные вопросы:
- Нужно ли мне, чтобы каждая организация предоставляла мне свой идентификатор клиента, чтобы я мог вести список для сопоставления в процессе входа?Да, это лучше, потому что идентификатор арендатора уникален, но если вы уверены, что общедоступный домен арендатора — это тот же домен, который они используют в Azure AD, тогда вы можете получить идентификатор арендатора, используя метод, описанный выше.
- Если да, является ли идентификатор клиента какой-либо конфиденциальной информацией?Учитывая простой способ поиска идентификатора клиента, описанный выше, надеюсь, что нет!
- Есть ли способ управлять списком подписанных организаций или идентификаторов клиентов на самом портале Azure AD, чтобы мне не нужно было фильтровать его в коде?Да, есть. Это называется ограничениями для клиентов, и это идеальное решение, но вы можете использовать его, только если у вас есть лицензия Premium 1 в Azure AD, которая равна $$$ (см. https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/tenant-restrictions ).