grails-spring-security core / ldap实现的另一个新手问题。 (Grails 2.4.4 弹簧安全核心2.0.0 spring-security-ldap-2.0.1)
我已经设置了一个openLdap服务器(本地用于测试),并且从我的grails应用程序,经过身份验证的用户只有LDAP,没有数据库存储用户/角色信息,一切都来自LDAP(这是要求)反正)
到目前为止,我已经通过他们的UID和密码验证所有 ldap用户了,接下来的步骤是,如何通过ldap组进一步限制用户?
要清楚,我的LDAP结构现在看起来像这样:
domain01, com
- Groups
- group01 (member: user01, user02)
- group02 (member: user03, user04, user05)
- superUsers
- Users
- user01
- user02
- user03
- user04
- user05
现在我的所有用户01~05都可以使用他们的密码登录。如何配置以便只有group01(user01和02)下的用户才能登录? 假设:
我在Config.groovy中尝试了这个,但我猜它没有做我认为会做的事情:
grails.plugin.springsecurity.ldap.authorities.groupSearchBase = 'cn=group01,ou=Groups,dc=domain01,dc=com'
请帮忙!
答案 0 :(得分:1)
我明白了。
在我的Config.groovy中需要这些:
grails.plugin.springsecurity.ldap.authorities.groupSearchBase = 'ou=group01,dc=domain01,dc=com'
grails.plugin.springsecurity.ldap.authorities.retrieveGroupRoles = true
grails.plugin.springsecurity.ldap.authorities.groupRoleAttribute='cn'
grails.plugin.springsecurity.ldap.authorities.groupSearchFilter = 'member={0}'
用户角色将从LDAP分组推断为' ROLE_GROUP01'在他们认证之后。前缀' ROLE _'并且大小写是自动的,但如果需要可以使用其他配置设置进行更改(我不介意)。
然后,在Config.groovy中,控制用户可以使用interceptUrlMap访问的内容:
grails.plugin.springsecurity.securityConfigType = 'InterceptUrlMap'
grails.plugin.springsecurity.interceptUrlMap = [
'/': ['IS_AUTHENTICATED_FULLY'],
'/error': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/assets/**': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll'],
'/login': ['permitAll'],
'/login/**': ['permitAll'],
'/logout': ['permitAll'],
'/logout/**': ['permitAll'],
'/product': ['ROLE_GROUP01'],
'/product/**': ['ROLE_GROUP01'],
'/marketing': ['ROLE_GROUP01'],
'/marketing/**': ['ROLE_GROUP01']
]
您可以使用自己的网址映射来控制访问的粒度。