如何获取 ActiveDirectory 的 LDAP 连接字符串

如何获取 ActiveDirectory 的 LDAP 连接字符串

我正在尝试让 Grails LDAP 插件与我的 Active Directory 一起工作。

该插件需要很多我不太熟悉的东西,因为我对 Active Directory 了解不多。

以下是该插件所需的内容:

// LDAP config
grails.plugins.springsecurity.ldap.context.managerDn = '[distinguishedName]'
grails.plugins.springsecurity.ldap.context.managerPassword = '[password]'
grails.plugins.springsecurity.ldap.context.server = 'ldap://[ip]:[port]/'
grails.plugins.springsecurity.ldap.authorities.ignorePartialResultException = true // typically needed for Active Directory
grails.plugins.springsecurity.ldap.search.base = '[the base directory to start the search.  usually something like dc=mycompany,dc=com]'
grails.plugins.springsecurity.ldap.search.filter="sAMAccountName={0}" // for Active Directory you need this
grails.plugins.springsecurity.ldap.search.searchSubtree = true
grails.plugins.springsecurity.ldap.auth.hideUserNotFoundExceptions = false
grails.plugins.springsecurity.ldap.search.attributesToReturn = ['mail', 'displayName'] // extra attributes you want returned; see below for custom classes that access this data
grails.plugins.springsecurity.providerNames = ['ldapAuthProvider', 'anonymousAuthenticationProvider'] // specify this when you want to skip attempting to load from db and only use LDAP

// role-specific LDAP config
grails.plugins.springsecurity.ldap.useRememberMe = false
grails.plugins.springsecurity.ldap.authorities.retrieveGroupRoles = true
grails.plugins.springsecurity.ldap.authorities.groupSearchBase ='[the base directory to start the search.  usually something like dc=mycompany,dc=com]'
// If you don't want to support group membership recursion (groups in groups), then use the following setting
// grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = 'member={0}' // Active Directory specific
// If you wish to support groups with group as members (recursive groups), use the following
grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = '(member:1.2.840.113556.1.4.1941:={0})' // Active Directory specific

我正在使用 Windows 2008 Server 并且了解以下内容:

IP = 10.10.10.90
Name = bold.foo.bar (This is what I see under Active Directory Users and Computers)
Domain =`BOLD`
Group = `MANAGERS`
Users = USERA (part of MANAGERS group) and USERB (not part of MANAGERS group)

问题

我可以得到一些关于填写部分/大部分所需配置的帮助吗?我可以访问服务器管理器中的 Active Directory 域服务,因此如果大部分信息都来自那里,我就可以得到它。

附言:我没有系统管理员帮我处理这件事。所以我只能担任这两个角色的开发人员 :)

答案1

活动目录浏览器 (AdExplorer)来自 Microsoft 的实用程序Windows 系统内部suite 可以帮助您找到DN搜索库您需要的信息。

广告探索者

但最好了解一些 LDAP 概念以获得更多控制权,例如,你想添加更多search.filter或者在搜索结果中获取更多属性(search.attributesToReturn)(您也想获取用户的电话号码)。有用的链接:

答案2

到目前为止,grails 和 AD 最重要的一点是使用 ActiveDirectoryLdapAuthenticationProvider 而不是 LdapAuthenticationProvider,因为它可以省去很多麻烦。然后您只需几行代码即可设置 AD 身份验证:

在 resources.groovy 中:

// Domain 1
ldapAuthProvider1(ActiveDirectoryLdapAuthenticationProvider,
        "mydomain.com",
        "ldap://mydomain.com/"
)

// Domain 2
ldapAuthProvider2(ActiveDirectoryLdapAuthenticationProvider,
        "mydomain2.com",
        "ldap://mydomain2.com/"
)

在 Config.groovy 中:

grails.plugin.springsecurity.providerNames = ['ldapAuthProvider1', 'ldapAuthProvider2']

这是您需要的所有代码。您几乎可以删除 Config.groovy 中的所有其他 grails.plugin.springsecurity.ldap.* 设置,因为它们不适用于此 AD 设置。

有关一些文档,请参阅: http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ldap-active-directory

相关内容