0

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

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

我怎样才能做到这一点?

4

1 回答 1

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 将假定组合成功。

于 2012-04-20T13:50:44.740 回答