关于声明的一个问题,如果两个不同的用户存储返回具有相同名称的属性,并且我将该属性映射到声明 uri。
例如:两个数据库都返回用户的“电话”属性,并在我添加一个新的声明,其中 uri= http://example.com/claim/phone映射到“电话”属性。
当我在 XACML 策略中使用声明 uri 作为 attributeId 时,它会返回什么?
PS:我试图在本地运行 wso2,但失败了。
关于声明的一个问题,如果两个不同的用户存储返回具有相同名称的属性,并且我将该属性映射到声明 uri。
例如:两个数据库都返回用户的“电话”属性,并在我添加一个新的声明,其中 uri= http://example.com/claim/phone映射到“电话”属性。
当我在 XACML 策略中使用声明 uri 作为 attributeId 时,它会返回什么?
PS:我试图在本地运行 wso2,但失败了。
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
, 它将phone
从Domain
.
想法是,当您使用具有多个用户存储的 XACML 时,您需要发送带有域名的用户名。我认为这很好,因为授权发生在身份验证之后。在进行身份验证时,不知何故,可以知道用户的域名(用户存储了哪个用户已通过身份验证)。
如果不同的用户商店为相同的声明 uri 暴露了不同的属性,您也可以配置它,如此处所述