2

基本上,我有以下场景和信息:

  • 我们正在使用 HTTPS。
  • 我们希望在用户首次登录时通过用户/密码对用户进行身份验证。
  • 在他们通过身份验证后,我希望将来对其他服务(不是登录服务)的任何调用都使用用户名和某种会话(以防密码在会话中间发生变化)。
  • 我想确保我的会话可以超时并以某种方式控制它们,如果用户尝试调用服务并且他们没有会话,他们会收到错误(因为他们没有登录)。不确定是否有 WCF 内置方式来以这种方式进行会话,或者我是否必须使用数据库进行自定义。
  • 我认为我们想使用 WSHttpBinding(不是 BasicHttpBinding),90% 的肯定。

我似乎无法弄清楚如何做到这一点。很多时候,我会找到有关客户端代码执行client.ClientCredentials.UserName.UserName = usernameclient.ClientCredentials.UserName.Password = password. 但是,这不起作用,因为我的服务器检查的是什么?我正在尝试获取该信息并根据用户/通行证数据库对其进行验证。我不打算使用 Windows 身份验证或那种(因为我不关心谁登录到计算机,只关心谁登录到应用程序)。

4

1 回答 1

2

您想使用安全令牌服务 (STS) 进行身份验证并获取一个安全令牌(可能是 SAML),以识别用户,然后将其传递给您的其他服务,他们可以只使用身份信息来识别和授权,因为他们相信 STS 已经预先验证了用户的身份。

这是一个需要讨论的大主题,所以我建议搜索 WCF STS并进行更多研究,但这绝对是我推荐的方向。如果您要构建自己的 STS 实现,我还建议您考虑使用Windows Identity Foundation (WIF)组件来简化您的开发工作。

这是 WIF v1.0 的下载链接,这是本答案时的最新版本。

于 2011-05-26T00:30:00.620 回答