The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Аутентификация в apache через modXLdapAuth (auth ldap linux apache)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: auth, ldap, linux, apache,  (найти похожие документы)
From: Roman Sozinov <http://sozinov.blogspot.com>; Date: Mon, 3 Jan 2008 14:31:37 +0000 (UTC) Subject: Аутентификация в apache через modXLdapAuth Оригинал: http://sozinov.blogspot.com/2007/05/modxldapauth.html Для того, чтобы аутентифицировать пользователя по сертификату в Apache достаточно добавить соответствующую директиву (SSLVerifyClient). Но в таком случае очень неудобно строить политику доступа - нет ни базы сертификатов, с которой бы можно было оперировать, ни возможностей по разграничению доступа (авторизации). На помощь приходит модуль modXLdapAuth (homepage), который использует LDAP как хранилище пользовательских данных, взятых из сертификатов и предоставляющий дополнительные средства для реализации политики доступа к закрытым ресурсам. Единственное ограничение с которым я столкнулся - модуль работает только с Apache 2.0.x (ветки 1.3 и 2.2 не поддерживаются). Прежде чем начинать сборку модуля необходимо подготовить LDAP сервер - необходимо включить в конфигурацию сервиса дополнительную схему (schema) modXLDAPAuth [[[http://blogs.ssc.lt/roller-ui/resources/rs/modXLDAPAuth.schema 1Kb].]] В OpenLDAP это делается добавлением строки include /etc/ldap/schema/modXLDAPAuth.schema в основной файл конфигурации slapd.conf. После того как дополнительная схема загружена, можно создать запись о будущем пользователе, дополнительно указав атрибуты, взятые из сертификата пользователя: CertificateClientCN - обычно имя, на которое выдан сертификат CertificateIssuer - CA, выдавший сертификат CertificateSerialNumber - серийный номер сертификата По данным атрибутам будет осуществляться аутентификация с использованием сертификата. Получившаяся запись о пользователе будет иметь вид: dn: uid=ivpetr,ou=People,o=company,c=ru objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top objectClass: Certmap uid: ivpetr structuralObjectClass: inetOrgPerson CertificateClientCN:: Petrov Ivan CertificateIssuer: Office CA CertificateSerialNumber: 0D cn: Ivan mail: petrov@company.com telephoneNumber: +790234567 userPassword:: e3NoYX0vbitrQTZZTzc3NnJTQ29Wczc4TGFQdCs1eTQ9 После этого можно начинать сборку модуля: ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-ldap-dir=/usr --with-openssl=/usr make && make installl Пример конфигурации успешно собранного модуля SSLRequireSSL SSLVerifyClient require SSLVerifyDepth 5 SSLOptions +FakeBasicAuth +StrictRequire +StdEnvVars +ExportCertData Order allow,deny Allow from all AllowOverride AuthConfig XLDAPAuthoritative on XLDAPAuthServer localhost XLDAPAuthBindDN "cn=manager,o=company,c=ru" XLDAPAuthBindPw "mamamia" XLDAPAuthSuffix "ou=People,o=company,c=ru" XLDAPAuthFilter "(&(CertificateIssuer=%{SSL_CLIENT_I_DN_CN})(CertificateSerialNumber=%{SSL_CLIENT_M_SERIAL})(CertificateClientCN=%{SSL_CLIENT_S_DN_CN}))" XLDAPAuthLogLevel info XLDAPAuthRemoteUserAttr uid На основании приведенной выше конфигурации Apache будет вести себя следующим образом: * для аутентификации будет требоваться сертификат пользователя (глубина проверки 5) * для поиска по LDAP серверу будет использоваться пользователь"cn=manager,o=company,c=ru" с паролем mamamia * поиск по LDAP директории будет осуществляться по фильтру - на основании атрибутов CertificateClientCN, CertificateIssuer, CertificateSerialNumber * переменная REMOTE_USER будет выставлена в данные, взятые из атрибута uid (в нашем случае, если пользователь Ivan Petrov пройдет аутентификацию, эта переменная будет выставлена в значение ivpetr) Модуль успешно работает с пользовательскими данными на русском и литовском языках. Достаточно подробное описание работы и конфигурации модуля есть на его домашней странице. Единственное, что пока не понятно - почему до сих пор не существует серьезных разработок в области аутентификационных модулей на основе сертификатов, потому как в описанном модуле остаются недоработки и ошибки.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Pavel (??), 18:03, 04/07/2008 [ответить]  
  • +/
    Да-да!
    Есть ли какой нибудь аналог?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру