我有一个托管在 IIS 中的 WCF 服务,我想使用用户名身份验证。我的客户是 .Net、PHP 和 Delphi。
我不想使用 SSL 或任何认证。
我怎样才能做到这一点?
我有一个托管在 IIS 中的 WCF 服务,我想使用用户名身份验证。我的客户是 .Net、PHP 和 Delphi。
我不想使用 SSL 或任何认证。
我怎样才能做到这一点?
根据您的评论,如果您愿意在服务器端提供证书,那么您想要做的事情非常简单。由 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 将假定组合成功。