首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用okta实现RBAC

使用okta实现RBAC
EN

Stack Overflow用户
提问于 2020-09-23 15:22:37
回答 2查看 506关注 0票数 3

目前,我们的spring boot应用程序使用okta登录。因为需要为应用程序实现RBAC,所以我想看看是否可以利用okta本身将用户映射到特定的角色。

我想实现标准的RBAC模型,在该模型中,我将映射角色下的多个权限,并且角色与用户相关联。基本上,它涉及三个级别的权限>角色>用户。

但在okta中,我没有看到映射角色和权限的标准方法。RBAC是通过创建组和将组关联到用户来实现的,这是两个级别。并且需要将组添加为自定义声明。

我如何在okta中实现标准的RBAC映射(权限>角色>用户),或者这是需要在IDP提供者外部处理的事情。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-09-26 18:15:44

当您深入了解角色和权限的详细信息时,数据往往是特定于域的,并且经常更改。我建议不要尝试在授权服务器中管理它。

一种可以让您完全控制声明的设计模式是形成一个自定义的AuthenticationPrincipal,其中包含来自应用程序数据库的角色或权限。

如果对此模式感兴趣,请参阅我的以下参考资料:

票数 0
EN

Stack Overflow用户

发布于 2021-06-20 15:35:31

可能的解决方案:

您可以将作用域(访问令牌中的scp)设置为您的权限。具体步骤如下:

  1. 在授权服务器中,创建自定义作用域(权限)并将其设置为默认作用域(这是必需的)。例如,创建两个默认作用域:

代码语言:javascript
复制
books.read (default=true)
books.write (default=true)

  1. 如果未定义,请转到授权服务器中的访问策略创建一个。

  1. 在访问策略页中创建访问策略规则,这些规则将成为组和作用域之间的映射。

  1. 测试在令牌预览选项卡中,这里的诀窍是将范围字段留空,以便授权服务器可以返回为用户设置的默认范围,如Okta:

所述

当客户端在令牌请求中省略scope参数时,将在访问令牌中返回默认作用域,前提是该作用域被允许作为访问策略规则的一部分。

  1. 现在在您的应用程序中请求授权码时,请确保作用域查询参数为空。

  1. ,根据你使用的库,你可能会遇到一些问题,如果默认情况下,他们希望总是返回一个id_token,但你可以定制它。例如:https://github.com/okta/okta-auth-js/issues/827

解决方案限制:

正如在步骤4和5中提到的,我们省略了作用域查询参数,这意味着将只返回分配给用户或他的组的自定义作用域,因为由Okta预定义的基本作用域,如profileopenidemail ...不会被退还。这也意味着我们跳过了需要openid作用域的OIDC,所以不会返回id_token,只会返回一个access_token。因此,本解决方案假设您不需要Okta预定义的任何基本作用域。

如果您需要任何基本作用域,请使用

正如限制中所述,该解决方案假设您不需要Okta预定义的任何基本作用域。但是如果你这样做了,那么下面是一个在这种情况下工作的解决方案,但不是很好。

在oauth流中请求授权码时,需要发送两次请求

第一个:省略作用域查询参数,以便返回默认作用域。

第二个:将第一个请求返回的作用域追加到您想要的基本作用域列表中,比如openidprofile、'email`。

代码语言:javascript
复制
?scope=books.read%20books.write%20openid%20profile%20email

免责声明:

上面的解决方案可能不被推荐,但它是有效的。如果任何人能发现上述解决方案的任何安全问题,请在评论中留言。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64022953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档