Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF身份验证——对用户进行一次身份验证/传递,然后以其他方式进行身份验证?_Wcf_Authentication_Https_Wshttpbinding_Basichttpbinding - Fatal编程技术网

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

WCF身份验证——对用户进行一次身份验证/传递,然后以其他方式进行身份验证?,wcf,authentication,https,wshttpbinding,basichttpbinding,Wcf,Authentication,Https,Wshttpbinding,Basichttpbinding,基本上,我有以下场景和信息: 我们正在使用HTTPS 我们希望在用户首次登录时通过user/pass对其进行身份验证 LI>在认证之后,我希望将来的其他服务(不是登录服务)调用用户名和某种会话(如果会话中间的密码更改),。 我想确保我的会话可以超时,并以这样的方式控制它们:如果用户试图调用服务,但他们没有会话,他们就会出错(因为他们没有登录)。不确定是否有一种WCF内置的方式以这种方式进行会话,或者我是否必须使用数据库进行自定义 我认为我们希望使用WSHttpBinding(而不是Basic

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

  • 我们正在使用HTTPS
  • 我们希望在用户首次登录时通过user/pass对其进行身份验证
  • <> LI>在认证之后,我希望将来的其他服务(不是登录服务)调用用户名和某种会话(如果会话中间的密码更改),。
  • 我想确保我的会话可以超时,并以这样的方式控制它们:如果用户试图调用服务,但他们没有会话,他们就会出错(因为他们没有登录)。不确定是否有一种WCF内置的方式以这种方式进行会话,或者我是否必须使用数据库进行自定义
  • 我认为我们希望使用WSHttpBinding(而不是BasicHttpBinding),这一点90%确定

我只是不知道怎么做。通常情况下,我会找到有关执行
client.ClientCredentials.UserName.UserName=UserName
client.ClientCredentials.UserName.Password=Password
的客户端代码的信息。但是,这根本不起作用,因为我的服务器在检查什么?我试图获取这些信息,并根据用户/通行证数据库对其进行验证。我不希望使用Windows身份验证或类似的身份验证(因为我不关心谁登录到计算机,只关心谁登录到应用程序)。

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

这是一个需要讨论的大问题,所以我建议进行更多的研究,但这绝对是我建议的方向。如果您打算构建自己的STS实现,我还建议您考虑使用组件来简化开发工作


哪一个是本回答时的最新版本。

是免费的吗?因为当我用谷歌搜索WIF时,它会把我带到一个MSDN页面,上面写着“下载评估”…100%免费。增加了v1下载链接来回答问题。