gpt4 book ai didi

Internet 场景中的 WCF 安全性

转载 作者:行者123 更新时间:2023-12-04 20:54:31 27 4
gpt4 key购买 nike

我在 Windows 服务中托管了一个 WCF 服务。来自各种平台的客户将访问该服务。现在我想添加一个基本的安全机制。理想情况下,客户端应使用用户名/密码进行身份验证。

在这种情况下我必须使用哪些绑定(bind)设置以及如何对客户端进行身份验证?互操作性比非常安全的解决方案更重要。如果可能,不应强制客户使用证书或类似的东西。此外,身份验证不应与 SQL Server 数据库强耦合。我想手动检查客户端凭据。

谢谢你的帮助

最佳答案

最适合您的情况的是 BasicHttpBinding,其安全性设置为 TransportWithMessageCredentials,凭证类型设置为 UserName。在这种情况下,您的服务将使用 HTTPS 进行保护(需要 SSL 的服务器证书,客户端必须信任该证书),并且将使用 UserName Token Profile(SOAP header )在消息级别提供身份验证。您可以实现自己的 password validator .

BasicHttpBinding 配置骨架:

<bindings>
<basicHttpBinding>
<binding name="Secured">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
</security>
</binding>
</basicHttpBinding>
</bindings>

如果您不想使用 HTTPS,您可以使用 HttpTransport、TextMessageEncoding 和安全模式设置为 UserNameOverTransport 创建自定义绑定(bind)。但是您必须将 allowInsecureTransport 设置为 true(请注意,此设置中的 WSDL 生成存在一些错误)。

自定义绑定(bind)配置骨架:

<bindings>
<customBinding>
<binding name="Secured">
<security authenticationMode="UserNameOverTransport" allowInsecureTransport="true" />
<textMessageEncoding messageVersion="Soap11" />
<httpTransport />
</binding>
</cutomBinding>
</bindings>

关于Internet 场景中的 WCF 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3859358/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com