0

关于声明的一个问题,如果两个不同的用户存储返回具有相同名称的属性,并且我将该属性映射到声明 uri。

例如:两个数据库都返回用户的“电话”属性,并在我添加一个新的声明,其中 uri= http://example.com/claim/phone映射到“电话”属性。

当我在 XACML 策略中使用声明 uri 作为 attributeId 时,它会返回什么?

PS:我试图在本地运行 wso2,但失败了。

4

1 回答 1

1

subject在 XACML 策略中,您可以将此声明 uri 定义为类别中的属性 id 。然后 PIP 将在收到 XACML 请求时触发。

<AttributeDesignator AttributeId="http://example.com/claim/phone" Category="urn:oasis:names:tc:xacml:3.0:attribute-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"/>

如果 XACML 请求包含没有域名bob或带有PRIMARY/bob. 属性将在PRIMARY 用户存储中搜索(已在user-mgt.xml文件中配置了哪个用户存储)

如果 XACML 请求中包含带域名的用户名Domain/bob, 它将phoneDomain.

想法是,当您使用具有多个用户存储的 XACML 时,您需要发送带有域名的用户名。我认为这很好,因为授权发生在身份验证之后。在进行身份验证时,不知何故,可以知道用户的域名(用户存储了哪个用户已通过身份验证)。

如果不同的用户商店为相同的声明 uri 暴露了不同的属性,您也可以配置它,如此处所述

于 2014-11-21T05:11:46.707 回答