WCF - CMS 中的 Web 控制客户端安全性
Posted
技术标签:
【中文标题】WCF - CMS 中的 Web 控制客户端安全性【英文标题】:WCF - client security with web control in CMS 【发布时间】:2016-03-20 02:34:00 【问题描述】:场景:
我们开发了一个 wcf 网络服务,它链接到我们防火墙/dmz 内的数据库。 Web 服务和客户端应用程序(数据捕获 Web 表单)需要托管在我们面向 Internet 的 Web 服务器上。这是因为它需要由我们的第三方 CMS(托管我们的主网站)托管的 Web 控件访问。
问题:
我们希望确保数据可以尽可能安全地传递,但我们会谨慎对待我们自己和我们的 CMS 提供商之间的共享证书(反之亦然)。我们希望 Web 控件以 https 形式托管,但我读过的所有文档都说这需要证书来进行身份验证。我一直在考虑在客户端和 svc 之间应用额外的自定义安全(自定义绑定、在代码中应用的用户名/密码、通过 IP 地址限制调用)但我想知道是否有其他人遇到过这种情况。
我确信当第三方托管应用程序的 Web 控件时,必须有应用自定义安全性的示例,但到目前为止,我只在网上找到了“它是证书还是什么都没有”的 cmets。非常感谢任何帮助或指导。
目前查看的许多链接示例包括:
WCF message security without certificate and windows auth
http://www.codeproject.com/Articles/59927/WCF-Service-over-HTTPS-with-custom-username-and-pa
WCF Service configuration HTTPS with CustomBinding
我希望应用建议的设置,例如在下面的<wshttpBinding>
和<serviceCredentials>
中,同时添加一个新的“安全”类以包含自定义用户名/密码验证器,但得到“svc...不实现继承的成员...” 错误.
<wsHttpBinding>
<binding name="EndpointBinding">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None"/>
<message clientCredentialType="UserName"/>
</security>
</binding>
</wsHttpBinding>
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="My.WcfSvc.Authentication.Secure,
My.WcfSvc" />
</serviceCredentials>
【问题讨论】:
【参考方案1】:根据您所写的内容,我对您的架构进行了最佳猜测,但这里有一些关于您的实现的想法:
如果您绝对必须使用 WCF 来完成此任务,并且它正在服务器到服务器完成,我会通过 X-509 证书这样做。它为您提供点对点的安全性。我还将为您在 IIS 上的安全实现添加一些不太重要但辅助的方面,例如 IP 限制、在生产中实现的零元数据等。如果您不是在服务器到服务器并且有来自 Web 的流量调用这些方法,我会重新考虑您的架构并考虑选项 #2。
1234563您不仅可以识别您已提供给合作伙伴的预共享令牌,以及围绕这些令牌的 IP / DNS 限制,您还可以在处理数据之前进行两步身份验证过程。这使您能够为快速过期的数据传输颁发临时令牌。最重要的是,您还可以使用 CryptoJS 之类的东西加密 JSON,它使用您和您的合作伙伴 https://code.google.com/archive/p/crypto-js/ 之间的预共享盐进行多达 512 次加密 - 大部分是不必要的,但可以添加到您的箭袋中。一般来说,两步法让您的验证过程更加稳健,让您高枕无忧。希望哪怕是一点点帮助。祝您集成成功!
编辑:我意识到我参加这个特别的聚会有点晚了。我希望一切顺利。你最终实现了什么,OP?
【讨论】:
以上是关于WCF - CMS 中的 Web 控制客户端安全性的主要内容,如果未能解决你的问题,请参考以下文章