У меня есть веб-приложение, в котором я хочу разрешить членам моего клуба доступ к сайту, но я не хочу обрабатывать пароли/авторизацию, поэтому я хочу использовать Entra для аутентификации.
Я зарегистрировал приложение в своем каталоге и настроил его для приема учетных записей в любой учетной записи организации и личных учетных записях. Я также добавил роль в приложение и назначил эту роль своей личной учетной записи, так что я являюсь единственным пользователем с правами администратора.
Проблема, с которой я столкнулся, заключается в том, что в настоящее время доступ к сайту разрешен ЛЮБОМУ пользователю. Есть ли способ ограничить количество пользователей, которые могут получить доступ к сайту, без необходимости приглашать каждого пользователя присоединиться к моему каталогу, чтобы затем я мог добавить им роль. Я просто хочу, чтобы пользователи могли делать мне запросы (может быть, переходя на определенную веб-страницу или сообщая мне в WhatsApp свой адрес электронной почты), а затем я могу предоставить им доступ, не переходя туда и обратно.
Единственный способ, которым я могу это сделать, - это вручную поддерживать список адресов электронной почты в базе данных моего приложения и при каждом запросе страницы/ресурса проверять, есть ли в списке адрес электронной почты пользователя.
Есть ли лучший способ добиться этого?
Мое приложение — .Net8, работающее на Blazor (чистый WebAssembly) и имеющее отдельный WebApi, который имеет доступ к базе данных, предоставляющей все данные.
Это можно сделать, обновив параметр «Требуется назначение пользователя?». установите значение «Да» и выберите группу, которая должна иметь доступ к приложению.
@rukmini, проблема в том, как мне добавить людей в эту группу, не добавляя их предварительно в свой домен? Также у меня есть только базовая (бесплатная) входная плата, поэтому я не могу создавать группы (только роли)
Тогда нет никакого способа добиться этого, вам нужно добавить пользователей в свой арендатор.
Могу ли я опубликовать это как ответ?
Пожалуйста, сделайте Рукмини. Это тот ответ, которого я ожидал, но надеялся, что есть какая-то особенность, о которой я не знал 🙂
Обратите внимание: Чтобы добавить роль пользователю, пользователь должен быть добавлен в каталог.
Но для всего вышеперечисленного вам необходимо добавить пользователей в каталог.
Следовательно, невозможно добавить роль пользователям без добавления пользователей в каталог.
Создал группу безопасности Azure AD и добавил гостя в качестве участника:
Назначенная роль:
Для примера сгенерированный токен доступа:
https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
client_id:ClientID
scope:api://xxx/.default
grant_type:authorization_code
code:code
redirect_uri:https://jwt.ms
client_secret:ClientSecret
Когда я декодировал токен, роль пользователя присутствует:
Спасибо, Рукмини. В итоге я сохранил список пользователей в своей базе данных, который кэширую в памяти, и при каждом событии аутентификации (т. е. при каждом входящем запросе к моему API) я проверяю, находится ли пользователь в этом списке пользователей.
Это хороший подход :)
Чтобы ограничить количество пользователей, которые могут получить доступ к вашему веб-приложению, не приглашая каждого пользователя присоединиться к вашему каталогу, вы можете использовать группы Azure AD для управления доступом к вашему приложению. Вы можете создать группу в Azure AD и добавить в нее пользователей, которые должны иметь доступ к вашему приложению. Затем вы можете настроить свое приложение так, чтобы доступ разрешался только пользователям, которые являются членами этой группы.