今天,越来越多的Web服务被开发用于内部用于将应用程序连接在一起。我们没有ESB来控制和保护这个Web服务,所以我想有什么是保护它们的好方法。
我们已尝试设置双向SSL,但我们无法控制特定网络服务的授权。
我的需要是能够控制哪个应用程序正在调用我的Web服务,并且此应用程序是否有权调用它。
我不喜欢WS-Trust和Ws-Security,因为这会改变原始的SOAP消息,但似乎它们不是其他解决方案。
有什么想法吗?
由于
答案 0 :(得分:2)
在您的问题中,您提到您不想修改当前的SOAP消息 - 这意味着消息级别的安全性已经消失。
所以你需要继续保持传输级别的安全性。
即使使用双向SSL,您也可以根据用户证书的指纹授权用户 - 如何执行此操作取决于您使用的堆栈。
其他选择是..
不同之处在于,双腿oauth支持不可否认性,而基本身份验证则不支持。
无论您使用哪种机制进行身份验证,都可以使用XACML进行细粒度授权......
答案 1 :(得分:1)
您可以通过https使用http基本身份验证。它允许后端应用程序知道用户,因此可以进行授权。
此链接[1]显示了我如何使用WSO2 ESB完成类似的操作。但是根据你的筹码,可能有办法。
[1] http://wso2.org/library/articles/2011/06/securing-web-service-integration
答案 2 :(得分:0)
我的需求是能够控制哪个应用程序正在调用我的网络 服务,此应用程序被授权调用它。
我觉得您想要的是服务提供商方面的授权机制。
如果您不想对soap消息进行任何加密,可以考虑向soap msg添加新参数。例如客户端将<applicationId> and <password>
(或加密的AppId, PassWord
字符串)作为WS的新参数,在WS提供者端,WS检查应用程序是否有权调用。
但这会带来对客户端和服务实现的更改。
或者您可以检查请求的客户端IP,以确定它来自哪个应用程序。如果你的应用程序有固定的IP地址。