基本身份validation和WCF

我正在努力学习WCF,但我真的不明白我必须做什么。 我有一个包含用户名和密码的数据库,用户在使用该服务之前应该进行身份validation。

目前,用户名和密码是硬编码的:

class UsernameAuthentication : UserNamePasswordValidator { ///  /// When overridden in a derived class, validates the specified username and password. ///  /// The username to validate.The password to validate. public override void Validate(string userName, string password) { var ok = (userName == "test") && (password == "test"); if (ok == false) throw new AuthenticationException("username and password does not match"); } } 

我的服务很简单:

 public class Service1 : IService1 { public int Add(int a, int b) { return a + b; } public int Subtract(int a, int b) { return a - b; } } 

我的问题是:我究竟需要在web.config文件中进行哪些更改才能使其正常工作? 我看过一些教程,但并不真正了解所需的更改。

此外,我正在尝试做的事情 – 在用户访问服务之前对用户进行身份validation,这是正确的做法吗?

谢谢

编辑:我的配置文件:

                                            

错误:无法激活service1.svc。

您必须在web.config中指定您将使用用户名/密码凭据并使用自定义密码validation程序。

您的服务绑定应设置一种安全性( TransportMessage ,最适合您的安全性),对于该类型的安全性,您必须设置要使用的凭据(用户名和密码)。

            

其中...表示特定于您的服务的许多其他设置。

请注意,只有某些类型的绑定和安全模式支持此类凭据,但MSDN具有您可能需要的所有信息。

如果您未将凭据设置为用户名和密码,则不会以这种方式对用户进行身份validation。

要告诉服务使用您的密码validation器,您需要添加以下内容:

       .....   

Microsoft.ServiceModel.Samples.CalculatorService是您拥有自定义validation程序的命名空间, CustomUserNameValidator是自定义validation程序(在您的情况下为UserNamePasswordValidator ), serviceservice的名称。

否则,该服务将期望一个默认validation器,如ASP.NET成员资格提供程序。

必须将服务凭据放入您的服务行为中。

此外,不要忘记将行为链接到服务定义。

    ....   

注意 :web.config中还有许多我没有显示的设置。 元素的名称只是方向性的。 这仅用于使用户名凭据有效。

您可以查看MSDN,因为他们有很多很棒的教程,比如这个http://msdn.microsoft.com/en-us/library/aa702565.aspx,http://msdn.microsoft.com/en-us/ library / aa354513.aspx 。

是的,实际上如果以正确的方式配置它,它将在给予客户端运行服务方法的权限之前对客户端(用户,客户端服务)进行身份validation。