1

我想宣布一些政策喜欢:

some one can visit anything under the img path, but img folders are scattered everwhere, so the attributevalue in the xacml policy may seem like this: "/rootpath/**XPATH_PART**/img/*".

如何编写这种策略。

我查看了“XACML3.0 核心规范”、“Multiple Profile”,他们说

Each Individual Decision Request SHALL be identical to the original request context with two exceptions: the “multiple:content-selector” attribute SHALL NOT be present and an added “content-selector” attribute value SHALL be an XPath expression that evaluates to a single node in the <Content> element

我认为这意味着在策略文件中,我不能在 AttributeValue 中使用 XPath 来引用多个资源,就像我首先说的那样,对吧?因为请求被解析为单个请求,每个请求都请求具有指定属性 id 的资源。

规范中是否有我遗漏或误解的内容?或者任何人都可以建议一个更好的方法来做我想做的事吗?

现在我想知道在资源中使用正则表达式是否可以做到这一点。对应的函数是 urn:oasis:names:tc:xacml:1.0:function:string-regexp-match

PS:我正在尝试为我的公司设置授权服务器,XACML 似乎是一个不错的起点。但我周围没有人知道这件事。如果有人能给我有关设置访问控制系统的任何建议,我将不胜感激。

4

1 回答 1

1

我与 Axiomatics 的一些同事聊天,得出的结论是您不需要 XPath,而是需要正则表达式。XACML 提供了一个适用于 URI 数据类型的正则表达式函数。它被称为 anyURIRegexpMatch,它接受一个字符串(正则表达式)和应用正则表达式的 XACML 属性。它返回真或假。

您的规则目标在 ALFA(授权公理语言)中如下所示:

policy matchResources{
    apply firstApplicable
    rule allow{
        target clause anyURIRegexpMatch("^https?://(?:[a-z\\-]+\\.)+[a-z]{2,6}(?:/[^/#?]+)+\\.(?:jpg|gif|png)$", resourceId)
        permit
    }
}

另请参阅此其他示例 (XACML 2.0):如何将 XACML 规则应用于每个子 URI?

于 2014-12-03T19:57:54.020 回答