Mam kilka stron internetowych do pracy, które żyją poza firmową siecią LAN - a zatem poza zasięgiem bezpośredniej komunikacji Active Directory (A/D) - ale dla których chciałbym móc uwierzytelniać użytkowników przeciwko firmowym serwerom A/D, a także wtórnemu repozytorium użytkowników/ról ***. Pseudo kod dla tego działania jest następujący:Jak uwierzytelnić się w usłudze Active Directory z kodu usługi sieci ASP.NET?
- Użytkownik wprowadza nazwę użytkownika/hasło w formularzu logowania zewnętrznej strony internetowej.
- Zewnętrzna strona internetowa wywołuje serwis internetowy w sieci LAN, który może rozmawiać z A/D.
- Usługa sprawdza, czy nazwa użytkownika/hasło może być uwierzytelnione, odwzorowane na użytkownika w A/D. Jeśli tak, zwróć listę ról układu A/D, których członkiem jest użytkownik.
- Jeśli nazwa użytkownika/hasło nie może zostać znaleziona/uwierzytelniona w A/D, sprawdź bazę danych/usługę, która jest wtórnym repozytorium informacji o użytkowniku/roli. Zwróć wszystkie role, których używa, jeśli uwierzytelniają się na wtórnym serwerze auth.
- Powoduje wyświetlenie listy ról użytkownika na wywołującej stronie internetowej.
*** Chodzi o to, że nie chcemy, aby umieścić dziesiątki - setki potencjalnie - wykonawców i stowarzyszone w usłudze Active Directory, kiedy wszyscy będą zalogowaniu tylko do naszych zewnętrznych serwerów internetowych. Stąd drugi system auth.
Zewnętrzne serwery internetowe znajdują się w strefie DMZ i nie mogą uzyskać bezpośredniego dostępu do serwerów A/D. Istnieje jednak reguła zapory zezwalająca na ruch w porcie 80/443 z określonych adresów IP DMZ zewnętrznych serwerów sieciowych na określony port/adres IP wewnętrznego serwera aplikacji (asp.net). W przyszłości moglibyśmy całkowicie wyłączyć serwery poza domem, ale ten sam wyjątek firewall według portu i adresu IP nadal zezwalałby zewnętrznym serwerom WWW na wywoływanie wywołań usług internetowych na wewnętrznym serwerze aplikacji. –