Oauth旨在对应用程序进行身份验证,以使它们以用户的名义行事。例如,推特客户端可以使用用户帐户发布推文。如Facebook所示,它可用于单点登录,但这需要一些额外的工作。
比较CAS和OpenID
CAS是具有一个帐户权限的 集中式系统 。OpenID是一个 分布式系统
,基本上任何人都可以在其中建立身份提供者。当然,您可以限制消费者只接受自己的身份提供者。
OpenID具有两个(不兼容)标准,以提供有关帐户的 其他属性 ,公共库或多或少地支持这些 属性
。在标准设置中,CAS仅提供用户名。虽然CAS在理论上确实支持属性交换,但是目前只有PHP客户端支持它。
OpenID和CAS都可以 自动登录
。如果用户已经登录,浏览器将立即重定向回您的应用程序。但是,在简单的设置中,如果用户未登录,身份提供者将显示一个登录页面。因此,如果您希望允许匿名访问您的身边,则需要人们单击专用的登录链接。
幸运的是,OpenID和CAS都允许进行 透明的登录尝试
。在这种模式下,不显示登录表单。无论是否带有身份验证信息,浏览器都将立即重定向回。换句话说:您可以将所有新用户(无会话)重定向到身份提供者,只要他们访问您的站点。有一个漂亮的图表详细解释了这一点。CAS将其称为“网关模式”,它是通过将gateway =
true附加到登录URL来实现的。在OpenID中,它称为“立即模式”,URL参数为openid.mode = checkid_immediate
CAS支持 单点注销 。OpenID没有。
我的个人经验是,对于所有常见的编程语言,CAS都非常容易设置并且非常可靠,并带有高质量的库。OpenID是一个非常复杂的系统,因此存在许多微小的不兼容性。但是,OpenID允许使用Google帐户。
答案
首先,我不了解CAS令牌验证的必要性,这有什么好处?
OpenID和CAS都要求您让身份提供者验证提供的令牌。否则,攻击者可能能够创建自己的令牌或使用用户在注销之前创建的令牌。
客户也应该使用ssl吗?
是。
在客户端,您会使用Lightframe之类的iframe来显示重定向的页面吗?为什么/为什么不呢?
全 屏幕重定向 是最简单的事。我将从此开始使其工作。无论如何,许多应用程序仍然需要在登录后重新加载当前页面,以显示仅对登录用户可见的部分。
一个 I帧* 有你需要摆脱它一旦登录完成的问题。对于CAS,有一个关于如何 将 CAS登录表单 直接嵌入
到应用程序的HTML代码中的教程。另一种选择是像Facebook
Connect一样显示一个弹出窗口。 *



