簡體   English   中英

配置grails spring security ldap插件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM