【问题标题】:Basic than the Basic-est question on Spring Security?比 Spring Security 上的 Basic-est 问题基本吗?
【发布时间】:2011-09-29 14:24:12
【问题描述】:

我有一个关于 Spring 安全性的非常基本的问题,但是这个问题可以推广到任何授权方案:

一个组是否应该有一个权限,而一个用户可以是多个组的成员? 或者 一个组可能有多个权限,而一个用户可能只分配到一个组?

我需要一个用户拥有以下三个权限:ROLE_ADMIN、ROLE_MANAGER、ROLE_EMPLOYEE。

以下表格结构更详细地说明了这个问题:

路线 1。

GROUP TABLE
===========
ID, NAME
1, 'Admins'
2, 'Managers'
3, 'Employees'

GROUP_AUTHORITY TABLE
=====================
GROUP_ID, AUTHORITY
1, 'ROLE_ADMIN'
1, 'ROLE_MANAGER'
1, 'ROLE_EMPLOYEE'
2, 'ROLE_MANAGER'
2, 'ROLE_EMPLOYEE'
3, 'ROLE_EMPLOYEE'

GROUP_MEMBER TABLE
==================
GROUP_ID, USERS_ID
1, 1

USERS TABLE
===========
USERS_ID, NAME
1, 'John Admin'

//-----------------------------------------------------------

路线 2:

GROUP TABLE
===========
ID, NAME
1, 'Admins'
2, 'Managers'
3, 'Employees'

GROUP_AUTHORITY TABLE
=====================
GROUP_ID, AUTHORITY
1, 'ROLE_ADMIN'
2, 'ROLE_MANAGER'
3, 'ROLE_EMPLOYEE'

GROUP_MEMBER TABLE
==================
GROUP_ID, USERS_ID
1, 1
2, 1
3, 1

USERS TABLE
===========
USERS_ID, NAME
1, 'John Admin'

我将不胜感激。

【问题讨论】:

    标签: spring spring-security authorization


    【解决方案1】:

    我投票赞成:拥有拥有多个权力机构的群组。但是使用 REAL 权限,例如:ROLE_MANAGE_USER、ROLE_MANAGE_STOCK、ROLE_CREATE_REPORTS、...

    让我解释一下为什么基于角色的权限(无论是 Route1 还是 Route2)在长期内不起作用。

    如果真正的用户群体不是永远固定的(对于每个真正的应用程序都是如此),那么您就会遇到问题,即在某个时间点您需要支持一个新的群体,例如实习生。如果您现在已经为您的权限使用了真实的角色名称,例如“ROLE_EMPLOYEE”......那么您需要检查代码并修改每个保护功能的安全声明,这些功能也应该可供学员使用。

    但是,如果您对授权使用真实授权,并在真实组和授权之间建立分配,那么您只需定义新组和授权分配。

    例如:

    • Group_Admin:ROLE_MANAGE_USER, ROLE_MANAGE_STOCK, ROLE_CREATE_REPORTS
    • Group_Employee:ROLE_MANAGE_STOCK, ROLE_CREATE_REPORTS
    • Group_Trainee:ROLE_CREATE_REPORTS, MAKE_COFFEE

    在您的代码中,您不应只使用@Secured("ROLE_MANAGE_USER") 之类的真实权限,而不要使用任何尊重真实角色的东西。

    顺便说一句:如果您的应用程序变得更大,通常只为用户分配一个角色是不够的,那么您需要为一个用户分配多个角色:user --m:n--> Role --m:n--> Authority

    【讨论】:

    • 您对“真实”角色的阐述非常翔实。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-05-13
    • 2016-07-01
    • 2021-11-22
    • 2015-01-15
    • 2011-10-08
    • 2014-11-24
    • 2016-10-30
    相关资源
    最近更新 更多