0

我有这些组件:

  1. ASP.NET 应用程序(网站)
  2. WIF 安全
  3. WCF 服务(通过 2 保护)

假设 WCF 服务 (TestService) 具有一种安全方法:

  Boolean IsItWorking();

现在网站中的页面执行以下步骤:

  1. 转到受限页面
  2. 提供登录凭据
  3. 处理 WIF 请求/响应 => 创建的 cookie
  4. 页面将 ClientCredentials 提供给单例!WCF 客户端参考
  5. 页面调用 TestService.IsItWorking()

它工作得很好,直到我意识到单例客户端实例不起作用。如何向客户提供凭据?在哪里保存凭证?如何正确解决这种情况?

4

1 回答 1

1

可以使用 WCF WSHttpBinding 简单地完成对 WCF 服务的基于用户名/密码的身份验证。有很多关于如何做到这一点的示例代码。

http://codebetter.com/petervanooijen/2010/03/22/a-simple-wcf-service-with-username-password-authentication-the-things-they-don-t-tell-you/

不过,有一些警告伴随着这一点。如果您在方案中引入身份提供者(本地联合身份与第 3 方身份提供者),WIF 会为您提供更多选择。然后,当用户登录时,WIF 会为您的 ASP.NET 应用程序提供一个安全令牌以及 ASP.NET cookie。

此安全令牌充当声明的工具,并且您的 ASP.NET 应用程序还可以重用此令牌来向您的 WCF 后端进行身份验证。WIF 可帮助您在 ASP.NET 和 WCF 端进行此配置。查看 WIF 配置中的 SaveBootstrapTokens=true 属性,并查看 ChannelFactory.CreateChannelWithIssuedToken() 以使用令牌与 WCF 服务通信。WIF SDK有一个 WSTrustChannel 示例来演示它的工作原理,还有更多在线示例。

于 2012-12-05T23:43:56.003 回答