我有一个UserAccountService,它有不同的方法,其中一些需要用户进行身份验证(例如ChangePassword,ChangeUserData),而另一些则不需要(RegisterUser)。
然而,似乎我似乎无法让它工作,因此只有一些方法需要身份验证。
需要身份验证的方法用
修饰[PrincipalPermission(SecurityAction.Demand, Authenticated = true)]
在我的app.config中,我指定了一个使用加密并请求UserName凭据的绑定:
<binding name="authenticatedBinding">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
</security>
</binding>
(我正在使用basicHttpBinding)
我还配置了自定义身份验证提供程序:
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="..." />
</serviceCredentials>
使用此配置,我似乎无法在未经过身份验证的情况下调用服务上的任何方法。
如果我省略安全配置,那么我可以调用不需要身份验证的方法,但不再传输邮件凭据。
如何配置我的服务,以便它允许调用所有方法,并且只需要在PrincipalPermission需要时设置用户名/密码?
我使用Silverlight作为我的客户,如果这很重要......
谢谢!
答案 0 :(得分:3)
安全设置可以在终点级别进行细粒度处理,但不能在合同范围内进行细化 - 因此您无法将安全性和安全性结合起来。以你想要的方式不安全的方法。我会建议