Проверка подлинности ASP.NET MVC Windows поверх форм проверки подлинности - PullRequest
5 голосов
/ 03 марта 2012

Я разработал веб-приложение в ASP.NET MVC, которое мы используем внутри компании. Теперь мы хотим сделать его доступным через наш сервер в Интернете - чтобы облегчить жизнь, когда мы делаем работу на сайте.

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

Проблема в том, что я уже использую проверку подлинности с помощью форм в приложении.

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

    FormsAuthentication.SetAuthCookie(viewModel.Username, true);

Это делает имя пользователя доступным для всех контроллеров и представлений с использованием объекта User (user.identity.name).

Однако ... когда я включаю аутентификацию Windows в IIS, веб-приложение начинает думать, что user.identity.name - это "ourdomain \ domainuser".

Я хотел бы использовать проверку подлинности форм в сочетании с проверкой подлинности Windows, но не включать их каким-либо образом.

Есть ли простой способ добиться этого?

Ответы [ 2 ]

6 голосов
/ 04 марта 2012

Команда ASP.NET официально не поддерживает использование смешанной аутентификации в приложении.Если вы будете искать в Интернете, вы найдете в блоге сообщения о том, как это сделать, но учтите, что они не одобряются командой ASP.NET.Причина, по которой это не поощряется, заключается в том, что с точки зрения корректности очень трудно рассуждать, и существуют такие тривиальные атаки на такую ​​установку, которые могут позволить вредоносным клиентам маскироваться под аутентифицированного пользователя.

1 голос
/ 03 марта 2012

Нельзя использовать проверку подлинности с помощью форм и проверку подлинности Windows одновременно в IIS 7 и более поздних версиях в интегрированном режиме.Поэтому я бы очень не рекомендовал такой подход.Однако вы можете использовать встроенный ActiveDirectoryMembershipProvider Class для проверки подлинности учетных записей пользователей Windows с помощью формы и привязать к ней свой логин.

...