在CMS中使用网页控制的客户端安全
场景:
我们开发了一个wcf web服务,该服务链接到防火墙/ dmz中的数据库。 Web服务和客户端应用程序(数据捕获Web表单)需要在我们面向互联网的Web服务器上托管。 这是因为它需要通过我们的第三方CMS(托管我们的主网站)托管的网页控件访问。
问题:
我们希望确保数据可以尽可能安全地传递,但我们会对我们与CMS提供商之间的共享证书保持谨慎(反之亦然)。 我们希望网页控制托管为https,但我已阅读的所有文档都说这需要证书进行身份验证。 我一直在考虑在客户端和svc之间应用额外的自定义安全性(自定义绑定,在后面的代码中应用的用户名/密码,通过IP地址限制呼叫),但我想知道是否有其他人遇到过这种情况。
当第三方为应用程序托管Web控件时,肯定会有应用自定义安全性的示例,但到目前为止,我只能在网上找到'它是证书或什么都没有'的评论。 任何帮助或指导极大的赞赏。
到目前为止,查看的许多链接的例子包括:
没有证书和Windows验证的WCF消息安全
http://www.codeproject.com/Articles/59927/WCF-Service-over-HTTPS-with-custom-username-and-pa
WCF服务配置HTTPS与CustomBinding
我期待应用建议的设置,例如在下面的<wshttpBinding>
和<serviceCredentials>
中,同时添加一个新的'Secure'类来包含自定义用户名/密码验证器,但得到“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>
我从你写的内容中猜测你的架构,但是这里有一些关于你的实现的想法:
如果你绝对必须使用WCF来实现这一点,并且正在完成服务器到服务器,我会通过X-509证书来完成。 它为您提供了点对点安全。 我还会在IIS上为您的安全实施添加一些不那么重要但辅助的方面,例如IP限制,在生产中实现的零元数据等。如果您没有对服务器执行此服务器并使用网络来源的流量调用这些方法,会重新考虑你的架构,并考虑选项#2。
如果您仍然有时间以不同的方式完成此任务并且有能力更改开发过程的另一端,我更喜欢基于令牌的架构来通过HTTPS w / JSON提供的Web API。 您不仅可以识别已提供给合作伙伴的预共享令牌,还可以对这些令牌进行IP / DNS限制,还可以在数据处理完成之前执行两步验证过程。 这使您能够为快速过期的数据传输颁发临时令牌。 最重要的是,您还可以使用类似CryptoJS的加密方式对JSON进行加密,该加密方式使用您和您的合作伙伴之间的预共享盐进行多达512次加密https://code.google.com/archive/p/crypto-js/ - 大多是不必要的,但是可以添加到你的箭袋中。 一般来说,两步操作会为您提供更强大的验证过程并让您放心。
希望即使是这样也能帮上忙。 祝你一路顺利!
编辑:我意识到我对这个特别的派对有点晚了。 我希望它进展顺利。 OP最终实施了什么?
链接地址: http://www.djcxy.com/p/21609.html