Asp.net 使用basichttpBinding的wcf用户名和密码安全性--基于消息

Asp.net 使用basichttpBinding的wcf用户名和密码安全性--基于消息,asp.net,wcf,web-services,security,Asp.net,Wcf,Web Services,Security,我已经在接口上创建了一个与ServiceContract的接口,并在其所有方法上创建了一个与OperationContract的接口。我在一个类中实现了这个接口,然后在我的asp.net网站中添加了wcf服务,该服务创建了一个svc文件(因为我想用我的网站在IIS中托管它)。现在该服务已启动,可在http://localhost:8732/webui/webservice/camservice.svc。现在我想为这个服务启用用户名和密码身份验证。我想svc使用basicHttpBinding,因

我已经在接口上创建了一个与
ServiceContract
的接口,并在其所有方法上创建了一个与
OperationContract
的接口。我在一个类中实现了这个接口,然后在我的asp.net网站中添加了wcf服务,该服务创建了一个svc文件(因为我想用我的网站在IIS中托管它)。现在该服务已启动,可在
http://localhost:8732/webui/webservice/camservice.svc
。现在我想为这个服务启用用户名和密码身份验证。我想
svc
使用
basicHttpBinding
,因为我不必在web.config中进行任何配置就可以运行它。现在如何在此服务上启用用户名/密码身份验证?互联网上有很多文章,但我相信,wcf安全性是如此巨大,以至于我无法用我使用的方法对用户名/密码身份验证进行重点解释。我在VS2010中使用.NET4.0

编辑:好的,我把问题缩小了一点。我相信,消息级安全性是我所需要的

<security mode="Message">
                <message clientCredentialType="Certificate" />
            </security>


我本来可以使用SSL,但要不是这样,我必须为每个服务调用转到db并对用户进行身份验证。我更喜欢的是服务为具有有效证书的客户机提供服务。我从他那里得到了很多信息。它没有解释的是如何在客户端和服务器上设置x509证书,以及如何控制只有我的客户端才能获取有效证书。

如果您想在没有SSL的情况下实现用户名密码验证,可以使用一种称为a的方法,允许您通过http传输用户名/密码

注意:仅当您的服务位于公司防火墙之后时才使用此选项,该防火墙为托管您的服务的服务器提供足够的安全性

就使用双向SSL而言,您需要在您的服务器上安装服务证书.pfx,该证书已由受信任的机构或本地计算机帐户的个人存储文件夹下的自签名证书颁发

然后,对于客户端证书,您需要请求客户端发送一个.cer文件,并将其安装在本地计算机帐户上受信任的人员存储文件夹下的服务器上

在客户端计算机上,需要在当前用户的个人存储文件夹下安装client certificate.pfx

注意:在服务器上使用自签名证书时,通过代码调用Web服务的客户端需要以下代码,以绕过自签名证书出现的安全异常:

    System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
                                                                             {
                                                                                 return true;
                                                                             };

如果您想在不使用SSL的情况下实现用户名密码验证,可以使用一种称为a的方法,允许您通过http传输用户名/密码

注意:仅当您的服务位于公司防火墙之后时才使用此选项,该防火墙为托管您的服务的服务器提供足够的安全性

就使用双向SSL而言,您需要在您的服务器上安装服务证书.pfx,该证书已由受信任的机构或本地计算机帐户的个人存储文件夹下的自签名证书颁发

然后,对于客户端证书,您需要请求客户端发送一个.cer文件,并将其安装在本地计算机帐户上受信任的人员存储文件夹下的服务器上

在客户端计算机上,需要在当前用户的个人存储文件夹下安装client certificate.pfx

注意:在服务器上使用自签名证书时,通过代码调用Web服务的客户端需要以下代码,以绕过自签名证书出现的安全异常:

    System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
                                                                             {
                                                                                 return true;
                                                                             };

是的,WCF安全是一个巨人,如果你想创建安全的服务,你只需要学习至少基础知识。例如,您希望您的服务具有什么样的安全性?用户名和密码应该如何传输?密码应该如何保护?Ladislav我想使用用户名和密码安全<代码>强制使用ssl。但我不想在第二步中转移到ssl。在第一步中,我只想设置用户名和密码,由客户端添加到消息头中,并在服务器上正确验证。是否有一种安全模式允许我这样做?是的,WCF安全是一个巨大的,如果你想创建安全服务,你只需要学习至少基础知识。例如,您希望您的服务具有什么样的安全性?用户名和密码应该如何传输?密码应该如何保护?Ladislav我想使用用户名和密码安全<代码>强制使用ssl。但我不想在第二步中转移到ssl。在第一步中,我只想设置用户名和密码,由客户端添加到消息头中,并在服务器上正确验证。是否有允许我这样做的安全模式?