c# – WCF用户认证和授权
我需要找到一种方法来验证/授权WCF服务中的用户.我正在使用外部身份验证服务来存储用户的凭据.
例如. “Bob使用我们的loginmethod,我们将凭据发送到身份验证服务,该服务让我们知道这些凭据是否正确.” 现在正在客户端上创建会话,但它需要移动到服务器端.我们不能依赖客户的安全性. 这可以通过使用安全cookie来解决,还是你们中有人有更好的建议? 编辑!我只能使用身份验证服务器而无法访问它 解决方法
您所描述的问题是一个众所周知的问题(至少)有两个标准化解决方案.
使用WS-Trust的联合 第一个选项是基于SOAP的选项,它使用基于WS-Trust的活动联合.在此解决方案中: >您的客户端为身份验证服务提供凭据 在这个模型中,通常的术语是: >您的身份验证服务是安全令牌服务 这听起来很复杂,但在使用Windows Identity Foundation的.Net和WCF中得到了很好的支持.有很多可用的样本(可能全部)可以通过WCF配置而不是代码完成. 这非常适合客户端具有加密功能的场景(如.Net客户端)以及存在良好框架的场景(如WIF).对于低规格的客户端(例如浏览器和某些手机),或者您无法控制客户端的情况,它不太好. 它通常用于企业方案,包括企业到企业联合.在互联网场景中使用较少. 它的优点是 >它是标准化的,因此通常得到框架的良好支持 可在此处找到概述: http://msdn.microsoft.com/en-us/magazine/ee335707.aspx 谷歌将向您展示更多的演练和示例. 联邦使用OAUth 2 在此解决方案中: >客户端显示身份验证服务提供的一些UI(通常是网页) 在OAuth术语中: >您的身份验证服务是授权服务器 同样,这听起来很复杂,但它在.Net中得到了相当好的支持.目前可能不如WS-Trust方法.它受Windows Azure AD和客户端支持,使用Windows Azure身份验证库.其他服务可以使用这种方法 – 例如Facebook的. 这在哪里工作得很好 >您的客户端规格较低或不具备加密功能(例如浏览器或某些手机) 它在互联网应用程序中非常常用,您作为WCF服务的所有者不一定了解用户或客户端.在某些方面它是一个不太完整的标准(例如,它没有确切地定义身份验证的发生方式),因此,切换到备用授权服务器就不那么容易了. 它的优点是: >它更简单,因此具有更广泛的平台支持 官方.Net对此的支持是在Windows Azure AD身份验证库中 http://msdn.microsoft.com/en-us/library/windowsazure/jj573266.aspx 还有其他开源组件,例如DotNetOpenAuth http://dotnetopenauth.net/ 哪种解决方案最适合您,主要取决于我所说的身份验证服务的性质.无论您是在企业还是互联网场景中.如果是auth.服务可以很容易地适应成为WS-Trust安全令牌服务(STS),那么这将是一条很好的途径.如果向auth添加一些Web UI.服务是可行的,OAuth可能会更好. 或者,如果两个选项都不可行,您可以从一种方法借用模式,并在不使用完整标准的情况下使用它. 祝好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |