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