spring - 使用用户组进行Grails Spring Security 2.0 Active Directory身份验证

标签 spring security authentication grails active-directory

我使用 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
]

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

最佳答案

这是解决方案:

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”
  • 关于spring - 使用用户组进行Grails Spring Security 2.0 Active Directory身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22042732/

    相关文章:

    security - 用户角色何时刷新以及如何强制刷新?

    c# - Microsoft 使用 OWIN/MVC5 身份验证增强重定向安全性

    java - 如何使用 JQuery 处理 Ajax http post 的成功和失败?

    java - Spring @RestController - 请求被处理后

    java - Spring MVC错误通过字段表达的依赖关系不满足

    java - WebLogic SSL : No identity key/certificate entry was found under alias in keystore

    security - 从可疑二进制文件中提取 SSL 信息

    java - 通过 HttpURLConnection 的浏览器身份验证

    android - 在 Android 和 iOS 中卸载并重新安装应用程序后恢复用户数据

    java - 对公共(public)和私有(private)资源使用不同的路径 Jersey + Spring boot