如何根据实体类型授予权限?
Posted
技术标签:
【中文标题】如何根据实体类型授予权限?【英文标题】:How can I give permissions based on entity type? 【发布时间】:2019-04-02 11:29:08 【问题描述】:我正在尝试根据 Orion 将要保存的实体类型设置权限。由于权限与“端点”相关联,因此我尝试将其设置为端点 /entities?type=Truck (例如)。问题是它告诉我(Keyrock 通过 PEP 响应)用户未在应用程序中获得授权。 我查看了数据库中的所有连接,在我看来,他已获得授权、具有他的角色、他的权限和他指定的组织,所有这些都在已创建的唯一应用程序中。
在本教程中,POST 请求会出现类似的情况,但这是因为在消息正文中发送了实体类型。在 GET 的情况下,我看不太清楚,因为它在 URL 中,但尝试这个没有奏效。
是否有可能不应该以这种方式完成?这种权限应该如何创建?
【问题讨论】:
您好 Cristina,策略定义目前不支持查询。我们正在努力支持他们,所以我希望它会尽快推出。 【参考方案1】:为此使用 Authzforce 似乎有点矫枉过正,但您可以使用
string-starts-with
和 string-at-least-one-member-of
条件,例如:
<Target>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">GET</AttributeValue>
<AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
</Match>
</AllOf>
</AnyOf>
</Target>
<Condition>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/v2/entities?type=Car</AttributeValue>
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/v2/entities?type=Truck</AttributeValue>
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/v2/entities?type=Bicycle</AttributeValue>
</Apply>
<AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:thales:xacml:2.0:resource:sub-resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
</Apply>
</Condition>
<target>
检查 GET HTTP 动词,<condition>
确保 - 资源 URL 将匹配 Truck
、Car
或 Bicycle
【讨论】:
以上是关于如何根据实体类型授予权限?的主要内容,如果未能解决你的问题,请参考以下文章