oma*_*oma 23 ruby java cas oauth single-sign-on
我想更多地了解解决单点登录的不同方法及其优缺点.您是否使用过一个特定的解决方案,告诉我它有什么好处,并告诉我有哪些限制或次优部分.
以下是我想知道或不明白的细节.
SSO是一个巨大的主题,如维基百科中所列.我学的越多,我的问题就越多.
首先,我不了解CAS的令牌验证的必要性,它有什么用?
它更安全吗?我猜它很容易受到像中国人那样的中间人攻击.客户还应该使用ssl吗?
让我们变得真实,这是我们的需求:如果已经在我们的某个应用程序中登录,则自动识别/登录用户.
(我们有很多用不同语言编写的webapps)
我们希望(保留)我们自己的身份验证规则和用户存储,但可能会添加一些Oauth2提供程序,如facebook-connect.我们希望它对用户来说简单易用,对于使用它的开发人员来说简单.
你会怎么做?
在客户端,您是否会使用iframe(如灯箱)来显示重定向的页面?为什么/为什么不呢?
还有另一个与SSO相关的问题:Saml经常(错误地)混入SSO讨论中 - 如果我这么说,我能理解吗?
当浏览器指向www.yetanother-myapp.com时,saml实现不会提供sso(自动登录)?
我研究过的一些相关的SO问题:
谢谢你教育我!
Hen*_*ann 24
Oauth旨在对应用程序进行身份验证,让它们以用户的名义行事.例如,Twitter客户端可以用用户的帐户发布推文.它可以用于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吗?
是.
在客户端,您是否会使用iframe(如灯箱)来显示重定向的页面?为什么/为什么不呢?
全屏幕重定向是最简单的事.我会从那开始让它运作起来.许多应用程序要求在登录后重新加载当前页面,以便显示仅对登录用户可见的部分.
一个I帧有你需要摆脱它一旦登录完成的问题.对于CAS,有一个关于如何将 CAS登录表单直接嵌入到应用程序的HTML代码中的教程.另一个选择是显示像Facebook Connect那样的弹出窗口.
我之前可以回答一些关于CAS的问题.我没有OAuth的经验,因此不会评论它.
首先,我不了解CAS的令牌验证的必要性,它有什么用?
CAS用于SSO目的.当您有多个应用程序(不同TLD上的桌面应用程序/ Web应用程序)想要从单一来源进行身份验证时使用它.
它更安全吗?我注意到它是基于重定向的,因此同样受到中间人攻击,就像没有额外令牌验证步骤的"自定义"auth服务器一样.我缺少CAS中的安全性吗?
身份验证服务器使用SSL来防止MitM攻击.但我不知道这是一个特定于SSO/CAS的问题,因为即使应用程序正在进行自己的身份验证,您也会遇到同样的问题.也许您可以告诉我们您使用CAS设置担心哪种MitM攻击
令牌的目的是提供单点注销和/或超时吗?(我们不想要它,我们的用户会讨厌我们.)我一直在研究CAS,因为有一些很棒的Ruby实现,但我不确定它是我们需要的.
令牌只是应用程序无需密码即可对您进行身份验证的一种方式.它们是与您的用户凭据关联的短寿命/单次使用的令牌.应用程序将令牌提供给CAS服务器,CAS服务器回复带有凭证(如果有)与其关联.可以实现单点登出和超时,但不能直接与令牌绑定.
我希望这很清楚.我试图让它成为一个高级别的解释.如果任何部分不清楚或者您想了解更多细节,请随时询问具体细节.
编辑:我在http://www.jasig.org/cas/proxy-authentication上找到了一个更好的简单解释CAS如何工作(页面的其余部分讨论代理身份验证.哪个更复杂,但前几段是我们在这里讨论的简单案例)
我去了我的Portal实例.它将我重定向到CAS以登录.CAS检测到我的安全cookie并执行单点登录,因此我不必再次提供用户名和密码.CAS将我重定向回门户网站.门户验证了票证,将我登录到Portal我看到我的默认布局中填充了一些很酷的频道告诉我外面真的很冷,新闻中有什么.
请注意,门户网站没有获取我的密码.