Идентификация и фильтрация клиентов с помощью многопользовательского единого входа Azure AD (Open ID Connect)

#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 ), что означает, что я могу проверить клиента в коде. Таким образом, мой упрощенный подход заключался бы в сохранении списка подписанных идентификаторов клиентов и сопоставлении их во время процесса входа.

Итак, вот мои вопросы:

  1. Нужно ли мне, чтобы каждая организация предоставляла мне свой идентификатор клиента, чтобы я мог вести список для сопоставления в процессе входа?
  2. Если да, является ли идентификатор клиента какой-либо конфиденциальной информацией?
  3. Есть ли способ управлять списком подписанных организаций или идентификаторов клиентов на самом портале Azure AD, чтобы мне не нужно было фильтровать его в коде?

Заранее спасибо.

Ответ №1:

В Stackoverflow есть много вопросов, связанных с многопользовательской арендой в Azure AD, но ни один из них не касается управления идентификаторами клиентов. Для меня возникает очевидный вопрос, такой как «Отлично, у нас более 1000 клиентов, которые используют Azure AD и хотели бы использовать единый вход с нашим приложением. Я могу догадаться, что это за домены, но идентификатор клиента — это действительно уникальный идентификатор, который мне нужен для правильного управления доступом. Итак, как мне практически получить это от более чем 1000 клиентов и является ли эта информация конфиденциальной? »

Документация Microsoft всегда редактирует иллюстрации идентификатора клиента, поэтому вы можете подумать, что это конфиденциальная информация, но я обнаружил, что ее довольно легко получить публично. Все, что вам нужно сделать, это скопировать следующий URL-адрес в браузер, и вы увидите идентификатор клиента:

https://login.microsoftonline.com /[домен вашего арендатора]/.хорошо известный/OpenID-конфигурация

Итак, для всех, кому интересно, вот ответы на мои собственные вопросы:

  1. Нужно ли мне, чтобы каждая организация предоставляла мне свой идентификатор клиента, чтобы я мог вести список для сопоставления в процессе входа?Да, это лучше, потому что идентификатор арендатора уникален, но если вы уверены, что общедоступный домен арендатора — это тот же домен, который они используют в Azure AD, тогда вы можете получить идентификатор арендатора, используя метод, описанный выше.
  2. Если да, является ли идентификатор клиента какой-либо конфиденциальной информацией?Учитывая простой способ поиска идентификатора клиента, описанный выше, надеюсь, что нет!
  3. Есть ли способ управлять списком подписанных организаций или идентификаторов клиентов на самом портале Azure AD, чтобы мне не нужно было фильтровать его в коде?Да, есть. Это называется ограничениями для клиентов, и это идеальное решение, но вы можете использовать его, только если у вас есть лицензия Premium 1 в Azure AD, которая равна $$$ (см. https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/tenant-restrictions ).