[英]Configuring grails spring security ldap plugin
這是我的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");
}
基本上,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}'
錯誤代碼為:[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/"
)
在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.