我想在使用 Web 服务时对客户端进行身份验证。我看到客户端中公开了一个名为 ClientCredential 的属性,我们可以在其中传递用户名和密码。如何将此信息传递给我的 WCF Web 服务以及如何验证用户 ID 和密码?
问问题
2119 次
1 回答
0
如果您想使用带有用户名/密码的 ClientCredential,您需要像这样在客户端 app.config 中配置它 - 使用传输或消息安全,无论哪个适合您,然后指定
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="UserNameSecurity">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
然后您需要在客户端的端点中使用此绑定配置“UserNameSecurity”:
<client>
<endpoint address="http://localhost:8888/MyService"
binding="basicHttpBinding" bindingConfiguration="UserNameSecurity"
contract="IMyService" />
在服务器端,您需要定义如何对用户进行身份验证 - 使用 Windows(Active Directory 域)或使用 ASP.NET 成员资格提供程序(及其关联的用户数据库):
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="MembershipProvider"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
在这种情况下,将根据 ASP.NET 成员数据库检查您的用户名/密码。
如果这一切都在公司内部的 Intranet 上,我宁愿使用集成的 Windows 安全性 - 它更容易设置和使用,并且更可靠和安全。但它只适用于公司内部,公司防火墙内部。
马克
于 2009-07-29T13:48:57.863 回答