【发布时间】:2011-04-18 08:48:10
【问题描述】:
我有一个使用不同方法的 UserAccountService,其中一些需要对用户进行身份验证(例如 ChangePassword、ChangeUserData),而另一些则不需要(RegisterUser)。
但是我似乎无法让它工作,所以只有一些方法需要身份验证。
需要认证的方法用
修饰[PrincipalPermission(SecurityAction.Demand, Authenticated = true)]
在我的 app.config 中,我指定了一个使用加密并请求用户名凭据的绑定:
<binding name="authenticatedBinding">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
</security>
</binding>
(我使用的是 basicHttpBinding)
我还配置了自定义身份验证提供程序:
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="..." />
</serviceCredentials>
使用此配置,我似乎无法在未经身份验证的情况下调用服务上的任何方法。
如果我省略了安全配置,那么我可以调用不需要身份验证的方法,但不再传输消息凭据。
我必须如何配置我的服务,以便它允许调用所有方法并且只需要在 PrincipalPermission 需要时设置用户名/密码?
我正在使用 Silverlight 作为我的客户,如果这很重要的话...
谢谢!
【问题讨论】:
标签: c# silverlight wcf web-services authentication