5

Opracowałem aplikację internetową w ASP.NET MVC, której używamy wewnętrznie. Teraz chcemy udostępnić go za pośrednictwem naszego serwera w Internecie - aby ułatwić życie, gdy wykonujemy pracę na miejscu.Uwierzytelnianie systemu Windows ASP.NET MVC na podstawie uwierzytelniania formularzy

Idealnie chciałabym po prostu trzymać uwierzytelniania systemu Windows naprzeciw niego, tak że każdy z konta domeny może się zalogować.

Problemem jest to, że jestem już za pomocą uwierzytelniania formularzy w aplikacji.

Nie mamy żadnych ograniczeń hasła dla aplikacji, wystarczy wybrać użytkownika, do którego chcesz się zalogować, a następnie przesłać formularz. Po stronie serwera to po prostu to robi -

FormsAuthentication.SetAuthCookie(viewModel.Username, true); 

To sprawia, że ​​nazwa użytkownika dostępny we wszystkich kontrolerów i widoków przy użyciu obiektu użytkownika (User.Identity.Name).

Jednak ... gdy włączam uwierzytelnianie systemu Windows w IIS, aplikacja internetowa zaczyna myśleć, że user.identity.name to "ourdomain \ domainuser".

Chciałbym użyć uwierzytelniania formularzy w połączeniu z uwierzytelnianiem systemu Windows, ale nie można ich w żaden sposób zintegrować.

Czy istnieje prosty sposób, aby to osiągnąć?

+0

Cóż, nazwa _jest_ 'naszadomena \ domainuser'. Czego oczekiwałeś/chciałeś? –

Odpowiedz

6

Zespół ASP.NET oficjalnie nie obsługuje uwierzytelniania w trybie mieszanym w aplikacji. Jeśli przeszukujesz Internet, znajdziesz posty na blogu, jak to zrobić, ale pamiętaj, że zespół ASP.NET zniechęca ich. Powodem tego jest to, że jest to bardzo trudne do zrozumienia z punktu widzenia poprawności, i są trywialne ataki na taką konfigurację, która może umożliwić złośliwym klientom maskowanie się jako uwierzytelniony użytkownik.

+1

Ostatecznie zdecydowałem, że nie było to warte wysiłku. – NoPyGod

1

Nie można używać uwierzytelniania formularzy i uwierzytelniania systemu Windows w tym samym czasie w usługach IIS 7 i nowszych w trybie zintegrowanym. Dlatego też zdecydowanie zniechęciłbym to podejście. Można jednak użyć wbudowanego ActiveDirectoryMembershipProvider Class do uwierzytelnienia kont użytkowników systemu Windows za pomocą formularza i powiązać z tym swój login.

+0

W rzeczywistości można korzystać z uwierzytelniania systemu Windows i uwierzytelniania za pomocą formularzy w IIS7 +. Możesz użyć trybu klasycznego lub zintegrowanego. Trzeba tylko zrobić małe poprawki w tle dla zintegrowanego. Zobacz http://mvolo.com/blogs/serverside/archive/2008/02/11/IIS-7.0-Two_2D00_Level-Authentication-with-Forms-Authentication-and-Windows-Authentication.aspx –

+0

@MystereMan Właściwie twój link do podkręcania nadal nie używa obu jednocześnie, chociaż daje to wygląd użytkownikowi. Jesteś jednak poprawny, że nadal możesz wykonywać uwierzytelnianie dwustopniowe przy użyciu trybu klasycznego. Nie uważam jednak żadnego z nich za szczególnie dobre rozwiązanie. W przypadku rozwiązania mvolo.com wprowadzasz dużo dodatkowej złożoności, której można uniknąć. W trybie klasycznym podążasz za modelem, który najprawdopodobniej z czasem zniknie. Uważam, że lepiej najpierw odpowiednio zaprojektować rzeczy. – JamieSee

+0

@MystereMan Ten artykuł nie omawia mieszanego uwierzytelniania w kontekście MVC. –

Powiązane problemy