Web服务身份验证 - 最佳实践?

21

我们的生产环境中有SOAP Web服务,它们依赖于包含纯客户端凭据的SOAP头进行身份验证。这些Web服务在.NET / Java / PHP / Python / C ++客户端(无论是Web应用程序还是桌面应用程序)中使用,这些客户端都是异构的。

我们正在考虑为这些Web服务提供v2版本,我想知道什么被认为是WS SOAP身份验证的最佳实践?(合理安全,且易于在各种平台上处理)。

3个回答

15

在各种平台上处理它最简单的方式是使用HTTP基本身份验证和HTTPS作为传输层。如果您的需求超出了简单的用户名/密码,则WS-Security会很好,但各平台之间的支持会有很大差异。每个体面的SOAP实现都支持HTTP身份验证。


4
如果您必须自己全部实现且无法使用HTTPS,我建议使用WS-Security中基于哈希的UsernameToken部分。只要您的库具有哈希函数,它就非常安全且相对容易实现。
如果您正在进行Web服务,我不建议依赖HTTP进行身份验证。
作为一个整体,WS-Security太大了。

1
为什么不依赖于现有的HTTP身份验证,这只是在您无法使用https时吗? - Jé Queue
@Xepoch在谈论基本认证,即用户名和密码作为Soap头发送的认证方式吗? - Mou
@David,请告诉我如何实现“基于哈希的WS-Security用户名令牌部分”。你能给我提供任何链接,让我可以阅读代码并下载代码在我的电脑上运行吗?谢谢。 - Mou

2

我过去处理这个问题的方法是使用标准的WS-*功能。

我们不使用身份验证功能,而是设置消息头完整性功能。这需要对话的两端都有公钥/私钥对,并检测标题中用户名字段的任何篡改。因此,您可以确信发送消息和设置用户ID的人拥有私钥的访问权限。

如果密钥得到适当管理,这提供了合理的完整性级别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接