对Web服务的访问控制
我想实现对Web服务(操作,消息等)的访问控制。我的发现表明这可以通过WS-Policy或XACML完成。在我看来,Axis2具有良好的WS-Policy实现,并且可以定义断言来控制对每个操作的访问权限。 我有一些问题:对Web服务的访问控制
1)假设我有到位的WS-Policy XML文件,我怎么它包含在WSDL(使用API将其包括在生成WSDL或手动)
2)假设我有一个应用程序设计,客户端通过驻留在存储库中的代理发现服务,是否将此策略集成在此存储库中的wsdl中,并且每个想要实现服务的提供者都遵循borker repo中的wsdl +策略,来自回购协议的wsdl并通过自己的政策扩充它? 在Axis2的上下文中,哪种方法是正确和可行的
3)我可以通过使用带UDDI的WS-Policy来限制客户端可以在回购中搜索哪些服务? Axis2是否支持?
非常感谢!
WS-Policy是一种非常通用的策略语言,并不特别针对授权或访问控制。 WS-Policy更多地关注消息应该发生什么(例如签名,加密等)。可以从WSDL引用WS-Policy策略,也可以在从服务存根生成WSDL后,使用XSLT将策略嵌入到WSDL中。
XACML更具体的访问控制。从这个意义上说,它可能更适合你的用例。有几种开源和供应商的选择。 Axiomatics是我工作的供应商,它拥有一个拦截Web服务消息并使用XACML进行细粒度授权的JAX-WS拦截器。
关于你提到的第三个问题:
我可以限制哪些服务客户端可以通过使用 的WS-Policy与UDDI回购搜索? Axis2是否支持?
我不相信你能做到这一点。此外,UDDI不再积极开发。标准有点旧了。
底线:WS-Policy更多的是关于如何公开你的服务以及如何处理操作和消息。 XACML更多地关于实际的业务授权逻辑。