使用.Net,PHP和Delphi客户端进行WCF UserName身份验证

时间:2012-04-17 15:52:08

标签: wcf authentication

我有一个托管在IIS中的WCF服务,我想使用UserName身份验证。我的客户是.Net,PHP和Delphi。

我不想使用SSL或任何认证。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

根据您的评论,如果您愿意在服务器端提供证书,那么您想要做的事情非常简单。 WCF实现的WS-Security标准应该可以随时用于实现类似Web服务的接口的任何客户端。

对于基本的,简单的用户名验证,使用最少的代码,您只需要设置属性配置选项,例如:     http://msdn.microsoft.com/en-us/library/ms752233.aspx

如果您不想使用Windows用户名(您的问题有些暗示并非所有人都拥有Windows用户名和/或密码),您可以提供自定义用户名提供程序,以执行您想要的任何操作。设置如下所示的服务行为配置:

<serviceCredentials>
  <serviceCertificate findValue="localhost" storeLocation="LocalMachine"
    x509FindType="FindBySubjectName" />
  <userNameAuthentication userNamePasswordValidationMode="Custom" 
    customUserNamePasswordValidatorType="MyService.Auth, MyService" />
</serviceCredentials>

然后构建一个执行此操作的类:

public class Auth : UserNamePasswordValidator
{
    public override void Validate(string userName, string password)
    {
    }
}

如果验证失败,您应该从该方法中抛出某种FaultException;否则WCF将假定组合成功。