Для нескольких приложений. мы используем AAD B2C для нашей системы аутентификации. Мы выбрали индивидуальную политику. Одна из причин этого заключается в том, что мы хотим разрешить разным группам пользователей доступ к разным приложениям следующим образом:
- суперпользователи могут получить доступ ко всем приложениям, включая нашу CMS
- администраторы продукта могут получить доступ к CMS, ориентированной на клиента, и к конечному продукту
- пользователи продукта могут получить доступ к конечному продукту
Для этого у нас есть политики:
- B2C_1A_xxx_cms
- B2C_1a_xxx_product
- B2C_1A_xxx_customercms
Во всех политиках мы выполняем вызов API для внутренней аутентификации API, который проверяет членство пользователя в группах через MS Graph API. Проблема в том, что эти политики, похоже, могут использоваться взаимозаменяемо:
https://{tenant}.b2clogin.com/{tenant}/b2c_1a_xxx_cms/oauth2/v2.0/authorize?response_type=id_token&scope={scope}%20openid%20profile&client_id={client_id}&redirect_uri={redirect_uri}&nonce={nonce}&client_info=1&x-client-SKU=MSAL.JS&x-client-Ver=1.4.4&client-request-id={client-request-id}&response_mode=fragment
В указанном выше URL-адресе пользователи могут получить доступ к CMS, заменив b2c_1a_xxx_cms на b2c_1a_xxx_product, тем самым минуя групповую проверку для конкретного приложения.
Исходная реализация наших политик основана на этом руководстве: https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-get-started
Как мы можем настроить эти политики таким образом, чтобы изменение URL-адреса и попытка входа в систему были невозможны?