2

我制作了一个简单的 WCF-REST 服务,将其发布到 Azure 并使用 X.509 证书激活 SSL。

我也想为此服务设置一些身份验证。我可以通过以明文形式发送凭据标头来轻松解决这个问题,因为现在所有流量都已加密,但我计划使用某种联合身份验证,以便用户可以利用单点登录。

这个领域相对较新,但似乎已经充斥着过时的技术,这使得没有经验的人很难找到当前的最佳实践和可靠的工具集。我希望有丰富经验的人可以提供一些见解,并为我们所有人提供最新的快速启动。

有哪些现代的、最先进的联合身份验证选项?

OpenId 是唯一的技术吗?

实现 SSO 难吗?

一个相对缺乏经验但相当聪明的开发人员能否根据一些教程实现这一点?还是底层技术过于复杂,使得第三方 API/框架更受欢迎?(如 DotNetOpenAuth)

特别是对于 Azure 和 WCF,“Windows Azure Active Directory 访问控制”真的有必要吗,或者这就像用大锤拍苍蝇一样?

4

1 回答 1

6

身份验证、授权和身份联合是非常复杂的主题,不应掉以轻心。安全性之所以是一个大而复杂的问题,是因为它非常难以解决!

如果您在互联网身份和安全方面还没有丰富的经验,请不要尝试使用自己的身份验证机制:正确且安全地实施身份验证机制非常非常困难。

例如,在您上面的场景中,您没有考虑确保您在 HTTP 标头中传递的凭据对于您要呈现给的每个站点都是匿名的,并且它们在一段时间后过期,它们不能被重放,它们不能被恶意的第 3 方合成,等等。

强烈建议您使用预先存在的身份验证机制和支持框架。事实上,由于您是 Azure 用户,将最终用户身份联合添加到您的站点的最简单方法是使用Windows Azure 移动服务的新身份验证功能

如果您仍想了解有关身份和身份联合的更多信息,我鼓励您在选择要使用的正确身份验证类型之前研究此主题:

基于声明的身份和访问控制指南(第 2 版)开始。这将为您提供充分理解该主题以做出正确决定所需的大部分背景和知识。

一旦您掌握了这个主题,我建议您阅读 Vittorio Bertocci 在http://cloudidentity.com上所写的所有内容。

HTH。

于 2013-04-26T19:18:08.513 回答