Приложение ASP.NET MVC + Angular с аутентификацией только по токену и без файла cookie

У меня есть приложение, созданное предыдущим разработчиком, которое использует промежуточное ПО OWIN с токенами cookie и OAuth. Это приложение ASP.NET MVC, которое использует только представления/контроллеры MVC для входа в систему и домашнее представление, в котором размещено совершенно отдельное приложение Angular.

Токены носителя используются для аутентификации в API после полной загрузки приложения, но файл cookie аутентификации используется для загрузки исходного домашнего представления MVC каркаса, содержащего приложение ng.

Моя проблема связана с бизнес-требованием, позволяющим пользователям входить в систему с уникальными учетными данными для каждой вкладки браузера, поэтому файлы cookie нельзя использовать, а просто использовать токен на основе сеанса, чтобы разделить их.

Может ли приложение ASP.NET MVC принципиально работать без аутентификации на основе файлов cookie?

Если я смогу удалить аутентификацию cookie и полагаться только на токены, это решит мою проблему, связанную с необходимостью переписать внешний фрейм angular исключительно в коде angular и повторно реализовать путь входа в систему.

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


person dodegaard    schedule 27.10.2016    source источник
comment
Избавьтесь от части MVC и сделайте ее приложением только для JS.   -  person leastprivilege    schedule 28.10.2016


Ответы (1)


Я думаю, что вы хотите сделать здесь следующее:

  1. Добавьте [AllowAnonymous] на домашний контроллер
  2. В приложении, которое загружается с домашней страницы, используйте пакет на стороне браузера, такой как oidc-client, для входа пользователя в систему. Это вернет идентификатор и токен доступа.
  3. Вставьте токен доступа в запросы службы REST.
  4. Используйте UseIdentityServerBearerTokenAuthentication для фильтрации и аутентификации токенов-носителей на сервере WEB API.
person GlennSills    schedule 08.11.2016