Wolkenkit:授权和用户角色的 ACL

Posted

技术标签:

【中文标题】Wolkenkit:授权和用户角色的 ACL【英文标题】:Wolkenkit: ACLs for authorization and user roles 【发布时间】:2018-02-09 03:19:54 【问题描述】:

我正在尝试了解如何扩展 wolkenkit 身份验证层。

假设我想要具有不同角色的用户:普通、版主和管理员。

普通用户可以查看和修改自己的内容,但不允许修改其他用户的内容。

版主用户可以修改所有条目,但除了自己的内容外,无权删除任何内容。

管理员用户可以修改和删除所有内容。

还有未经身份验证的 guest 用户可以阅读所有内容但不能修改任何内容。

阅读Write model: Configuring authorization 的文档,我可以通过编写以下内容来模拟guest/正常用例:

const initialState = 
  isAuthorized: 
    commands: 
      issue:  forAuthenticated: false, forPublic: false 
    ,
    events: 
      issued:  forAuthenticated: true, forPublic: true 
    
  
;

根据我的要求,我需要在此对象中定义其他角色。类似 forModerator: true, forAdmin: true

还有Granting access from a command 可以在运行时更改权限,但我不确定这是否可行。即使是这样,那感觉也很hacky。

这有可能吗?

【问题讨论】:

【参考方案1】:

免责声明:我是 wolkenkit 的开发者之一。

长话短说:不,不幸的是,目前这是不可能的,但此功能已在我们的路线图中。至少今天,我不能告诉你什么时候可以使用。

您最好的选择是自己做。一种方法可能是使用您的身份提供者在主持人的 JWT 中包含 moderator 声明,然后在命令处理程序中适当地处理它。

在命令处理程序中,您可以通过

访问令牌
command.user.token

这样您就可以根据需要获得索赔。非常抱歉,目前没有更好的答案:-(

【讨论】:

您的路线图是否公开可见?我会对此非常感兴趣。 还没有,但我们会改变它。一旦我们将其公开,我会通知您。

以上是关于Wolkenkit:授权和用户角色的 ACL的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud微服务安全API安全 2-7 授权

Laravel 中基于角色的 ACL

Spring Security - 角色和 ACL 安全性是不是矫枉过正?

与 Pyramid 授权、__acl__ 和 RootFactory 混淆

ASP.NET Core按用户角色授权

zf2教义2 Zestful服务登录认证授权ACL