0

Мое приложение MVC защищено с помощью Forms Authentication. У меня есть глобальный фильтр, к которому применяется AuthorizeAttribute.Зафиксируйте одно действие с помощью проверки подлинности с использованием форм и базовой проверки подлинности

У меня есть контроллер под названием Development с действием под названием Report. Я могу получить доступ к этому штрафу, выполнив аутентификацию обычным способом и перейдя на http://localhost:8080/Development/Report. Если я не аутентифицирован, он перенаправляет меня на вход в систему с проверкой подлинности форм.

Я пытаюсь встроить эту страницу в приложение iOS, чтобы пользователь мог просматривать информацию без необходимости вручную аутентифицироваться. Чтобы запутать вещи, приложение iOS использует другую систему аутентификации, однако в нем содержится идентификатор устройства и уникальный токен, который также хранит мое приложение MVC.

То, что я пытаюсь сделать, - сделать действие отчета доступным как через проверку подлинности форм, так и из приложения iOS с использованием базовой аутентификации, где имя пользователя будет device ID, а пароль будет token. Очень важно, чтобы при аутентификации с помощью этого метода пользователь мог получить доступ только к действию Report. Каков наилучший способ реализовать это, сохраняя при этом все в безопасности?

Я думал о маркировке действия Report с атрибутом AllowAnonymous, а затем создавал пользовательскую аутентификацию только для этого действия. Это лучший способ?

ответ

0

Стратегии аутентификации - это то, что: стратегии. Они не предназначены для смешивания и согласования; вы выбираете тот, который наилучшим образом подходит для вашего приложения и пойдет с ним.

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

  1. Поместите два действия в отдельные проекты. Затем каждый проект может реализовать свою собственную стратегию аутентификации. Опять же, аналогичный код может быть учтен в классе утилиты, и в этом случае используется через библиотеку классов, которую могут ссылаться оба проекта.

  2. Создайте отдельное действие в том же проекте и не используйте на нем Authorize или используйте AllowAnonymous, если это часть разрешенного контроллера. Это существенно отключит стандартный аут для этого действия и не обеспечит защиту. Тем не менее, теперь вы освобождены, чтобы вручную выполнить свою «авторизацию». Вы можете либо проверить значения идентификатора устройства и токена непосредственно в действии, либо создать фильтр действий, который делает это. Выбор, который вы выбираете, зависит от того, как часто вам нужно это делать. Если это одноразовое действие, вы можете просто проверить непосредственно в действии, поскольку это будет быстрее и проще. Однако, если это одноразовое действие, вы все равно можете использовать фильтр действий, чтобы подготовиться, если его использование станет более распространенным.