Смешанные режимы аутентификации (анонимный и Windows) в веб-приложении MVC - PullRequest
0 голосов
/ 13 февраля 2019

Я уже пробовал Использовать анонимную аутентификацию в MVC4 на одном контроллере, когда все приложение использует Windows Authenticaion и IIS смешанную анонимную аутентификацию и аутентификацию Windows , пока не получилосьМне нужно случиться.

У нас есть приложение MVC в нашей сети.Внутренне он должен использовать проверку подлинности Windows, и мы используем атрибут [AuthorizeByRole(param[] Role roles)] во многих наших представлениях / контроллерах.

Однако нам также необходимо, чтобы внешние пользователи имели доступ к приложению.У нас есть подрядчики и врачи, у которых нет учетных данных AD, плюс мобильное приложение использует анонимный бэкэнд API.

Что мне нужно сделать: Внутренние пользователи: автоматический вход в систему с использованием проверки подлинности Windows, приятный и простой. Внешние пользователи: вызов учетных данных Windows (что и происходит) - если они нажимают кнопку отмены, они становятся анонимным пользователем и могутпо-прежнему просматривайте приложение.

Что происходит сейчас: при нажатии кнопки отмены они перенаправляются на стандартную страницу asp.net 401, а не на страницу гостя.Кроме того, мобильный бэкэнд просто автоматически получает 401 и вообще не может использовать API.

Есть мысли?

дополнительная информация

ВотУ меня есть пример решения

В моем файле web.config у меня есть:

    <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
      <allow users="*" />
    </authorization>

В IIS у меня есть authentication settings

В моем контроллере API я поместил [AllowAnonymous] и на контроллер, и на мой метод GetKey. На моем телефоне я захожу в / api / Auth / GetKey, и у меня запрашиваются учетные данные AD.Когда я нажимаю «Отмена», я перенаправляюсь на страницу 401.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Если контроллер украшен атрибутом [Authorize], вы можете исключить отдельные методы внутри этого контроллера из авторизации, украсив их атрибутом [AllowAnonymous].

Подробнее об этом here .

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

0 голосов
/ 13 февраля 2019

Вы должны украшать действия контроллера индивидуально вместо всего контроллера.Используйте [Авторизовать] для действий, которые могут выполнять только пользователи AD, а других оставьте без декорации для анонимных пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...