我有一个托管在IIS中的WCF服务,我想使用用户名验证。我的客户是.Net,PHP和Delphi。用.Net,PHP和Delphi客户端进行WCF用户名认证
我不想使用SSL或任何认证。
我该怎么做?
我有一个托管在IIS中的WCF服务,我想使用用户名验证。我的客户是.Net,PHP和Delphi。用.Net,PHP和Delphi客户端进行WCF用户名认证
我不想使用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将认为组合成功。
谢谢。我的服务托管在互联网上,我无法设置任何东西。有没有办法在不安装的情况下使用x509认证? – 2012-04-21 11:34:30
dupe of http://stackoverflow.com/questions/379526/wcf-username-without-certificate? – 2012-04-17 17:54:45
感谢您的评论。我可以通过认证吗? – 2012-04-20 05:22:07
是的,如果你愿意提供服务器端证书,你几乎可以做任何你想做的事情。我会发布更多细节的答案。 – 2012-04-20 13:44:05