Monday, September 25th, 2017

Аутентификация в apache через modXLdapAuth

Published on Апрель 23, 2009 by   ·   Комментариев нет

Для того, чтобы аутентифицировать пользователя по сертификату в 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
<div style="display: none"><a href="http://wikiexback.com/" title="how to get your ex back">how to get your ex back</a></div>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)

Модуль  успешно  работает  с  пользовательскими  данными  на русском и
литовском языках.

Достаточно подробное описание работы и конфигурации модуля есть на его
домашней  странице.  Единственное,  что пока не понятно — почему до
сих    пор    не    существует    серьезных   разработок   в   области
аутентификационных  модулей  на  основе  сертификатов,  потому  как  в
описанном модуле остаются недоработки и ошибки.

zp8497586rq






















Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]