【问题标题】:Grails Spring Security 2.0 Active Directory authentication using user's group使用用户组的 Grails Spring Security 2.0 Active Directory 身份验证
【发布时间】:2014-02-26 13:22:02
【问题描述】:

我使用 dsquery 接收有关我在 AD 中登录的信息,并收到有关我所属组名称的信息。

-名称

CN=Surname Name I,OU=CITY,OU=FOLDER,OU=Users,DC=domain,DC=com

-组

CN=Name-of-Group Using Spaces, OU=Department ,OU=Folder_two,OU=Folder_one,OU=Groups,DC=domain,DC=com

所以,我只想让我或我组中的用户接受登录( CN=使用空格的组名 )。这是我的

Config.groovy

grails.plugin.springsecurity.ldap.context.managerDn = 'Surname Name I,OU=CITY,OU=FOLDER,OU=Users,DC=domain,DC=com'
grails.plugin.springsecurity.ldap.context.managerPassword = 'password'
grails.plugin.springsecurity.ldap.context.server = 'ldap://server:xxx/'
grails.plugin.springsecurity.ldap.authorities.ignorePartialResultException = true
grails.plugin.springsecurity.ldap.search.base = 'DC=domain,DC=com'
grails.plugin.springsecurity.ldap.search.filter="(&(sAMAccountName={0})(objectclass=user))"
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/view/index'
grails.plugin.springsecurity.ldap.search.searchSubtree = true
grails.plugin.springsecurity.ldap.auth.hideUserNotFoundExceptions= false
grails.plugin.springsecurity.providerNames=['ldapAuthProvider']
grails.plugin.springsecurity.securityConfigType = 'Annotation'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
    '/view/index':['IS_AUTHENTICATED_FULLY']
// '/view/index':['ROLE_Name-of-Group Using Spaces'] - this is what I tryed to use also and Its not working
]

这是有效的配置,但问题是域中的任何用户都可以访问。

【问题讨论】:

  • 您尝试过...ldap.search.base 的变体吗?另一种选择是向所有控制器添加 @Secured(['ROLE_Name-of-Group Using Spaces']) 注释。但是,这仍然允许每个人进行身份验证。不属于特定组的用户只会看到“拒绝”页面。
  • 使用@Secured 没有帮助。我收到"Sorry, you're not authorized to view this page." 消息。另外,我尝试在ldap.search.base 中使用"Name-of-Group Using Spaces" - 这个解决方案也不起作用。

标签: spring security authentication grails active-directory


【解决方案1】:

这里有解决方案:

grails.plugin.springsecurity.ldap.context.managerDn = 'Surname Name I,OU=CITY,OU=FOLDER,OU=Users,DC=domain,DC=com'
grails.plugin.springsecurity.ldap.context.managerPassword = 'password'
grails.plugin.springsecurity.ldap.context.server = 'ldap://server:xxx/'
grails.plugin.springsecurity.ldap.authorities.ignorePartialResultException = true 
grails.plugin.springsecurity.ldap.search.base = 'DC=domain,DC=com'

grails.plugin.springsecurity.ldap.search.filter="(&(sAMAccountName={0})(|(memberOf=CN=Name-of-Group #1 Using Spaces, OU=Department ,OU=Folder_two,OU=Folder_one,OU=Groups,DC=domain,DC=com)(memberOf=CN=Name-of-Group #2 Using Spaces, OU=Department ,OU=Folder_two,OU=Folder_one,OU=Groups,DC=domain,DC=com)))" 

grails.plugin.springsecurity.ldap.search.searchSubtree = true    
grails.plugin.springsecurity.ldap.auth.hideUserNotFoundExceptions = false 
grails.plugin.springsecurity.providerNames=['ldapAuthProvider'] 
grails.plugin.springsecurity.securityConfigType = "Annotation" 
grails.plugin.springsecurity.controllerAnnotations.staticRules = [    
'/**': ['isFullyAuthenticated()'] 
]
  • 仅对“使用空格的组名#1”和“使用空格的组名#2”组的成员进行身份验证。不需要“%20”

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 1970-01-01
    • 2014-06-11
    • 2020-04-08
    • 2020-02-16
    • 1970-01-01
    • 2011-01-12
    • 2016-03-27
    • 2011-01-22
    相关资源
    最近更新 更多