Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oauth KeyClope JavaScript API不提供来自组的有效角色和属性_Oauth_Keycloak_Rbac_Abac - Fatal编程技术网

Oauth KeyClope JavaScript API不提供来自组的有效角色和属性

Oauth KeyClope JavaScript API不提供来自组的有效角色和属性,oauth,keycloak,rbac,abac,Oauth,Keycloak,Rbac,Abac,(这可以链接到) 我的问题:keydape JavaScript api只返回用户定义的角色和属性,而不是从用户组继承的有效角色和属性 这就是我对情况的理解,如果我错了,请纠正我 keydepeap建议分组。它们是管理用户的一种方式。通过简单地将用户拉入和拉出组,它们尤其能够将用户的设置角色和属性分解 注意:我了解到组不是OAuth规范的一部分。事实上,名为“内置”“组”的KeyClope JWT映射器不映射组,它将领域角色映射到名为“组”的参数。我的信念是,尽管组对于keydepose配置非常

(这可以链接到)

我的问题:keydape JavaScript api只返回用户定义的角色和属性,而不是从用户组继承的有效角色和属性

这就是我对情况的理解,如果我错了,请纠正我

keydepeap建议分组。它们是管理用户的一种方式。通过简单地将用户拉入和拉出组,它们尤其能够将用户的设置角色和属性分解

注意:我了解到组不是OAuth规范的一部分。事实上,名为“内置”“组”的KeyClope JWT映射器不映射组,它将领域角色映射到名为“组”的参数。我的信念是,尽管组对于keydepose配置非常有用,但JWT不应该包含组,而是包含属性和角色

Key斗篷API应提供对用户(用户定义)及其组(在Key斗篷中称为“有效”角色或属性)给定的承诺角色和属性的访问

然而,我的经验是,keydepeapi实际上提供了对用户定义的属性和角色的访问,而不是从组继承的属性和角色

我通过编写一些简单的JavaScript策略来测试这一点:

  • 我将用户与每个资源关联(通过使用资源属性)
  • 我的策略通过将请求用户与资源的关联用户进行比较来授予访问权限(将其视为简化的UMA)
  • 一个策略在用户相同时授予访问权限,另一个策略用于同一组中的用户,另一个策略用于具有相同属性的用户,另一个策略用于具有相同角色的用户
这适用于用户定义的属性和角色,甚至适用于组。但一旦我使用组来设置用户的角色或属性,它就会崩溃

请注意,当获取资源关联用户的角色或属性时,它会崩溃。请求用户工作正常,因为其参数来自JWT,映射程序实际上考虑了所有继承

更准确地说,这种方法是一个完美的例子:

和它所说的相反,它实际上并不返回用户是否处于领域角色。如果在用户级别为用户指定了角色,则返回true。如果角色是从组继承的,则返回false

我已经尝试了几种方法来获取这些信息,无论我如何尝试,问题仍然存在。我还没有在JavaScript中找到任何方法来获得继承的属性或角色(也许我错过了它?)

我的恐惧

环顾四周寻找线索,我发现了这个keydepeat问题,它似乎表明存在性能问题:。这表明遍历所有组和组合角色可能是一场性能噩梦,因此故意不这样做

对于角色来说,这比属性更麻烦,因为虽然可以使用UI在组和用户级别设置相同的属性,但对于角色来说,这是不可能的:一旦在组级别设置了角色,用户的角色就会灰显…因为已经设置了

要纠正这一错误,需要在组中搜索角色和属性。不幸的是,这意味着应该递归地搜索组(顺便说一句,角色也是如此,因为它们可以组合)

这可能是一个大问题:我们可以有一个工作的产品,用户角色;后来,有人使用组来设置角色,角色就中断了。当通过搜索组发现并缓解该缺陷时,他们通常会忽略组层次结构,当有人使用它时,产品会再次崩溃。这意味着潜在的错误,这是非常危险的。 换句话说,以一个正常工作的系统为例,使用UI设置一个用于设置角色的组,UI显示角色中的用户,系统中断

因此,问题是:

  • 这种行为是故意的,还是一个bug
  • 如果是故意的,我建议应该做些改变,因为文档不受尊重
  • 如果是故意的,则应相应地更改方法名称,并应提出获得有效的属性和角色的方法
我担心目前我对任何使用keydepeapi(例如编写JavaScript策略)的人的建议是完全避免使用组。 这是一个遗憾,因为群组是管理用户的好工具