我需要找到一种在WCF服务中对用户进行身份验证/授权的方法。我正在使用存储用户凭据的外部身份验证服务。
例如。“鲍勃使用我们的登录方法,我们将凭据发送到身份验证服务,该服务让我们知道这些凭据是否正确。” 如果Bob发送了另一个请求,我们需要知道Bob是否已经通过身份验证。
现在正在客户端上创建会话,但是它需要移动到服务器端。我们不能依靠客户来保证安全。
可以使用安全性cookie来解决此问题,或者您有更好的建议吗?
编辑!我只能使用身份验证服务器,而无权访问它
您所描述的问题是一个众所周知的问题,该问题具有(至少)两个标准化解决方案。
使用WS-Trust的联合
第一个选项是基于SOAP的选项,它使用基于WS-Trust的主动联合。在此解决方案中:
在此模型中,常用术语是:
这听起来很复杂,但是使用Windows Identity Foundation在.Net和WCF中得到了很好的支持。有许多可用的示例,其中大部分(也许全部)可以通过WCF配置而不是代码来完成。
这非常适合客户端具有加密功能(如.Net客户端)并且存在良好框架(如WIF)的方案。对于浏览器和某些电话等低规格客户端,或者您无法控制客户端的情况,它不是很好。
它通常用于企业方案中,包括企业到企业联盟。在Internet场景中使用频率较低。
它的优点是
可以在这里找到概述:
http://msdn.microsoft.com/zh-CN/magazine/ee335707.aspx
Google会向您展示更多的演练和示例。
使用OAUth 2进行联合
在此解决方案中:
在OAuth术语中:
同样,这听起来很复杂,但是.Net对此提供了很好的支持。虽然目前可能还不如WS-Trust方法。Windows Azure AD和客户端使用Windows Azure身份验证库支持它。可能其他服务使用此方法-例如Facebook。
这在哪里很好用
它在Internet应用程序中非常常用,在该应用程序中,您作为WCF服务的所有者不一定了解用户或客户端。在某些方面,它是一个不太完整的标准(例如,它没有确切定义身份验证的方式),因此,切换到备用授权服务器比较不容易。
它的优点是:
Windows Azure AD身份验证库中对此的官方.Net支持
http://msdn.microsoft.com/zh-CN/library/windowsazure/jj573266.aspx
也有其他开源组件,例如DotNetOpenAuth
我会说哪种方法最适合您取决于我的身份验证服务的性质。以及您是处于企业场景还是互联网场景。如果认证。可以很容易地将服务修改为WS-Trust安全令牌服务(STS),这将是一个不错的选择。如果向身份验证添加一些Web UI。服务是可行的,OAuth可能更好。
或者,如果两种方法都不可行,则可以仅采用一种方法中的模式并使用该方法而无需遵循完整的标准。
祝好运!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句