Как я могу ограничить атрибут Authorize только определенными пользователями внутри моего asp. net core mvc веб-приложения - PullRequest
0 голосов
/ 07 мая 2020

Я создал новое базовое веб-приложение asp. net MVC и настроил его для использования рабочих или учебных учетных записей с несколькими организациями, как показано ниже: - enter image description here

теперь, если я добавлю атрибут [Authorize] к методу действия, пользователю будет предложено сначала войти в систему. но мой вопрос в том, как я могу разрешить доступ к методу действия только определенным пользователям?

Второй вопрос , как я могу запретить пользователям входить в приложение, если они не находятся в заранее определенном списке ?

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Чтобы ограничить доступ пользователей / групп к вашему приложению, вы можете попробовать следующие решения:

Ограничить пользователей / группы, используя Azure AD:

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

  1. Войдите на портал Azure с учетной записью администратора или как владелец приложения.

  2. Выберите Azure Active Directory. В левом меню навигации выберите Enterprise applications.

  3. Выберите приложение из списка. Если вы не видите приложение, начните вводить его имя в поле поиска. Или используйте элементы управления фильтром, чтобы выбрать тип приложения, статус или видимость, а затем выберите Применить.

  4. В левом меню навигации выберите Properties.

  5. Убедитесь, что переключатель User assignment required? установлен в положение «Да».

Тогда только назначенные пользователи / группы смогут получить доступ к приложению. Вы можете назначать пользователей или группы приложению через портал Azure или Powershell.

Ограничение пользователей / групп в приложении:

Метод 1: заявки на группы

Вы можете использовать groups claims в Azure AD, настроить свое приложение на портале azure для получения групповых заявлений, отредактировав манифест:

{
  ...
  "errorUrl": null,
  "groupMembershipClaims": "SecurityGroup",
  ...
}

Идентификационный токен, выданный из Azure AD будет включать список идентификаторов групп текущего пользователя в заявку groups, затем в asp. net основное приложение, вы можете ограничить доступ с помощью:

services.AddControllersWithViews(options =>
    {
        var policy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser().RequireClaim("groups", "YourGroupID")
            .Build();
        options.Filters.Add(new AuthorizeFilter(policy));
    });

Примечание. Из документа :

Если пользователь входит в группы, превышающие установленный предел превышения (150 для токенов SAML, 200 для токенов JWT), то платформа Microsoft Identity Platform не отправляет утверждения групп в токен. Вместо этого он включает в токен заявление о превышении лимита, которое указывает приложению запрашивать API Graph для получения членства в группе.

Метод 2: роли приложения

Вы можете добавьте роли приложения в ваше приложение , назначьте роли пользователям / группам, чтобы роли включались в токен после входа в систему и согласия пользователя, ваше приложение могло использовать политику для ограничения доступа на основе утверждения ролей.

0 голосов
/ 07 мая 2020

Вы должны добавить Роли в атрибут авторизации. Например, вы можете определить роли, такие как Admin, User, Guest, в своем приложении и добавить атрибут авторизации, подобный этому [Authorize (Roles = "Admin")].

Теперь только администратор сможет получить доступ к этому ресурсу после аутентификации пользователь или гость не смогут пройти этот шаг.

, вы можете перейти по этой ссылке для получения дополнительной информации. Вы также можете использовать утверждения и политики для авторизации.

...