use*_*228 5 grails spring ldap active-directory
这是我的perl cgi脚本的一部分(正在工作..):
use Net::LDAP;
use Net::LDAP::Entry;
...
$edn = "DC=xyz,DC=com";
$quser ="(&(objectClass=user)(cn=$username))";
$ad = Net::LDAP->new("ip_address...");
$ldap_msg=$ad->bind("$username\@xyz.com", password=>$password);
my $result = $ad->search( base=>$edn,
scope=>"sub",
filter=>$quser);
my $entry;
my $myname;
my $emailad;
my @entries = $result->entries;
foreach $entry (@entries) {
$myname = $entry->get_value("givenName");
$emailad = $entry->get_value("mail");
}
Run Code Online (Sandbox Code Playgroud)
基本上,AD没有管理员/经理帐户,用户凭据用于绑定.我需要在grails中实现相同的东西.. +有没有办法配置插件来搜索几个AD,我知道我可以在context.server中添加更多的ldap IP但是对于每个服务器我需要一个不同的搜索库...
++我不想使用我的数据库,只是AD.用户通过ldap登录>我收到他的电子邮件,并使用该电子邮件进行另一个ldap查询,但这可能是另一个主题:)
无论如何,到目前为止的代码是:
grails.plugin.springsecurity.ldap.context.managerDn = ''
grails.plugin.springsecurity.ldap.context.managerPassword = ''
grails.plugin.springsecurity.ldap.context.server = 'ldap://address:389'
grails.plugin.springsecurity.ldap.authorities.ignorePartialResultException = true
grails.plugin.springsecurity.ldap.search.base = 'DC=xyz,DC=com'
grails.plugin.springsecurity.ldap.authenticator.useBind=true
grails.plugin.springsecurity.ldap.authorities.retrieveDatabaseRoles = false
grails.plugin.springsecurity.ldap.search.filter="sAMAccountName={0}"
grails.plugin.springsecurity.ldap.search.searchSubtree = true
grails.plugin.springsecurity.ldap.auth.hideUserNotFoundExceptions = false
grails.plugin.springsecurity.ldap.search.attributesToReturn =
['mail', 'givenName']
grails.plugin.springsecurity.providerNames=
['ldapAuthProvider',anonymousAuthenticationProvider']
grails.plugin.springsecurity.ldap.useRememberMe = false
grails.plugin.springsecurity.ldap.authorities.retrieveGroupRoles = false
grails.plugin.springsecurity.ldap.authorities.groupSearchBase ='DC=xyz,DC=com'
grails.plugin.springsecurity.ldap.authorities.groupSearchFilter = 'member={0}'
Run Code Online (Sandbox Code Playgroud)
错误代码为:[LDAP:错误代码1 - 000004DC:LdapErr:DSID-0C0906E8,注释:为了执行此操作,必须在连接上完成成功绑定.,data 0,v1db1
对于我尝试的任何用户/通行证都是相同的代码:/ Heeeeelp!:)
对于 grails 和 AD 最重要的是使用 ActiveDirectoryLdapAuthenticationProvider 而不是 LdapAuthenticationProvider,因为它将避免痛苦的世界。为此,只需进行以下更改:
在 resources.groovy 中:
// Domain 1
ldapAuthProvider1(ActiveDirectoryLdapAuthenticationProvider,
"mydomain.com",
"ldap://mydomain.com/"
)
// Domain 2
ldapAuthProvider2(ActiveDirectoryLdapAuthenticationProvider,
"mydomain2.com",
"ldap://mydomain2.com/"
)
Run Code Online (Sandbox Code Playgroud)
在 Config.groovy 中:
grails.plugin.springsecurity.providerNames = ['ldapAuthProvider1', 'ldapAuthProvider2']
Run Code Online (Sandbox Code Playgroud)
这就是您需要的全部代码。您几乎可以删除 Config.groovy 中的所有其他 grails.plugin.springsecurity.ldap.* 设置,因为它们不适用于此 AD 设置。
| 归档时间: |
|
| 查看次数: |
1811 次 |
| 最近记录: |