首页 文章

LDIF用于在OpenLDAP中创建Active Directory用户和组?

提问于
浏览
7

我有一个使用Active Directory验证用户的Web应用程序,我正在尝试用OpenLDAP替换AD .

文档说我需要以管理员身份登录域控制器,打开用户管理窗口,单击相应的组织单位并将用户ID添加到适当的组(这些组的范围应为“Global”,组类型为“Security” ) .

我需要在OpenLDAP服务器上创建等效条目 . 有人可以为此提供示例LDIF吗?我不知道类和我应该使用的属性,我无法访问域控制器 . 最有问题的项目似乎是组类型和范围,因为它们似乎是二进制值,而不是字符串 .

请注意,我不想完全替换Active Directory - 我只需要用户ID和组 . 我已经尝试将microsoft.schema添加到OpenLDAP,但它不起作用 . 我找到了一些有关修改Microsoft Outlook架构的信息;我需要类似但更简单的东西 .

2 回答

  • 6

    将整个ActiveDirectory架构转换为OpenLDAP几乎是不可能的,这是巨大的 . 但是,我们只能添加所需的属性和类:

    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.3.114.7.4.2.0.33 NAME 'memberOf' 
        SYNTAX '1.3.6.1.4.1.1466.115.121.1.26' 
    )
    
    objectclass ( 1.2.840.113556.1.5.9 NAME 'user'
            DESC 'a user'
            SUP organizationalPerson STRUCTURAL
            MUST ( cn )
            MAY ( userPassword $ memberOf ) )
    
    objectclass ( 1.2.840.113556.1.5.8 NAME 'group'
            DESC 'a group of users'
            SUP top STRUCTURAL
            MUST ( groupType $ cn )
            MAY ( member ) )
    

    然后,可以轻松创建用于插入用户和组的LDIF文件:

    dn: dc=myCompany
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    dc: myCompany
    o: LocalBranch
    
    dn: ou=People,dc=myCompany
    objectClass: top
    objectClass: organizationalUnit
    ou: People
    description: Test database
    
    dn: cn=Users,dc=myCompany
    objectClass: groupOfNames
    objectClass: top
    cn: Users
    member: cn=Manager,cn=Users,dc=myCompany
    
    dn: cn=Manager,cn=Users,dc=myCompany
    objectClass: person
    objectClass: top
    cn: Manager
    sn: Manager
    userPassword:: e1NIQX1tc0lKSXJCVU1XdmlPRUtsdktmV255bjJuWGM9
    
    dn: cn=ReadWrite,ou=People,dc=myCompany
    objectClass: group
    objectClass: top
    cn: ReadWrite
    groupType: 2147483650
    member: cn=sysconf,ou=People,dc=myCompany
    
    dn: cn=sysopr,ou=People,dc=myCompany
    objectClass: user
    objectClass: organizationalPerson
    objectClass: person
    objectClass: top
    cn: sysopr
    sn: team
    memberOf: cn=ReadOnly,ou=People,dc=myCompany
    userPassword:: e1NIQX1jUkR0cE5DZUJpcWw1S09Rc0tWeXJBMHNBaUE9
    
  • 10

    好的,这是答案的开头:

    安装OPENLdap后

    A - Edit your slapd.conf to :

    1)修改包含的模式

    include /usr/local/etc/openldap/schema/core.schema
    include /usr/local/etc/openldap/schema/cosine.schema
    include /usr/local/etc/openldap/schema/inetperson.schema
    

    2)修改模式文件,如this FAQ中所述

    3)修改你的命名上下文(personaly我使用HDB作为后端)

    database hdb
    suffix "dc=dom,dc=com"
    rootdn "cn=Manager,dc=dom,dc=com"
    rootpw secret
    directory /usr/local/var/openldap-hdb
    

    4)然后重新启动目录

    B - Insert your root

    这是LDIF文件(root.ldif)

    dn: dc=dom,dc=com
    objectclass: dcObject
    objectclass: organization
    o: Company name
    dc: dom
    

    这是命令行

    ldapadd –x –D "cn=Manager,dc=dom,dc=com" -W –f root.ldif
    

    C - Insert a user

    这是LDIF文件(user.ldif)

    dn: cn=user1,dc=dom,dc=com
    objectClass: inetOrgPerson
    sn: users
    cn: user1
    telephoneNumber: 9999
    

    这是命令行

    ldapadd –x –D "cn=Manager,dc=dom,dc=com" -W –f user.ldif
    

    D - An advice

    Apache directory studio,对我来说,是一个非常好的LDAP浏览器,它是开源的,它在Linux和Windows上的java上运行 . 使用它,您可以图形浏览AD和OpenLdap,只需单击即可执行B和C部分 .


    MSDN中记录了Active-Directory Schema (Classes and attributes) . 例如,以下是有关groupType的信息 . 这是你期望的吗?

相关问题