2011-12-28 96 views
3

我最近在一个涉及WCF服务的项目上工作,并使用wsHttpBinding进行身份验证。使用PHP使用服务的第三方抱怨说,这种方法在PHP中无法正常工作,并且它不适合可互操作(他们更喜欢使用REST风格的方法,并通过GET凭证。)WS-Security如何互操作?

I'我从来没有使用过PHP的服务,他们的论点是否持有任何水?

要展开:

不能够得到的东西的工作开箱您的语言/环境不一定是缺乏interopability的一个很好的理由,我没有真正被他们说服了。我很好奇它是如何在更广泛的范围内进行互操作的,因为我希望我的服务不仅可以被.NET客户轻松使用。

附加说明:

我用TransportWithMessageCredential,该凭证由IIS验证了该服务,而不是。以这种方式向RESTful服务提供凭据的首选方式是什么? (这应该是一个单独的问题?)。我只是想知道在这种情况下它甚至是否可行。

+0

PHP是一种脚本语言。如果发现它没有实施开箱即用的国际标准,我不会感到震惊。 – 2011-12-28 19:23:32

回答

0

的确,REST很容易在各种编程平台和操作系统上实现(例如,Linux框上的PHP,这是一种非常常见的设置)。

作为SOAP的扩展,WS-Security是一种标准化协议,并且存在除.NET之外的其他平台的实现。然而,这里免费库的范围是非常有限的(对于PHP,我不知道),它肯定意味着更多的努力来连接到WS-Security服务,而不是简单的REST服务,至少如果服务使用协议功能超出了纯粹的SOAP范围。

还有一件事:HTTP内置了身份验证支持,因此您可以绝对实现经过身份验证的RESTful服务,而无需向请求的URL添加凭据。

+0

我已经更新了我的问题,但传输本身并不需要进行身份验证,而是需要消息。该服务使用'TransportWithMessageCredential',并且服务验证凭证。 – diggingforfire 2011-12-28 19:47:51

+0

我怀疑用PHP这样的非.NET语言来使用这样的功能会很容易。如果你想知道如何实现与REST相媲美的东西,那将是值得一个新问题。另请参阅http://stackoverflow.com/questions/1933234/calling-a-wcf-webservice-in-php-via-wshttpbinding以获取更多信息。 – 2011-12-28 19:50:20

+0

REST不是协议。这只是一种技术。 – DanMan 2014-10-13 11:58:50

1

我和我的一些客户也有同样的问题(也从PHP调用我的服务)。

所以我们只是额外暴露了basicHttpBinding端点。

我用交通运输安全与UsernamePassword在端点认证。

+0

我的服务仍然需要消息安全性,并且只有'wsHttpBinding' – diggingforfire 2011-12-28 20:13:49

+0

@diggingforfire可用 - 您为什么不使用传输安全性?无法在PHP中使用wsHttpBinding。我使用传输(SSL)进行身份验证的加密和用户名/密码。 – Maxim 2011-12-28 20:19:42

+0

凭证需要由服务处理,而不是由网络服务器(IIS)处理,因此他们需要在消息中。但它仍然是HTTPS(如果没有HTTPS,你不能使用邮件安全性) – diggingforfire 2011-12-28 20:26:01