如何解决Wso2 XACML 获取自定义属性
我正在使用 Wso2 IS 5.11.0
,我需要通过调用基于 Web 服务来获取用户属性。
public class CustomPIPAttributeFinder extends AbstractPIPAttributeFinder {
private static final String PIP_NAME = "CustomPIPAttributeFinder";
private static final Set<String> SUPPORTED_ATTRIBUTES;
private static final Log log = LogFactory.getLog(CustomPIPAttributeFinder.class);
static {
SUPPORTED_ATTRIBUTES = new HashSet<String>();
SUPPORTED_ATTRIBUTES.add(CustomPIPConstants.SAMPLE_ATTRIBUTE_ID);
SUPPORTED_ATTRIBUTES.add(CustomPIPConstants.SAMPLE_ATTRIBUTE_NAME);
SUPPORTED_ATTRIBUTES.add(CustomPIPConstants.SAMPLE_CATEGORY);
}
@Override
public Set<String> getAttributeValues(URI attributeType,URI attributeId,URI category,String issuer,EvaluationCtx evaluationCtx) throws Exception {
//code
}
private String retrieveSampleName(String accesstoken) {
String sampleName = null;
// Todo: Get the value of the sample name from the sampleID from the datasource
return sampleName;
}
/**
* Since we override the {@link #getAttributeValues(URI,URI,String,EvaluationCtx)} this won't be called.
*/
@Override
public Set<String> getAttributeValues(String subject,String resource,String action,String environment,String attributeId,String issuer) throws Exception {
throw new UnsupportedOperationException("Method unsupported in the context");
}
public void init(Properties properties) throws Exception {
}
public String getModuleName() {
return PIP_NAME;
}
public Set<String> getSupportedAttributes() {
return SUPPORTED_ATTRIBUTES;
}
}
在示例代码中,我们每个请求只能获取一个属性。但是我们如何在执行策略之前返回多个属性或从自定义属性查找器的一个请求中获取多个属性。有什么办法可以实现这个流程。
根据上面示例中的请求属性 find(returns only one
) 代码,它会增加开销,因为我们每次调用 web-service 的每个属性查找都会增加开销。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。