我正在按照本教程http://wso2.com/library/articles/2010/10/using-xacml-fine-grained-authorization-wso2-platform/来保护几个Web服务,使用wso2 ESB IS . 我只想要一个调用Entitlement Mediator的代理来检查用户是否具有访问 endpoints 的权限,但是使用本教程中提供的java客户端我遇到了一些问题 . 我使用不同的http方法(get,post)和不同的内容类型(application / json)来处理休息Web服务 .
有一个通用的解决方案来调用具有ESB所需属性的通用 endpoints 吗?
谢谢
1 回答
让我简要解释一下授权调解器的作用,它从请求消息中提取一些值并创建XACML请求并将其发送给WSO2IS进行决策 .
要创建XACML请求,授权介体会查找以下内容
用户 - >默认情况下,从名为“username”的消息上下文属性值中检索用户名 . 当用户使用UT / Basic身份验证对代理服务进行身份验证时,此值将填充到消息上下文....
资源 - >默认情况下,资源是 endpoints 服务名称 . 这是从SOAP消息中的“To”标头中检索的 .
操作 - >默认情况下,操作为“已读”如果这是REST请求,则将采取GET / POST作为操作 .
已经描述了REST服务的相同用例here
但您可以通过实现新的回调类来更改默认行为 . 从回调类的默认实现中检索以上值 . 如果要从用户json请求中检索某些用户名值,您甚至可以通过扩展新实现来实现 . 基本上你想写一些java代码并创建一个jar文件并将其放入repository / components / lib目录...请从here找到"UTEntitlementCallbackHandler.java"的默认实现 . 还有其他一些实现,请查看代码,它很简单,你可以理解它们 .