我创建了一个带有aspnet角色的wcf服务&安全
当我在一个网站上消费它并尝试检查时,用正确的用户名和&密码它完美,但用户名不正确密码它给我一个错误:
从另一方收到了不安全或不正确安全的故障 派对。请参阅内部FaultException以获取故障代码和详细信息。
我原本希望得到“拒绝访问”。
所以,不知道为什么???
更新
你是对的我们可以添加FaultContracts ...但即使我添加它也给我同样的错误..而且我试图检查相同的用户isinrole否则然后外部解雇FaultException ......
仍然得到相同的错误没有得到实际的“访问被拒绝”。
只是为了更新您,我已经使用aspnet表单身份验证来检查凭据&角色...... 代码有点像
public class SampleService : ISampleService
{
[PrincipalPermission(SecurityAction.Demand, Role = "admin")]
public string GetCurrentTime()
{
if (!Roles.IsUserInRole(HttpContext.Current.User.Identity.Name, "admin"))
return DateTime.Now.ToString();
else
throw new FaultException("Access is denied");
}
}
[ServiceContract]
public interface ISampleService
{
[OperationContract]
string GetCurrentTime();
}
在客户端,我消费的地方,这项服务......
protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
ChannelFactory<AuthCustWithAspnetRoleService.ISampleService> factory = new ChannelFactory<AuthCustWithAspnetRoleService.ISampleService>("*");
factory.Credentials.UserName.UserName = txtUserName.Text.Trim(); // "admin";
factory.Credentials.UserName.Password = txtPassword.Text.Trim(); // "admin";
AuthCustWithAspnetRoleService.ISampleService proxy = factory.CreateChannel();
lblMessage.Text = proxy.GetCurrentTime();
}
catch (Exception ex)
{
lblMessage.Text = ex.Message;
}
}
希望这会引导您更多地了解我的代码,您可以更详细地帮助我.... 我不知道为什么其他(很少参考,我理解这个概念)得到“访问被拒绝”,我不是直接从系统得到这个......
答案 0 :(得分:1)
您应该使用FaultContracts来避免此消息。
答案 1 :(得分:0)
我刚遇到此问题,不得不关闭WCF绑定的安全上下文。您需要在客户端和服务中的绑定上关闭它们。
如果你的WCF是由IIS托管的,那么这是配置文件:
<ws2007FederationHttpBinding>
<binding>
<security mode="TransportWithMessageCredential">
<message establishSecurityContext="false" />
</security>
</binding>
</ws2007FederationHttpBinding>