我有一个客户端/服务器 WCF 应用程序,需要针对数据库进行某种用户身份验证。该应用程序(客户端和服务器一起)正在开发中,将出售给数十个客户,以便在他们的内部网上使用。我们不太担心对通过网络传输的大部分数据进行加密,当然在身份验证期间除外。
考虑 WCF 安全性时,我不断回想起我们应该使用 x509 证书的想法。然而,我们的客户肯定不想了解申请、购买和安装这些证书的任何细节。
我首先想知道在这种情况下实现用户名/密码身份验证的首选方法是什么。如果需要使用证书,客户是否必须向受信任的 CA 申请自己的证书,还是我们作为软件提供商可以生成证书供客户使用?
事实上,我正在寻找一种最佳实践,对客户的摩擦最小。
Thanks!
Edit:我正在使用 NetTcpBinding,并且我的服务器作为 Windows 服务运行。
因此,用户名/密码不需要客户端证书,因为我确信您知道,它只需要托管 WCF 服务的服务器上的 HTTPS 证书 - 一旦您拥有了该证书,您就可以愉快地使用标准用户名/密码身份验证位(WCF如果没有 HTTPS,则不允许基于消息的身份验证)。
如果您想获取客户端证书根,您将获得不可否认的优势 - 您可以确定发送的机器就是它所说的(除非有人窃取了证书,这比用户名和密码的可能性要小)组合走动)。作为软件提供商,您可以充当自己的证书颁发机构并生成自己的客户端证书(根据您的基础设施,有几种方法可以做到这一点),但您需要将客户端配置为信任您的根 CA。
如果服务器和客户端运行在域环境中,您可以使用通过 Windows 身份验证传输安全 http://msdn.microsoft.com/en-us/library/ms733089.aspx(您使用的是 tcp 绑定,因此无论如何都无法实现互操作性!)这样做的额外好处是身份验证是透明的,并且您在任何地方都不需要任何证书。如果您想验证服务器身份,那么通过 Windows 身份验证实现消息安全 http://msdn.microsoft.com/en-us/library/ms729709.aspx会成功的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)