簡體   English   中英

Grails Spring安全性和LDAP身份驗證失敗

[英]Grails Spring Security & LDAP Auth Failure

問題:Grails ADMIN通過LDAP登錄,但沒有其他帳戶登錄。 系統= Win 7,grails 2.2.1,Active Dir輕量級

我創建了一個簡單的grails默認應用程序,安裝了最新的grails spring安全性和ldap插件。 然后,我按照以下教程配置spring安全設置。 教程位於http://blog.springsource.com/2010/08/11/simplified-spring-security-with-grails/

無論如何,春季安全性工作得相當快,下一步是將LDAP設置為使用anonymousAuthenticationProvider,這樣我的grails應用程序就可以登錄而無需檢查其自己的DB中是否只有密碼,只有LDAP。 我正在使用Windows Active Directory。 無論如何,請遵循此配置設置http://grails-plugins.github.io/grails-spring-security-ldap/docs/manual/guide/2.%20Usage.html 似乎一切正常,除了似乎正確登錄的唯一用戶是admin,其他用戶沒有工作。 我得到一個找不到該用戶名/密碼錯誤的用戶。 我已經添加了錯誤,警告和信息日志輸出以確保春季安全,但除了實際起作用的管理員帳戶外,似乎根本沒有提供太多信息。 我驗證了它的工作原理,因為我為spring security db密碼指定了與ldap密碼不同的密碼,並且一旦配置了ldap,唯一適用於管理員的密碼就是ldap。 不幸的是,沒有其他用戶在工作。

這是我的grails配置:

    // Added by the Spring Security Core plugin:
    grails.plugins.springsecurity.userLookup.userDomainClassName = 'org.example.SecUser'
   grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'org.example.SecUserSecRole'
   grails.plugins.springsecurity.authority.className = 'org.example.SecRole'


   grails.plugins.springsecurity.ldap.context.managerDn = 'CN=admin,OU=people,OU=imApp,DC=example,DC=org'
   grails.plugins.springsecurity.ldap.context.managerPassword = 'password'
   grails.plugins.springsecurity.ldap.context.server = 'ldap://localhost:55000/'
   grails.plugins.springsecurity.ldap.authorities.ignorePartialResultException = true
   grails.plugins.springsecurity.ldap.search.base = 'OU=people,OU=imApp,DC=example,DC=org'
   grails.plugins.springsecurity.ldap.search.filter='uid={0}'  //ad use sAMAccountName instead of uid
   grails.plugins.springsecurity.ldap.search.searchSubtree =true
   grails.plugins.springsecurity.ldap.auth.hideUserNotFoundExceptions= false
   grails.plugins.springsecurity.ldap.search.derefLink = true
   // specify this when you want to skip attempting to load from db and only use LDAP
   grails.plugins.springsecurity.providerNames = ['ldapAuthProvider', 'anonymousAuthenticationProvider'] 
   grails.plugins.springsecurity.conf.ldap.authorities.retrieveGroupRoles = false
   grails.plugins.springsecurity.conf.ldap.authorities.retrieveDatabaseRoles = false
   //grails.plugins.springsecurity.ldap.authorities.groupSearchBase =   'ou=groups,ou=imApp,dc=mcommunity,dc=org'
  //role specific ldap config
  grails.plugins.springsecurity.ldap.useRememberMe = false

我已經嘗試了此配置的一些變體,例如,它說Active Dir要求sAMAccountName作為search.filter,但是當我使用它時,沒有帳戶有效,如果我完全注釋掉它,則它已經存在,管理員可以登錄,但沒有其他功能帳戶。 如果我刪除springsecurity.providerNames,則應用程序啟動,但使用DB作為密碼身份驗證提供程序。 我遇到了一些博客,提到刪除模型類和數據庫的密碼,或者使之成為可空值(我嘗試過但對結果沒有影響)。

我的活動目錄結構如下:

    DC=example,dc=org
      OU=imApp
        OU=groups
        OU=people
          CN=admin   user   CN=admin,OU=people,OU=imApp,DC=example,DC=org
          CN=user1   user   CN=user1,OU=people,OU=imApp,DC=example,DC=org
    CN=LostAndFound
    CN= NTDS Quotas
    CN=Roles

我給每個帳戶一個LDAP密碼,並添加了一個與用戶名(CN)相匹配的參數uid。 我沒有使用自定義UserDetailsContextMapper,只是默認設置。 但是,我確實嘗試了一個Custom UserDetailsContextMapper,並且遇到了同樣的問題,因此又恢復為僅使用標准。 我也注意到Active Dir對組織有一個小寫的dc,所以我嘗試在Grails配置中使用相同的小寫dc,但是結果相同。

有沒有人遇到過這個問題或知道我可能要去哪里? 任何幫助表示贊賞。

最好,Marklw16

嘗試以下設置:

grails.plugins.springsecurity.ldap.authorities.groupSearchBase ='DC=example,dc=org'
grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = 'member={0}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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