ClaimsAuthenticationManager и IAuthenticationFilter, а также проверка подлинности с помощью форм OWIN

.NET 4.5, MVC 5: ClaimsAuthenticationManager, IAuthenticationFilter, проверка подлинности с помощью форм OWIN и ClaimsPrincipals — все это новые функции проверки подлинности моего сайта. Я обнаружил отсутствие ясности во всех документах, в которых говорится, что это или это — правильный путь. Я даже не могу сказать, какие функции являются взаимоисключающими.

Этот документ говорит, что старый ASP.NET FormsAuthenticationModule не поддерживает утверждения, но новый OWIN не поддерживает файлы cookie. Тем не менее, я чувствую, что OWIN предназначен для продвижения вперед?

  1. Указано ли в дорожной карте продукта, какой метод следует использовать для веб-приложений?
  2. Является ли ClaimsAuthenticationManager синонимом проверки подлинности с помощью форм OWIN для веб-приложений?
  3. Являются ли ClaimsAuthenticationManager и глобальный IAuthenticationFilter взаимоисключающими?

Толчок в правильном направлении был бы оценен, мой мозг поджарен на этом.


person shannon    schedule 15.12.2013    source источник
comment
Хороший вопрос! До сих пор нет рецепта этого фруктового салата.+1   -  person Cristian E.    schedule 24.03.2014
comment
ИМХО, мы можем просто включить несколько режимов аутентификации с помощью OWIN. Все они основаны на утверждениях, мы можем подключить любой механизм аутентификации в качестве промежуточного программного обеспечения в конвейере OWIN. Однако для веб-приложений OWIN как платформа хостинга еще не является автономной, существует проект под названием Helios, который занимается этим. Я также жду следующих шагов, поскольку неясно, является ли OWIN правильным путем в будущем.   -  person Saravanan    schedule 16.04.2014
comment
Я не верю, что Microsoft когда-либо вернется к поддержке сеансов аутентификации без файлов cookie, поскольку они по своей сути менее безопасны. blogs.msdn.com/b/rickandy/archive/2012/03/23/   -  person 0leg    schedule 06.05.2014
comment
0leg: вам, возможно, придется подтвердить утверждение о том, что без файлов cookie по своей сути менее безопасно. По сути, вы говорите, что даже предполагаете идеальную реализацию, и я не могу придумать причину, по которой это было бы. Например, файлы cookie передаются с каждым запросом точно так же, как и другие параметры. Единственный риск, о котором я могу думать, заключается в том, что видеонаблюдение может разрешить воспроизведение, если весь ключевой материал присутствует в видимой области диалогового окна URL. Кроме того, требование файлов cookie имеет свои риски.   -  person shannon    schedule 11.07.2014


Ответы (2)


IAuthenticationFilter

Ранее в MVC IAuthorizationFilter было обычным местом для выполнения пользовательской аутентификации. Обоснование этого фильтра можно увидеть в сценарии, где приложение имеет две спецификации авторизации и только одну спецификацию аутентификации. Два варианта — добавление спецификации аутентификации в единую произвольную процедуру авторизации и создание всех трех этих спецификаций как отдельных IAuthorizationFilter — оба означают, что мы не гарантируем, что аутентификация произойдет первой.

IAuthenticationFilter изначально был добавлен в сборку MVC для решения этой проблемы, а затем перемещен для использования WebAPI. Хорошую статью по теме можно найти здесь; фильтры безопасности веб-API ASP.NET.

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

Аутентификация форм OWIN

Аутентификация форм OWIN — это запутанная фраза, которую я получил, прочитав статью с неправильным выражением (ссылка выше). Он представляет собой два независимых компонента решения:

Аспект «Формы» решения по-прежнему работает так же, как и ранее для проверки подлинности с помощью форм. Это следствие сбоя авторизации (например, из-за атрибута [Authorize] или элемента web.config <authorization>) в сочетании с перенаправлением на форму обработчика входа в систему. (Ваш выбор технологии определит, где вы настроите этот URL-адрес перенаправления. Для OWIN вы настроите его в CookieAuthenticationOptions.)

Аспект «OWIN» более актуален для путаницы, которая вызвала мой OP. Я не буду вдаваться в подробности об OWIN в целом, так как он предназначен для гораздо большего, чем просто аутентификация; полностью отделяя ASP.NET от IIS (через OWIN), это приводит к множеству плюсов и минусов, но MVC6 построен исключительно на OWIN, поэтому он здесь, чтобы остаться.

Что касается проверки подлинности, текущие модули, такие как внешние поставщики проверки подлинности ASP.NET (вход через социальные сети Facebook/Google), зависят от OWIN. Если вы пишете веб-аутентификацию ASP.NET "обычный" способ, которым вы будете пользоваться OWIN. Это преимущество аутентификации через OWIN.

Раньше вход в систему через социальные сети происходил более сложным образом, как перенаправление и MessageHandler под названием OAuthWebSecurity. OWIN предоставляет механизм как для перенаправления, так и для обработки обратного вызова поставщика проверки подлинности; прочитайте Создание пользовательского ПО промежуточного слоя OAuth для MVC 5 для получения дополнительной информации.

ClaimsAuthenticationManager

ClaimsAuthenticationManager на самом деле звучит не так. На самом деле это заключительный аспект процесса аутентификации, который уже был выполнен Windows Identity Foundation (WIF). Он предназначен для преобразования претензии, созданной в результате этого процесса, в соответствии с вашими индивидуальными потребностями. Например, список утверждений может включать имя пользователя, по которому вы можете найти в базе данных часто используемые роли или права и добавить их в список утверждений по соображениям производительности.

Он применим везде, где используется WIF. По сравнению с текущими веб-приложениями ASP.NET это будет означать OWIN.

Резюме

Ага. Вероятно, вы будете использовать OWIN, WIF и файлы cookie в своем современном веб-приложении ASP.NET. Просто то, что нужно принять, если вы используете «коробочные материалы», наряду со смертью WebForms и VB.NET в этом выпуске.

Итак, поскольку вы, вероятно, будете выполнять аутентификацию OWIN, вот отличная серия статей на эту тему; О чем этот Оуин?

person shannon    schedule 10.04.2015
comment
Я не в курсе. Почему в этом выпуске умер vb.net? - person masteroleary; 06.01.2016

OWIN — это более широкий масштаб минимизации стека для обслуживания веб-страниц, а минимизация стека — это новая волна будущего (например, node.js). Вы имеете в виду "программное обеспечение промежуточного слоя аутентификации OWIN", и Брок Аллен сформулировал это лучше всего здесь:

http://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer/

В .NET 4.5.1 для приложений ASP.NET весь базовый код, обрабатывающий «индивидуальные учетные записи пользователей» (а также шаблоны в Visual Studio 2013), является новым. Это означает, что для проверки подлинности на основе файлов cookie мы больше не используем проверку подлинности с помощью форм, а для внешних поставщиков удостоверений мы больше не используем DotNetOpenAuth.

Замена представляет собой платформу, называемую промежуточным программным обеспечением аутентификации OWIN, и она нацелена на OWIN API. Я не планирую здесь мотивировать OWIN (это хорошая статья на эту тему), но вкратце это API абстракции для веб-хостинга. Многие фреймворки, такие как Web API и SignalR (а также другие фреймворки, не принадлежащие Microsoft), закодированы в соответствии с этой абстракцией, поэтому им не требуется какой-либо конкретный веб-хост (например, IIS).

person Domin8urMind    schedule 06.05.2014
comment
Мне потребовался почти год, чтобы понять, что это на самом деле такой же ответ на мой вопрос, как и можно было ожидать, без большей ясности. К сожалению, это на самом деле не отвечает на вопрос, который был у меня в голове в то время. Недавно у меня возник связанный с этим вопрос (название stackoverflow.com/questions/29349316/ ) с просроченным вознаграждением, которое, наконец, заставило меня войти и понять эти компоненты. Я скоро добавлю ответ сюда, так как похоже, что другие тоже запутались в этой проблеме, возможно, так же, как и я. - person shannon; 10.04.2015