【问题标题】:Questions about wcf service for 3rd party integrators关于面向第三方集成商的 wcf 服务的问题
【发布时间】:2011-09-15 13:43:52
【问题描述】:

有些公司有兴趣将我们的软件与其软件集成。我们开始考虑为他们提供网络服务以通过互联网消费。我们将使用 WCF 构建 Web 服务。我们不能保证每个集成商都会使用 WCF 或 .NET,因此互操作性很重要。

当第三方集成商使用用户名和密码调用我们的服务操作时,我们希望对其进行身份验证。或者,我读过可以使用证书来实现客户端身份验证,但这似乎很复杂。

我们计划在 IIS 中托管服务。

WCF 中可用的选项非常多。基于以上所述,推荐什么配置(绑定/安全)?

是否可以使用 IIS 进行托管、basicHttpBinding、成员资格提供程序进行身份验证以及使用 SSL 进行加密?这些东西会协同工作吗?

【问题讨论】:

    标签: .net wcf web-services authentication ssl


    【解决方案1】:

    一定要使用BasicHttpBinding 和 HTTPS。 BasiHttpBinding 提供最简单的 SOAP 互操作服务,HTTPS 将确保客户端和您的服务之间的传输是安全的。

    要对用户进行身份验证,您可以使用BasicHttpBindingTransportWithMessageCredential 安全模式。此安全配置需要消息中的标准化 SOAP 标头(用户名令牌配置文件)。标头(在 WCF 的情况下)包含纯文本的用户名和密码。在这种情况下,纯文本不是问题,因为整个传输由 SSL (HTTPS) 保护。即使您的客户端不是 WCF 并且没有任何特殊的 SOAP 堆栈,添加此标头也应该很容易。还可以直接使用此身份验证类型,您可以使用会员提供者验证用户名或编写自定义密码验证器。

    【讨论】:

    • 谢谢。我在使用 WCF 客户端代理时得到了这个工作。但是,为了测试“互操作性”,我创建了一个 asmx Web 引用代理,它在调用服务方法时给了我这个错误: System.Web.Services.Protocols.SoapHeaderException is unhandled Message=An error occurred when verifying security for the message。
    • 没有。我这样设置凭据:proxy.Credentials = new NetworkCredential(username, password);
    • 你必须使用类似 UsernameToken token = new UsernameToken(username, password, PasswordOption.SendPlainText);安全安全 = client.RequestSoapContext.Security; security.Tokens.Add(token); security.Timestamp.TtlInSeconds = 60;
    猜你喜欢
    • 1970-01-01
    • 2014-10-09
    • 2010-10-14
    • 2020-08-02
    • 2019-01-02
    • 2012-06-08
    • 1970-01-01
    • 2013-03-26
    • 2023-03-21
    相关资源
    最近更新 更多