wcf身份验证和加密

问题描述

| 我创建了一个wcf服务,该服务将图像作为字节[]提供。我的功能还不错,但是我对服务中的身份验证和加密没有经验。客户端将在其站点显示图像。他们要求用户名和密码身份验证以及某种形式的加密,但是如果有一个更简单的可行方法,它们看起来很灵活。他们只会在通话中发送几个参数, 在此之后,我一直在对尝试进行建模,但是从wcf中我看到的是,如果以这种方式进行操作,则必须在SSL层之上,因为包含用户名和密码的纯文本soap标头没有加密。我宁愿不要走SSL路由,除非有必要。 我读到可以为单向通信使用negotiationServiceCredential = \“ false \”,但是我不确定我要寻找的是一站式安全模式。我似乎找不到足够相似的教程或场景示例。     

解决方法

如果有人可能感兴趣...我正在使用这个人的解决方案对链接进行建模,它似乎运行良好。 基本上,在阅读了这里的其他文章之后,我开始学习这本书。在这里,我了解了更多有关通常如何设置这些服务的信息。我决定通过创建自己的验证器类来确保消息安全性,从而使用用户名和密码身份验证。这个标签对我来说有点棘手(在web.config中),但是有很多地方可以了解它:
<userNameAuthentication userNamePasswordValidationMode=\"Custom\" customUserNamePasswordValidatorType=\"YourService.MyValidator,YourService\" />
如果将用户名用于消息安全,则WCF要求您使用证书(在这种情况下为SSL)来保护传输。这是因为凭据以纯文本形式传递。优点是SSL硬件加速器允许快速的消息传输,并且我正尝试将大文件传输到客户端。 我链接的解决方案对于像我这样的新手来说都是一个很好的演练。一个非常有用的部分是学习如何使用MakeCert制作临时证书以用于测试目的。只需在cmd中运行此命令即可:
makecert -r -pe -n \"CN= compaq-jzp37md0 \" -b 01/01/2000 
-e 01/01/2050 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr 
localMachine -sky exchange -sp \"Microsoft RSA SChannel Cryptographic Provider\" -sy 12
其中“ compaq-jzp37md0”是服务器名称,因此您需要用您的PC名称替换