我想了解更多有关解决Single Sign- On的不同方法及其优缺点。您是否使用过一种特定的解决方案,请告诉我该解决方案有什么好处,并告诉我哪些限制或次优部分是什么。 以下是我想了解或不了解的详细信息。
我想了解更多有关解决Single Sign- On的不同方法及其优缺点。您是否使用过一种特定的解决方案,请告诉我该解决方案有什么好处,并告诉我哪些限制或次优部分是什么。
以下是我想了解或不了解的详细信息。
如Wikipedia中所列, SSO是一个巨大的话题。我学得越多,我就有更多的问题。
首先,我不了解 CAS令牌验证的必要性,这有什么好处?
它更安全吗? 我猜它很容易受到中间人攻击。客户也应该使用ssl吗?
让我们现实起来,这是我们的需求: 如果已经在我们的一个应用程序上登录,则自动识别/登录用户。
(我们有许多用不同语言编写的Web应用程序)
我们想要(保留)我们自己的身份验证规则和用户存储,但可能会添加一些Oauth2提供程序,例如facebook- connect。我们希望它对用户来说简单而对使用它的开发人员来说简单。
你会怎么做?
在客户端,您会使用Lightframe之类的iframe来显示重定向的页面吗?为什么/为什么不呢?
与SSO相关的另一个问题: Saml 经常(错误地)混入SSO讨论中-如果我这么说,我是否理解?
将浏览器指向www.yetanother-myapp.com时,saml实现不会提供sso(自动登录)吗?
Oauth旨在对应用程序进行身份验证,以使它们以用户的名义行事。例如,推特客户端可以使用用户帐户发布推文。如Facebook所示,它可用于单点登录,但这需要一些额外的工作。
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吗?
是。
全 屏幕重定向 是最简单的事。我将从此开始使其工作。无论如何,许多应用程序仍然需要在登录后重新加载当前页面,以显示仅对登录用户可见的部分。
一个 I帧* 有你需要摆脱它一旦登录完成的问题。对于CAS,有一个关于如何 将 CAS登录表单 直接嵌入 到应用程序的HTML代码中的教程。另一种选择是像Facebook Connect一样显示一个弹出窗口。 *