- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个使用 net tcp 绑定(bind)和自定义 UserNamePasswordValidator 的 Web 服务。用户名和密码由客户端在 Credentials.UserName.UserName 和 Credentials.UserName.Password 中发送。我的服务主机设置如下:
host.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom; host.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = myCustomValidator;
host.Authorization.PrincipalPermissionMode = PrincipalPermissionMode.Custom;
如果绑定(bind)的 SecurityMode=TransportWithMessageCredential 和 ClientCredentialType=MessageCredentialType.UserName 被使用但它需要一个证书,它会完美地工作。
我想让它在没有证书的情况下工作。如果我将绑定(bind)的 SecurityMode 更改为 None,服务将启动,但我的 UserNamePasswordValidator 类从未被调用。
我尝试了 SecurityMode=Message 和 SecurityMode.Transport,在这两种情况下,服务都需要证书才能启动。
我错过了什么吗?自定义用户名和密码验证器是否总是需要证书?
最佳答案
不幸的是,WCF 不允许您通过网络以纯文本形式发送用户名/密码。你仍然可以做到,但它需要你像这个人那样创建一个自定义绑定(bind) here .这意味着您将必须使用证书进行加密。请注意,这与证书身份验证不同,因此请不要在这方面感到困惑。这意味着您必须安装公开公钥的证书。所以您的服务器配置将如下所示:
<bindings>
<wsHttpBinding>
<binding name="CustomAuthentication">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
...
<serviceBehaviors>
<behavior name="CustomPasswordAuthentication">
<serviceMetadata httpGetEnabled="true" httpGetUrl="" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<serviceCertificate findValue="MyCertificateName" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="Root" />
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="MyCompany.WebServices.CustomUsernamePasswordValidator, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
客户端:
client.ClientCredentials.UserName.UserName = "hello";
client.ClientCredentials.UserName.Password = "hello";
client.ClientCredentials.ServiceCertificate.Authentication.RevocationMode = X509RevocationMode.NoCheck;
client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust;
client.Open();
希望这对您有所帮助。编辑:只需将 wsHttpBinding 更改为 TCP 或您正在使用的任何内容。
关于.net - UserNamePasswordValidator 和证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5555512/
我正在尝试使用用户名/密码设置带有 BasicHttpBinding 和身份验证的 WCF web 服务。我制作了自定义身份验证类。但是,它永远不会被调用(通过调试验证)。这是我的 web.confi
我正在为 WCF 使用 UserNamePasswordValidator。我的代码是相似的。我用数据库。有谁知道如何在此方法中获取有关当前连接上下文的信息。我想记录不成功调用的IP地址 public
我有一个使用 net tcp 绑定(bind)和自定义 UserNamePasswordValidator 的 Web 服务。用户名和密码由客户端在 Credentials.UserName.User
与 this question 相关,我有一个自定义的 UserNamePasswordValidator 登录到我们的内部 API。作为登录的一部分,我可以发现用户在我们系统中的角色。 我想稍后在
我在 .NET 4 上有一个带有自定义 UserNamePasswordValidator 的 WCF 服务,通过 SSL 和消息安全保护。 UserNamePasswordValidator 接收用
我正在使用 UserNamePasswordValidator 类作为 WCF 的 UserName 安全性的一部分。这一切都很好,类的 Validate 函数被调用并正常工作。 那我怎么才能知道在我
我在 wcf 中使用自定义 UserNamePassword Validator 来实现安全性。为此,我创建了自签名证书。在尝试使用 Web 服务时,我收到以下错误“无法为 SSL/TLS 安全通道建
我在互联网上浏览过但没有运气,我正在尝试找到一种合适的方法来在服务端缓存用户名和密码 token ,这样每次连接到服务时我都不必创建数据库连接。 这就是我要实现的目标: public class Se
我有一个由 Windows 服务托管的 WCF REST 休息服务。它使用自定义 UserNamePasswordValidator 身份验证。 我想在验证时获取客户端 ip 地址: ublic st
我有一个 WCF 服务通过我的 web.config 连接了一个 UserNamePasswordValidator,没问题。在我的验证器中,我覆盖了 Validate,检查凭据并在必要时抛出 Fau
根据 http://msdn.microsoft.com/en-us/library/system.identitymodel.selectors.usernamepasswordvalidator.
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 有关您编写的代码问题的问题必须在问题本身中描述具体问题 - 并包含有效代码以重现该问题。请参阅SSCCE.o
我有一个使用自定义 UsernamePasswordValidator 的 WCF 服务。验证器需要访问我的 Entity Framework 上下文。 我想为整个服务调用创建一个 ObjectCon
我有一个带有 netTcp 绑定(bind)(消息 - 用户名)的 WCF 服务。 我实现了我自己的 UserNamePasswordValidator.Validate 方法,在这个方法中我检查了凭
目前我有一项服务使用 UserNamePasswordValidator 来验证客户端用户。验证代码如下: public override void Validate(String userNam
在为每个 WCF 请求调用 UserNamePasswordValidator.Validate(username, password) 之前,我需要运行一些东西。 我已经尝试使用 IDispatch
我的第一个问题是,是否可以将自定义 UserNamePasswordValidor 与 basicHttpBinding 一起使用? 我有一个使用表单例份验证和自定义成员资格提供程序的 asp.net
我们目前正在使用自定义 UserNamePasswordValidator .这允许消费者在 SOAP header 中指定凭据,如下所示: 2013-04-05T16:
我有一个 WCF 服务,我在其中使用自定义 UserNamePasswordValidator 来验证用户。 public override void Validate(string userName
我发现了一个关于使用自定义用户名/密码 ( A simple WCF service with username password authentication: the things they do
我是一名优秀的程序员,十分优秀!