WCF身份验证 - 验证用户/传递一次,然后以其他方式验证?

时间:2011-05-25 20:10:39

标签: wcf authentication https wshttpbinding basichttpbinding

基本上,我有以下方案和信息:

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

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

1 个答案:

答案 0 :(得分:2)

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

这是一个很容易讨论的主题,因此我建议searching for WCF STS并做一些更多的研究,但这绝对是我推荐的方向。如果您要构建自己的STS实现,我还建议您使用Windows Identity Foundation (WIF)组件来简化开发工作。

Here's the download link for WIF v1.0这是本答复时的最新版本。