2008-09-29 7 views
6

Uważam, że możemy zezwolić Firefoxowi na wysyłanie danych NTLM do witryn SharePoint w celu automatycznego uwierzytelniania i myślę, że jest to możliwe w przypadku IIS.Odzyskaj dane użytkowników Active Directory NTLM do Railsów z/bez usług IIS

Chciałbym zrobić to samo z wewnętrzną witryną Rails.

Czy ktoś wie o sposobie uwierzytelnienia informacji użytkownika typu NTLM za pomocą konfiguracji Apache/kunta (oczywiście pod warunkiem, że działa już w polu Windows w domenie Active Directory)?

Odpowiedz

2

Domyślam się, że już wiesz, które nagłówki HTTP musisz wysłać, aby uzyskać firefox i IE, aby odesłać rzeczy uwierzytelniające NTLM, a po prostu muszą obsługiwać to po stronie serwera?

Można użyć niektórych z ruby ​​win32 libraries, aby uzyskać dostęp do podstawowych funkcji uwierzytelniania systemu Windows, które obsługują NTLM.

Proponuję, aby ścieżka najmniejszego oporu mogła sprawdzić, czy istnieje składnik COM, który może wykonać uwierzytelnienie, a jeśli tak, użyć go przy użyciu biblioteki ruby ​​Win32OLE.

Jeśli nie ma komponentu COM, być może uda się znaleźć coś w jednej z tych bibliotek, które mogą wywoływać dla ciebie rodzime metody win32.

Jeśli nie możesz tego znaleźć, musisz napisać rozszerzenie C ruby. Zrobiłem to na Linuksie, a rozszerzanie Ruby jest całkiem łatwe, ale może okazać się, że interfejs API uwierzytelniania Microsoftu jest trochę bolesny.

nadzieja, że ​​zostanie uruchomiony na właściwej drodze :-)

2

Można również użyć Apache ntlm module, który powinien zdać nagłówka dalej do aplikacji z nazwy użytkownika uwierzytelnionego użytkownika. Ten moduł wygląda na nieco stary, ale sugeruje inne moduły, które mogą odpowiadać twoim potrzebom.

10

Utworzyłem tutorial on how to install patched mod_ntlm module dla Apache w systemie Linux i jak przekazać uwierzytelnioną nazwę użytkownika NTLM do Rails i jak utworzyć z tego sesję Rails. Dzięki temu nie potrzebujesz serwera Windows do uruchamiania aplikacji Rails.

Znajdziesz tam również informacje o włączaniu automatycznego uwierzytelniania NTLM w Firefoksie - wpisz "about: config" w polu lokalizacji, a następnie wyszukaj "network.automatic-ntlm-auth.trusted-uris". Tam możesz wprowadzić serwery, dla których chcesz używać automatycznego uwierzytelniania NTLM.

+0

To jest niesamowite. –

4

Trochę dodatkowych informacji na wypadek, gdyby ktoś się o to potknął.

Chciałem zrobić coś, co moim zdaniem powinno być całkiem proste - wyodrębnić nazwę użytkownika Windows za pomocą NTLM z aplikacji Railsowej uruchomionej na Kowlu/Windowsie (aktualnie InstantRails). Po napisaniu podstawowego kodu zarządzam różnymi operacjami uzgadniania (przy użyciu świetnej biblioteki NTLMRuby pod adresem http://rubyforge.org/projects/rubyntlm/) i dzięki temu, że działało to cudownie w Firefoksie, byłem nieco sfrustrowany tym, że IE nie działa.

Mongrel nie wspiera utrzymywania się podczas wymiany komunikatów type1/2/3 (przynajmniej w tym, jak sądzę, jest to hack/fix), którego IE żąda, a Firefox przechodzi bez niego.

Autoryzacja serwera Railsowego uruchomionego w systemie Windows ze zdalną usługą NTLM (np. SharePoint lub inną witryną internetową) jest dość prosta, ale uwierzytelnianie przeglądarki IE na serwerze Railsowym działającym w systemie Windows nie jest tak proste w przypadku programu Mongrel. IIS byłby opcją, podobnie jak podstawowy Apache z FastCGI. Ten pierwszy czuje się nieco przylegający, a ten drugi nie będzie tak szybki jak Kundel.

0

Sprawdź Waffle. Zapewnia SSO na serwerach Windows do Javy przy użyciu Win32 API. Istnieje wiele zaimplementowanych filtrów (serwlet, zawór tomcat, zabezpieczenie sprężyny).

Powiązane problemy