WCF,安全和证书

chr*_*ris 6 authentication wcf certificate wcf-security

我有一个客户端/服务器WCF应用程序,需要对数据库进行某种用户身份验证.该应用程序(客户端和服务器一起)正在开发出售给数十个客户,以便在其内部网上使用.我们并不太担心加密大部分移动数据,当然除了在身份验证期间.

考虑到WCF安全性,我不断回到我们应该使用x509证书的想法.但是,我们的客户肯定不想知道必须申请,购买和安装这些证书的任何细节.

首先,我想知道在这种情况下实现用户名/密码身份验证的首选方法是什么.如果需要使用证书,客户是否必须从受信任的CA申请自己的证书,或者我们作为软件提供商是否可以生成证书供客户使用?

我真的在寻找一种最佳实践,对客户的摩擦最小.

谢谢!

编辑: 我正在使用NetTcpBinding,我的服务器作为Windows服务运行.

blo*_*art 5

所以用户名/密码不需要客户端证书,因为我确定你知道,它只需要托管WCF服务的服务器上的HTTPS证书 - 一旦你有了,你可以愉快地使用标准的用户名/密码auth位(WCF)没有HTTPS,将不允许基于消息的身份验证).

如果您想要关闭客户端证书根目录,那么您将获得不可否认性的优势 - 您可以确定机器发送的是它所说的人(除非有人窃取了证书,这比用户名和密码更不可能组合去散步).您作为软件提供商可以充当您自己的证书颁发机构并生成您自己的客户端证书(根据您的基础架构,有几种方法可以执行此操作)但是您需要配置客户端以信任您的根CA.

如果服务器和客户端在域环境中运行,您可以使用带有Windows身份验证的传输安全性(您正在使用tcp绑定,因此无论如何都可以实现互操作性!)额外的好处是身份验证是透明的,您不要任何地方都需要任何证书.如果您想要验证服务器身份,那么使用Windows身份验证的邮件安全性就可以解决问题.