我使用带有Grails 2.3.2的spring-security-ldap:2.0-RC2插件。我试图连接到Active Directory服务器。我在config.groovy
中配置了以下插件grails.plugins.springsecurity.ldap.context.server = 'ldap://[ip]:389'
grails.plugins.springsecurity.ldap.context.managerDn = '[DN]'
grails.plugins.springsecurity.ldap.context.managerPassword = '[password]'
grails.plugins.springsecurity.ldap.authorities.ignorePartialResultException = true
grails.plugins.springsecurity.ldap.authorities.retrieveDatabaseRoles = true
grails.plugins.springsecurity.ldap.search.filter = '(sAMAccountName={0})'
grails.plugins.springsecurity.ldap.search.base = [searchbase]
grails.plugins.springsecurity.ldap.search.searchSubtree = true
grails.plugins.springsecurity.ldap.auth.hideUserNotFoundExceptions = false
grails.plugins.springsecurity.ldap.search.attributesToReturn = ['name', 'mail']
我收到连接错误。但是,连接列为localhost:389,而不是我指定的AD服务器。
Caused by CommunicationException: localhost:389; nested exception is
javax.naming.CommunicationException: localhost:389 [Root exception is java.net.ConnectException:
Connection refused: connect]
->> 76 | attemptAuthentication in
grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 49 | doFilter in ''
| 82 | doFilter . . . . . . in
grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
注意:我尝试使用Groovy-Ldap.jar连接(在单独的Groovy项目中) 我建立了一个连接:
ldap = LDAP.newInstance('ldap://[ip]:389', '[DN]', '[password]')
这很好用。我可以连接到AD。 知道什么可能是错的,为什么localhost:389被尝试和我指定的AD?
注意:在我的Grails项目中,我使用的是一个ProxySettings.groovy文件,其中包含http.nonProxyHosts中的几个条目(需要在内部网络中访问的所有服务器)。我尝试将AD服务器包含在nonProxyHosts中,但这没什么区别。
问候,
Jan-Willem Klomp
答案 0 :(得分:3)
您应该在输出中收到警告,告诉您正在使用grails.plugins.springsecurity
作为属性前缀,但它已在2.0中更改为grails.plugin.springsecurity
。您的自定义属性将被忽略,并且仅使用默认值。