5

Mam portal internetowy, w którym pracownicy mogą aktualizować swoje dane. Użytkownicy logują się tam za pomocą swoich poświadczeń Active Directory i ustawiłem plik cookie OWIN do uwierzytelnienia. Wszystko to odbywa się za pośrednictwem strony logowania MVC, nie ma nic wspólnego z uwierzytelnianiem systemu Windows w IIS.Podłączanie do systemu Windows Uwierzytelnianie poświadczeń podczas uwierzytelniania za pomocą LDAP

Teraz przeglądarka firmowa to Internet Explorer i jest skonfigurowana tak, aby automatycznie logować się do innych witryn uwierzytelniania systemu Windows, bez pytania o hasło. Dzieje się tak, gdy ludzie używają firmowego komputera i logują się na swoje konta domeny. A jeśli pracują z domu, monit Basic Authentication pyta o dane uwierzytelniające w tych systemach.

Teraz chciałbym zaimplementować automatyczne uwierzytelnianie, gdy użytkownicy są zalogowani na swoich kontach domeny Windows, z komputerów roboczych i przedstawiają stronę logowania, jeśli pracują z domu.

Wiem o negocjacjach 401 wyzwanie i uwierzytelnianie, ale nigdy inicjowane z tym przez ASP.Net. Widziałem rozwiązania, w których użytkownik jest przekierowywany do strony, na której IIS jest skonfigurowany do uwierzytelniania systemu Windows, ale chcę to zrobić bez konfiguracji IIS. Pamiętam też, że widziałem, jak ktoś wspomniał o rozwiązaniu, w którym strona jest ładowana do , gdzie sprawdzane jest podstawowe uwierzytelnianie i czy uwierzytelnianie przez to się udaje, a następnie przekierować już uwierzytelnionego użytkownika na stronę docelową.

Tak więc moje pytanie sprowadza się do: Czy istnieje sposób na zainicjowanie (i ukończenie) wyzwania 401 dla podstawowego uwierzytelnienia dla określonego działania kontrolera? A następnie podłączyć do usługi Controller.User.Identity, aby ustawić plik cookie OWIN?

UPD: Według opinii: Chcę Kerberos (Windows Authentication) do pracy, gdy użytkownicy są w sieci domeny, więc są one automatycznie zalogowany. Ale nie chcę, aby uwierzytelnianie systemu Windows miało miejsce, gdy użytkownicy nie są w sieci domenowej, zamiast tego potrzebuję niestandardowej strony logowania z opcjami resetowania hasła i rejestrowania (z uwzględnieniem walidacji pracowników).

+0

Użyj VPN i pozwól użytkownikom wejść do sieci korporacyjnej. Znajdą KDC i uwierzytelnią się przez Kerberos. –

+0

@ Michael-O VPN nie wchodzi w grę. Użytkownicy już używają serwera terminali (RDP) do logowania się do swojej domeny. – trailmax

+0

, jeśli są już w sieci, wystąpił problem z konfiguracją sieci. Weź pod uwagę, że natywne rozwiązania Micrsoft nigdy nie używają powiązania LDAP, ale Kerberos/NTLM itp. –

Odpowiedz

1

Jeśli czytam swoje pytanie poprawnie, może chcesz zrobić coś jak następuje ...

1) Utwórz 2 filtry pozwolenia: jedno, które używają AD i jedno używające BasicAuthentication

2) Put je, abyś chciał. W twoim przypadku, jeśli dobrze zrozumiałem, najpierw chcesz sprawdzić AD. Jeśli uwierzytelnianie AD zakończy się niepowodzeniem, przełączysz awarię na tryb podstawowy (tam realizujesz wyzwanie 401). aby upewnić się, filtry są wykonywane w kolejności chcesz zwrócić uwagę na obciążenie nieruchomości na filtrach: https://msdn.microsoft.com/en-us/library/gg401854%28v=vs.98%29.aspx

3) Niezależnie filtr skończyć się w (AD lub uwierzytelniania podstawowego) można ustawić OWIN ciasteczko stamtąd

Nadzieja, która pomaga.

+0

Problem dotyczy implementacji filtra BasicAuthentication. Jak ty to robisz? – trailmax

+0

Czy możesz być nieco bardziej konkretny, proszę? Czym dokładnie jest z tym problem? Nie masz ogólnego pomysłu, jak to zrobić lub czegoś konkretnego na ten temat? –

+0

Oto jeden przykład, jak można to zrobić: http://www.ryadel.com/en/http-basic-authentication-asp-net-mvc-using-custom-actionfilter/ –