2012-04-17 106 views
0

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

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

我该怎么做?

+0

dupe of http://stackoverflow.com/questions/379526/wcf-username-without-certificate? – 2012-04-17 17:54:45

+0

感谢您的评论。我可以通过认证吗? – 2012-04-20 05:22:07

+0

是的,如果你愿意提供服务器端证书,你几乎可以做任何你想做的事情。我会发布更多细节的答案。 – 2012-04-20 13:44:05

回答

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将认为组合成功。

+0

谢谢。我的服务托管在互联网上,我无法设置任何东西。有没有办法在不安装的情况下使用x509认证? – 2012-04-21 11:34:30