Hybryda uwierzytelniania Windows i uwierzytelniania formularzy w ASP.NET MVC 4

Mamy aplikację intranetową ASP.NET MVC 4. Używamy uwierzytelniania systemu Windows i ten aspekt działa dobrze. Poświadczenia użytkownika są używane i możemy uzyskać dostęp do tych danych z aplikacji internetowej.

Tym, czego naprawdę chcemy, jest jakiś tryb hybrydowy. Chcemy uzyskać poświadczenia użytkownika z przeglądarki, ale chcemy również sprawdzić, czy użytkownik znajduje się w bazie danych naszej aplikacji. Jeśli użytkownik znajduje się w bazie danych, może po prostu kontynuować. Jeśli nie, chcemy przekierować je na stronę z prośbą o alternatywne poświadczenia. Co teraz robię, toGlobal.asax.cs, MamApplication_AuthenticateRequest i sprawdzam, czy użytkownik jest uwierzytelniony. Jeśli tak, a informacje o ich plikach cookie nie odzwierciedlają faktu, że są zalogowani do systemu, loguję się i konfiguruję pliki cookie z informacjami o użytkowniku. Jeśli nie są uwierzytelnione, przekierowuję je na stronę logowania. Nie możemy korzystać z ról AD z powodów związanych z polityką firmy, dlatego musimy użyć bazy danych do dodatkowego uwierzytelnienia.

ZgadujęApplication_AuthenticateRequest nie jest to miejsce, aby to zrobić, ale może tak jest. Ale zasadniczo potrzebujemy miejsca do filtrowania żądań uwierzytelnienia. Ale dodatkowo ta implementacja prowadzi mnie do innego problemu:

W naszej aplikacji mamy pewne adresy URL, które umożliwiają anonimowy dostęp. Dodałem<location> znaczniki do web.config dla tych. Problem polega na tym, że w przypadku anonimowych połączeń dochodzi do tegoApplication_AuthenticateRequest i próbuje zalogować użytkownika do bazy danych. Teraz mogę dodać kod doApplication_AuthenticateRequest do obsługi tych adresów URL i to jest obecnie mój plan, ale jeśli piszę iApplication_AuthenticateRequest czy nie jest to miejsce, w którym to robię, to wolałbym to teraz rozgryźć niż później.

questionAnswers(1)

yourAnswerToTheQuestion