0

我想实现对 Web 服务(操作、消息等)的访问控制。我的发现表明这可以通过 WS-Policy 或 XACML 来完成。在我看来,Axis2 有一个很好的 WS-Policy 实现,并且可以定义断言来规范对每个操作的访问。我有一些疑问:

1)假设我有 WS-Policy xml 文件,我如何将它包含在 WSDL 中(使用 API 将其包含在生成的 WSDL 中或手动)

2)假设我有一个应用程序设计,其中客户端通过驻留在存储库中的代理发现服务,策略是否集成在此存储库中的 wsdl 中,并且每个想要实施服务的提供者都遵循 borker 存储库中的 wsdl+策略或每个provider 从 repo 中获取 wsdl 并使用自己的策略对其进行扩充?在 Axis2 的上下文中哪种方法是正确和可行的

3) 我可以通过使用 WS-Policy 和 UDDI 来限制客户端可以在 repo 中搜索的服务吗?Axis2 是否支持?

非常感谢你 !!

4

1 回答 1

0

WS-Policy 是一种非常通用的策略语言,它并不是专门针对授权或访问控制的。WS-Policy 更多地关注消息应该发生的事情(例如签名、加密......)。可以从 WSDL 引用 WS-Policy 策略,也可以在从服务存根生成 WSDL 后使用 XSLT 将策略嵌入到 WSDL 中。

XACML 对访问控制更为具体。从这个意义上说,它可能更适合您的用例。有几种开源和供应商替代方案。我工作的供应商 Axiomatics 有一个 JAX-WS 拦截器,它拦截您的 Web 服务消息并使用 XACML 应用细粒度授权。

关于你的第三个问题:

我可以通过使用 WS-Policy 和 UDDI 来限制客户端可以在 repo 中搜索的服务吗?Axis2 是否支持?

我不相信你能做到这一点。此外,UDDI 也不再积极开发。标准有点老了。

底线:WS-Policy 更多的是关于如何公开您的服务以及如何处理操作和消息。XACML 更多的是关于实际的业务授权逻辑。

于 2013-05-01T14:04:52.613 回答