Извлечение пользовательских данных NTLM Active Directory в Rails без IIS - PullRequest
6 голосов
/ 30 сентября 2008

Я считаю, что мы можем разрешить Firefox отправлять данные NTLM на сайты SharePoint для автоматической аутентификации, и я думаю, что это возможно с IIS.

Я бы хотел сделать то же самое с внутренним сайтом Rails.

Кто-нибудь знает способ, которым я мог бы аутентифицировать информацию о пользователях типа NTLM через установку Apache / mongrel (при условии, конечно, что она уже работает на коробке Windows внутри домена Active Directory)?

Ответы [ 7 ]

10 голосов
/ 02 декабря 2008

Я создал учебник о том, как установить пропатченный модуль mod_ntlm для Apache в Linux и как передать NTLM-аутентифицированное имя пользователя в Rails и как создать сеанс Rails из этого. Таким образом, в результате вам не нужен сервер Windows для запуска приложения Rails.

Там же вы можете найти, как включить автоматическую аутентификацию NTLM в Firefox - введите «about: config» в поле местоположения и затем выполните поиск «network.automatic-ntlm-auth.trusted-uris». Там вы можете ввести серверы, для которых вы хотите использовать автоматическую аутентификацию NTLM.

4 голосов
/ 17 сентября 2009

Дополнительная информация на случай, если кто-нибудь наткнется на это.

Я хотел сделать что-то, что, на мой взгляд, должно быть довольно простым - извлечь имя пользователя Windows пользователя с помощью NTLM из приложения Rails, работающего на Mongrel / Windows (фактически InstantRails). Написав базовый код, управляйте различными операциями рукопожатия (используя великолепную библиотеку NTLMRuby на http://rubyforge.org/projects/rubyntlm/) и получив прекрасную работу в Firefox, я был несколько разочарован тем, что IE не работает.

Mongrel не поддерживает keep-alive во время обмена сообщениями type1 / 2/3 (по крайней мере изначально, я считаю, что есть хак / исправление для него), который требуется IE, и Firefox обходится без него.

Таким образом, аутентификация сервера Rails, работающего в Windows, с удаленной службой NTLM (например, Sharepoint или другим веб-сайтом) довольно проста, но аутентификация браузера IE на сервере Rails, работающем в Windows, не так уж и важна с Mongrel. IIS будет вариант, как и базовый Apache с FastCGI. Первый чувствует себя немного неуклюжим, а второй не так быстро, как монгрел.

2 голосов
/ 08 апреля 2010

Этот конкретный проект выглядит многообещающе и ищет участников:

Я еще не пробовал это. На данный момент я планирую реализовать решение Раймондса, поскольку оно, похоже, имеет большой успех.

2 голосов
/ 16 марта 2009

Старый вопрос, который я знаю, но наткнулся на этот вопрос в поисках аналогичного ответа.

Вы можете использовать методы, описанные здесь (http://blog.rayapps.com/2008/12/02/ntlm-windows-domain-authentication-for-rails-application/). Однако mod_ntlm предназначен для аутентификации Windows на компьютере с UNIX / linux. Mod_auth_sspi - это то, что вам нужно для аутентификации winNT из apache под windows.

2 голосов
/ 30 сентября 2008

Вы также можете использовать модуль Apache ntlm , который должен передавать заголовок в ваше приложение с именем пользователя аутентифицированного пользователя. Этот модуль выглядит немного старым, но предлагает некоторые другие модули, которые могут удовлетворить ваши потребности.

2 голосов
/ 30 сентября 2008

Я предполагаю, что вы уже определили, какие HTTP-заголовки нужно отправлять, чтобы Firefox и IE отправляли обратно данные аутентификации NTLM, и вам просто нужно обработать это на стороне сервера?

Вы можете использовать некоторые из библиотек ruby ​​ в ruby ​​для доступа к базовым функциям аутентификации Windows, которые обрабатывают NTLM.

Я бы предположил, что путь наименьшего сопротивления может заключаться в том, чтобы увидеть, есть ли COM-компонент, который может выполнить аутентификацию для вас, и если это так, использовать его с помощью библиотеки ruby ​​Win32OLE.

Если нет COM-компонента, вы можете найти что-то в одной из тех других библиотек, которые могут вызывать для вас нативные методы win32.

Если вы не можете найти это, вам нужно написать расширение на ruby ​​C. Я сделал это на linux, и расширение ruby ​​довольно легко, но вы можете найти API-интерфейс аутентификации Microsoft немного болезненным.

Надеюсь, что вы начнете на правильном пути: -)

0 голосов
/ 27 июля 2010

Выезд Вафля . Он обеспечивает SSO на серверах Windows для Java с использованием Win32 API. Существует несколько реализованных фильтров (сервлет, клапан Tomcat, защита от пружин).

...