?

Log in

No account? Create an account
Belarusan Mindfuck Weekly
March 26th, 2009
09:43 am

[Link]

Previous Entry Share Flag Next Entry
OpenLDAP proxy для M$ Active Directory
OpenLDAP можа быць проксі для іншых LDAP-крыніц.

Патрабаванні: злучэнне з AD LDAP, юзер у AD LDAP, апісанне атрыбутаў AD.


include  /etc/ldap/schema/core.schema
include  /etc/ldap/schema/cosine.schema
include  /etc/ldap/schema/inetorgperson.schema
include  /etc/ldap/schema/ad.schema

pidfile  /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args

modulepath  /usr/lib/ldap
moduleload  back_ldap


access to dn.base="" by * read
access to dn.base="cn=Subschema" by * read
access to *
 by self read
 by users read
 by anonymous auth

loglevel   256

######################################################
# database definitions
######################################################

database ldap
suffix  "dc=domain,dc=company,dc=com"
uri  "ldap://ad.ldap.local:389"
acl-bind bindmethod=simple binddn="cn=ldapproxy,ou=allusers,ou=office,dc=domain,dc=company,dc=com" credentials=proxypass



OpenLDAP робіць пошук толькі па апісаных у схеме атрыбутах. Таму, калі патрэбны пошук па спецыфічных AD-атрыбутах, іх варта апісаць у сваёй схеме.
Апісанне атрыбута магчыма выцягнуць з AD LDAP-браўзерам, напрыклад у Apache Directory Studio з дапамогай Scheme Browser / Raw Scheme Defenition. Варта праверыць наяўнасць ці дадаць там параметр EQUALITY - без яго немагчымы пошук.


attributetype ( 1.2.840.113556.1.4.221
        NAME 'sAMAccountName'
        EQUALITY caseExactMatch
        SYNTAX '1.3.6.1.4.1.1466.115.121.1.15'
        SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.4.750
        NAME 'groupType'
        SYNTAX '1.3.6.1.4.1.1466.115.121.1.27'
        SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.2.206
        NAME 'reportToOriginator'
        SYNTAX '1.3.6.1.4.1.1466.115.121.1.7'
        SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.2.207
        NAME 'reportToOwner'
        SYNTAX '1.3.6.1.4.1.1466.115.121.1.7'
        SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.2.297
        NAME 'hideDLMembership'
        SYNTAX '1.3.6.1.4.1.1466.115.121.1.7'
        SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.2.330
        NAME 'dLMemberRule'
        SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )

attributetype ( 1.2.840.113556.1.2.438
        NAME 'oOFReplyToOriginator'
        SYNTAX '1.3.6.1.4.1.1466.115.121.1.7'
        SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.4.89
                NAME 'nTGroupMembers'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )
attributetype ( 1.2.840.113556.1.4.144
                NAME 'operatorCount'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.27'
                SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.4.150
                NAME 'adminCount'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.27'
                SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.4.152
                NAME 'groupAttributes'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.27'
                SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.4.166
                NAME 'groupMembershipSAM'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.40'
                SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.4.200
                NAME 'controlAccessRights'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.40' )

attributetype ( 1.2.840.113556.1.4.346
                NAME 'desktopProfile'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.15'
                SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.4.530
                NAME 'nonSecurityMember'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )

attributetype ( 1.2.840.113556.1.4.653
                NAME 'managedBy'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.12'
                SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.4.1412
                NAME 'primaryGroupToken'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.27'
                SINGLE-VALUE  )

attributetype ( 1.2.840.113556.1.4.1792
                NAME 'msDS-AzLDAPQuery'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.15'
                SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.4.1793
                NAME 'msDS-NonMembers'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )

attributetype ( 1.2.840.113556.1.4.7000.102.50300
                NAME 'msExchOriginatingForest'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' )

attributetype ( 1.2.840.113556.1.6.18.1.339
                NAME 'msSFU30NisDomain'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.26'
                SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.6.18.1.309
                NAME 'msSFU30Name'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.26'
                SINGLE-VALUE )

attributetype ( 1.2.840.113556.1.6.18.1.346
                NAME 'msSFU30PosixMember'
                SYNTAX '1.3.6.1.4.1.1466.115.121.1.12' )

objectclass ( 1.2.840.113556.1.5.8
        NAME 'group'
        SUP top
        STRUCTURAL
        MUST (groupType )
        MAY (member $ owner $ reportToOriginator
                $ reportToOwner $ hideDLMembership
                $ dLMemberRule $ oOFReplyToOriginator
                $ nTGroupMembers $ operatorCount
                $ adminCount $ groupAttributes
                $ groupMembershipSAM $ controlAccessRights
                $ desktopProfile $ nonSecurityMember
                $ managedBy $ primaryGroupToken
                $ msDS-AzLDAPQuery $ msDS-NonMembers
                $ mail $ msExchOriginatingForest
                $ msSFU30NisDomain $ msSFU30Name $ msSFU30PosixMember ) )

(2 comments | Leave a comment)

Comments
 
[User Picture]
From:abbra
Date:March 26th, 2009 09:25 am (UTC)
(Link)
А что ты будешь делать с вариативными атрибутами? Одна из особенностей AD -- это полноценная реализация функционального языка на базе LDAP-запросов, когда некоторые атрибуты выступают на самом деле в виде вызываемых функций, меняющих значение от запроса к запросу. Самые примитивные -- timestamp, который возвращает время, когда запрос был совершен, но есть и более сложные операции, которые транслируются в группы вызовов по DCE RPC перед тем как вернуть результат в LDAP запросе.
[User Picture]
From:inhate
Date:March 26th, 2009 12:31 pm (UTC)
(Link)
Я с ними ничего делать не буду. Все, что мне надо - я уже сделал :)
К сожалению, нормального решения по репликации AD во что-нибудь не нашлось, пришлось делать полусекьюрный прокси.
Когда сделают нормальную репликацию для AD (скажем, допилят RH DS) - будем на неё посмотреть.

Кстати, я подозреваю, что все хитрые атрибуты тоже будут работать - прокси ведь не кэширующий.
Главное - выдрать их описание и угадать тип EQUALITY.
линуксятник Powered by LiveJournal.com