在内部专用网络上保护 SOAP Web 服务的最佳方法是什么
如今,越来越多的 Web 服务是为内部使用而开发的,用于将应用程序连接在一起。我们没有 ESB 来控制和保护此 Web 服务,因此我猜测什么是保护它们的好方法。
我们尝试设置双向 SSL,但无法控制特定 Web 服务的授权。
我的需要是能够控制哪个应用程序正在调用我的 Web 服务以及该应用程序是否有权调用它。
我不喜欢 WS-Trust 和 Ws-Security,因为这会改变原始的 SOAP 消息,但似乎它们不是其他解决方案。
有什么想法吗?
谢谢
Today's there is more and more web services developed for internal use to connect applications together. We do not have an ESB to control and secure this web services so I guess on what is a good way to secure them.
We have try to setup Two-Way SSL but we are not able to control the authorization on a particular web service.
My need is to be able to control which application is calling my web service and is this application authorized to call it.
I don't like WS-Trust and Ws-Security because this alter the original SOAP message but it seems that they are no other solution.
Any idea?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在您的问题中,您提到您不想修改当前的 SOAP 消息 - 这意味着消息级安全性已经过时。
因此,您需要继续实施传输级安全性。
即使使用双向 SSL,您也可以根据用户证书的指纹对用户进行授权 - 如何执行此操作取决于您使用的堆栈。
其他选项有..
区别在于,2 足 OAuth 支持不可否认性,而基本身份验证不支持。
无论您使用何种机制进行身份验证,您都可以使用 XACML 进行细粒度授权...
In your question you mention that you do not want to modify the current SOAP message - that means message level security is out.
So you need to go ahead with transport level security.
Even with two way SSL you wil be able to authorize users based on the thumbprint of the user certificate - how to do that depends on the stack you use.
Other option are..
The difference is, 2-legged oauth supports non-repudiation while basic auth does not.
Irrespective of the mechanism you use to authenticate, you can use XACML for fine grained authorization...
您可以通过 https 使用 http 基本身份验证。它让后端应用程序了解用户,从而可以进行授权。
此链接 [1] 显示了我如何使用 WSO2 ESB 完成类似的操作。但根据你的堆栈,可能有一种方法。
[1] http://wso2.org/library/articles/ 2011/06/保护网络服务集成
you can use the http basic authentication over https. It lets back end application to know the user and hence possible to do authorization.
This link[1] shows how I have done a similar thing with WSO2 ESB. But depending on your stack there may be a way.
[1] http://wso2.org/library/articles/2011/06/securing-web-service-integration
我觉得您想要的是服务提供商方面的授权机制。
如果您不想对您的肥皂消息进行任何加密,您可以考虑向肥皂消息添加新参数。例如客户端发送
;和
(或加密的AppId, PassWord
字符串)作为WS的新参数,在WS提供方,WS检查应用程序是否有权调用。但这给客户端和服务实现带来了变化。
或者您可以检查请求的客户端 IP,以确定它来自哪个应用程序。如果您的应用程序有固定的 IP 地址。
i feel that what you want is an authorization mechanism at your Service provider side.
if you do not want to do any encryption on your soap messages, you may consider to add new parameters to soap msg. e.g. client sents
<applicationId> and <password>
(or an encryptedAppId, PassWord
string ) as new parameter to WS, at the WS provider side, WS checks if the application has right to call.but this brings the changes to Client and Service implementation.
Or you could check the client IP of the request, to decide that it is from which application. If your applications have fixed Ip Addresses.