如何在Silverlight 5和WCF中提供摘要式身份验证的凭据

时间:2014-05-22 16:50:09

标签: c# wcf silverlight authentication silverlight-5.0

我们目前有一个Silverlight 5 Out-of-browser应用程序,它调用了许多WCF Web服务。

我希望使用摘要式身份验证来保护这些服务,但是我无法让Silverlight真正提交凭据。

// step one - find and remove default endpoint behavior 
        var defaultCredentials =        channelFactory.Endpoint.Behaviors.Find<ClientCredentials>();
        channelFactory.Endpoint.Behaviors.Remove(defaultCredentials);

        // step two - instantiate your credentials
        ClientCredentials loginCredentials = new ClientCredentials();
        loginCredentials.UserName.UserName = "myusername";
        loginCredentials.UserName.Password = "mypassword";

        // step three - set that as new endpoint behavior on factory
        channelFactory.Endpoint.Behaviors.Add(loginCredentials); //add required ones

当我使用此代码时,客户端首先发出匿名请求,服务器响应401结果代码,然后Silverlight会提示我输入凭据。

在应用程序的其他部分,我对Rest服务进行WebRequest,在这种情况下,我可以提供摘要式身份验证的凭据,并且它可以正常工作。

更奇怪的是,如果我首先使用凭据创建WebRequest,Silverlight似乎会缓存这些凭据并将其用于WCF调用。但几秒钟后,这些凭据变为无效,随后的WCF调用再次出现提示。

有没有办法在Silverlight 5中使用WCF进行摘要式身份验证?

0 个答案:

没有答案