我有一个托管在IIS中的WCF服务,我想使用UserName身份验证。我的客户是.Net,PHP和Delphi。
我不想使用SSL或任何认证。
我该怎么做?
答案 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将假定组合成功。