Apache + Perl + NTLM / LDAP == Единый вход? - PullRequest
3 голосов
/ 16 мая 2011

У нас есть приложение Perl, которое работает под Apache в Solaris с использованием CGI :: Application.Это все работает нормально.Мы хотели бы получить доступ к переменной USER_ID, передаваемой браузером IE, и выполнить некоторые запросы к базе данных и LDAP.

Я посмотрел документацию по Apache и не могу понять, как этого добиться.этот.У нас нет доступа в Интернет (это интранет) с серверов Solaris, поэтому нам нужно все скомпилировать самостоятельно.

У кого-нибудь есть контрольный список (или учебник) о том, что нужно Apache (модулям / плагинам)Чтобы этого добиться и как это нужно настроить?

Ответы [ 2 ]

3 голосов
/ 21 июня 2011

NTLM Winbind

Я использую модуль auth_ntlm_winbind_module (mod_auth_ntlm_winbind.so) на нашем сервере. Вам необходимо установить, правильно настроить и запустить Samba и winbind.

Вы можете скачать модуль из дерева проекта Samba:

git clone git://git.samba.org/jerry/mod_auth_ntlm_winbind.git 

Чтобы аутентифицировать пользователей через NTLM, вы должны добавить следующие директивы в настройки вашего каталога:

<Directory /srv/http>
         Allow from all
         AuthName "NTLM Authentication thingy"
         NTLMAuth on
         NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
         NTLMBasicAuthoritative on
         AuthType NTLM
         require valid-user
         AllowOverride all
</Directory>

Конечно, вам также нужно загрузить модуль:

LoadModule auth_ntlm_winbind_module /usr/lib/httpd/modules/mod_auth_ntlm_winbind.so

Учетная запись пользователя Windows передается приложению как REMOTE_USER:

#!/usr/bin/perl

use CGI;
my $query = new CGI;
# get the windows account from the header
my $windows_account = $query->remote_user();

Обратите внимание, что IE отправляет данные аутентификации только доверенным сайтам.

Вот веб-сайт с дополнительной информацией о модуле.


Прямая аутентификация через LDAP

Другой способ - использовать модуль authnz_ldap_module (mod_authnz_ldap.so). Это, вероятно, уже загружено по умолчанию. Обратите внимание, что это не так. Единый вход в систему, поскольку пользователю предлагается ввести пароль.

LoadModule authnz_ldap_module modules/mod_authnz_ldap.so

Добавьте это к определению вашего каталога:

<Directory /srv/http>
    AuthName "Authentication required"
    AuthType Basic
    AuthzLDAPAuthoritative off
    AuthBasicProvider ldap

    # "protocol://hostname:port/base?attribute?scope?filter" NONE
    # NONE indicates that an unsecure connection should be used for LDAP, i.e. port 389
    AuthLDAPURL "ldap://your.ldap.server.net:389/OU=the,OU=search,OU=node,DC=domain,DC=net?sAMAccountName?sub?(objectClass=*)" NONE


    # This is only needed if your LDAP server doesn't allow anonymous binds
    AuthLDAPBindDN "CN=AD Bind User,OU=the,OU=bind,OU=node,DC=domain,DC=net"
    AuthLDAPBindPassword super-secret

    Require valid-user
    AllowOverride all
</Directory>

Подробнее о модуле.

0 голосов
/ 20 июня 2011

Существуют плагины mod_ntlm и mod_ldap для apache, которые вы можете использовать для аутентификации.

В вашем случае я бы предположил, что вы действительно хотите использовать mod_ntlm, а ldap или "active directory" - это только егобэкенд?

Вот учебник, который охватывает фазу настройки: http://sivel.net/2007/05/sso-apache-ad-1/

Фаза компиляции в учебнике предназначена для платформы Linux, основанной на RPM, хотя twiki имеет некоторые дополнительные сведения о компиляции для solaris10 здесь:http://twiki.org/cgi-bin/view/Codev/NtlmForSolaris10#How_to_build_your_own_mod_ntlm_b

...