Wso2标识服务器:提高资源属性的AttributeFinderModule的性能

时间:2013-12-05 13:53:49

标签: performance wso2 wso2is xacml xacml3

我的问题既适用于wso2身份服务器4.5(IS),也适用于balana“独立”。

我已成功处理发送到IS中的权利服务(PDP的Web服务接口)的XACML多个请求,如“XACML v3.0多决策配置文件版本1.0”中所述。

我在网上发现了几个自定义“属性查找器”的例子,但在所有这些例子中,实现检索主题的属性(例如主题的角色)而不是资源。 在我的用例中,我将向PDP发送一个xacml请求,其中包含主题的所有属性和资源ID列表。 我已经实现了一个属性查找器来从外部系统(例如数据库或Web服务)检索资源的属性。 第一个问题是:出于同样的原因,不推荐这种做法吗?

如果资源数量增加,第二个问题涉及此AttributeFinder实施的效果。

假设我们已经限制了可以在策略定义中使用的资源的属性列表。例如,少量属性。

来自org.wso2.balana.finder.AttributeFinderModule的方法:

public EvaluationResult findAttribute(URI attributeType, URI attributeId,
            String issuer, URI category, EvaluationCtx context) 

必须返回单个属性的值/值。因此,如果策略评估资源的更多属性,则对同一资源调用此方法的次数更多。 如果我在第一次调用该方法时读取资源的所有属性,我可以避免多次为同一资源的不同属性调用外部系统 并保存可用于后续调用的数据(例如,在线程局部变量上)。

因此,如果我有一个多个请求并且有关资源属性的策略应用于该请求,则不仅对每个属性调用该方法多次 相同的资源,但也适用于每种资源。为了提高性能,我希望减少对外部系统的调用次数 因此,我想在方法“findAttribute”的第一次调用时读取所有资源的属性(如果我有一个非常大的集合,则读取子集)。 为此,我需要在“findAttribute”方法中访问请求中所有资源ID的列表。我收到的EvaluationCtx 属性查找器只是从多个请求构建的集合中的一个。在方法org.wso2.balana.PDP.evaluate(EvaluationCtx)中循环处理完整集。 并且在“findAttribute”方法中不可用。

我可以扩展PDP类,在线程局部变量中发布完整的EvaluationCtx集(或资源ID列表),但这可以在“balana独立”中运行,而不是在wso2身份服务器中。 有什么想法吗?

谢谢。 斯特凡诺

1 个答案:

答案 0 :(得分:0)

是..你可以使用任何类别类型..它可以是主题,资源或任何东西..但大多数时候,政策正在寻找用户的属性。我想这就是样本看起来像那样的原因..

是的..这是一个很好的建议。我创建了jira作为改进。如果你想贡献。你可以提供补丁......

但是,使用Identity Server,需要单独的接口来实现。它已被包裹在Balana界面中。请详细了解here。实际上,对于Identity Server,它使用属性缓存来提高性能。但是,如果我们可以将您的建议添加到Balana,那将有助于提高更多。