我有一个现有的工作 WPF 应用程序,在其中我对后端 WCF 服务实现了自己的自定义身份验证。当我从 WPF 访问此服务时,按如下方式设置 ServiceProxy:
proxy.ClientCredentials.UserName.UserName = "test";
proxy.ClientCredentials.UserName.Password = "pass";
因为我使用的是 HTTPS,所以 uid/pwd 是安全的。
在 Silverlight 2 中,代理上没有 .ClientCredentials 对象。我发现的唯一选择是向 Uid/Pwd 的每个 WCF 公开方法添加两个字符串参数。这对我来说听起来很疯狂,一定有更好的方法,不是吗?
最佳答案
不幸的是,Silverlight 2 仅支持 basicHttpBinding,这意味着它不支持 ClientCredentials。
您有 2 个选择: 1.正如您提到的,传递用户名并传递每个请求。 2. 使用asp.net身份验证并在您的服务中启用asp.net兼容模式。
-- 注意,我下面提到的 TransportSecurityWithMessageCredentials 似乎不适用于 SL3,因此 SL2 和 SL3 的选项只有上面的 2 个
Silverlight 3 通过 TransportSecurityWithMessageCredentials 改进了这个故事,您可以在 Silverlight Web 服务团队博客上找到更多相关信息(可以链接到它,但显然因为我是新用户,所以不被允许0
HTH
关于wcf - Silverlight WCF 身份验证(从 WPF 到 Silverlight 的帮助),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/885326/