Grails springsecurity LDAP登录,如何按子组限制用户?
Grails springsecurity LDAP Login, how to limit user by subgroups?
另一个关于 grails-spring-security core/ldap 实现的新手问题。
(圣杯 2.4.4
spring-安全核心-2.0.0
spring-安全-ldap-2.0.1)
我设置了一个 openLdap 服务器(本地测试),从我的 grails 应用程序,经过身份验证的用户只有 LDAP,没有数据库存储 users/roles 信息,一切都来自 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)可以登录?
假设:
- 我不关心提供更多粒度的只读角色等,只是登录成功或失败。
- 所有用户 01~05 没有 'memberOf' 属性,此信息仅在组条目中(这就是公司 LDAP 的设置方式)。
我已经在 Config.groovy 中对此进行了试验,但我想它并没有按照我的预期进行:
grails.plugin.springsecurity.ldap.authorities.groupSearchBase = 'cn=group01,ou=Groups,dc=domain01,dc=com'
请帮忙!
我想通了。
我的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']
]
您可以使用自己的 url 映射来控制访问的粒度。
另一个关于 grails-spring-security core/ldap 实现的新手问题。 (圣杯 2.4.4 spring-安全核心-2.0.0 spring-安全-ldap-2.0.1)
我设置了一个 openLdap 服务器(本地测试),从我的 grails 应用程序,经过身份验证的用户只有 LDAP,没有数据库存储 users/roles 信息,一切都来自 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)可以登录? 假设:
- 我不关心提供更多粒度的只读角色等,只是登录成功或失败。
- 所有用户 01~05 没有 'memberOf' 属性,此信息仅在组条目中(这就是公司 LDAP 的设置方式)。
我已经在 Config.groovy 中对此进行了试验,但我想它并没有按照我的预期进行:
grails.plugin.springsecurity.ldap.authorities.groupSearchBase = 'cn=group01,ou=Groups,dc=domain01,dc=com'
请帮忙!
我想通了。
我的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']
]
您可以使用自己的 url 映射来控制访问的粒度。