当前位置: 首页 > 面试题库 >

简单的SSO-使用自定义身份验证-CAS或某些Oauth或OpenID服务器?

单于皓轩
2023-03-14
问题内容

我想了解更多有关解决Single Sign-
On的不同方法及其优缺点。您是否使用过一种特定的解决方案,请告诉我该解决方案有什么好处,并告诉我哪些限制或次优部分是什么。

以下是我想了解或不了解的详细信息。

如Wikipedia中所列, SSO是一个巨大的话题。我学得越多,我就有更多的问题。

首先,我不了解
CAS
令牌验证的必要性,这有什么好处?

它更安全吗? 我猜它很容易受到中间人攻击。客户也应该使用ssl吗?

让我们现实起来,这是我们的需求: 如果已经在我们的一个应用程序上登录,则自动识别/登录用户。

  • my-php-app.com
  • my-java-app.com
  • my-ruby-app.com

(我们有许多用不同语言编写的Web应用程序)

我们想要(保留)我们自己的身份验证规则和用户存储,但可能会添加一些Oauth2提供程序,例如facebook-
connect。我们希望它对用户来说简单而对使用它的开发人员来说简单。

你会怎么做?

  • CAS?
  • Openid?我可以使用它进行集中身份验证吗?
  • 其他?还是具有OAuth的服务器?

在客户端,您会使用Lightframe之类的iframe来显示重定向的页面吗?为什么/为什么不呢?

与SSO相关的另一个问题: Saml 经常(错误地)混入SSO讨论中-如果我这么说,我是否理解?

将浏览器指向www.yetanother-myapp.com时,saml实现不会提供sso(自动登录)吗?


问题答案:

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一样显示一个弹出窗口。
*



 类似资料:
  • 里格斯, Kim Zeevaarders荷兰

  • 问题内容: 我正在寻找一种CAS服务器,该服务器支持通过OAuth进行单点登录的Facebook / Twitter身份验证。我已经检查了JASIG- CAS服务器,但它似乎不支持它们。我的Java Web应用程序基于Spring Security 3和其他外部PHP应用程序。是否存在支持Facebook / Twitter的CAS服务器?或在JASIG上对此支持的扩展(或示例代码)? 问题答案:

  • 我想测试一个WSO2身份提供程序,实际上是它用OpenID配置的联合IdP,我计划使用TraSpeed工具对其进行测试。我正在WEB-INF配置中编辑travelocity.properties文件,将起始参数设置为以下值: 在Tomcat7服务器中声明映像时,它接受新的服务器配置,但代码仍将SAML身份验证激活为主要SSO机制,抛出错误: 是否可以仅使用OpenID堆栈在该Web工具中停用SAM

  • 我正在使用Spring OAuth2实现单独的资源和自定义身份验证服务器。我已经通过发出和验证JWT令牌配置了与身份验证服务器的交互,看起来一切都很好。 现在我正在尝试添加SSO功能,但真的坚持了下来。我研究了官方的Spring示例和附带的指南,但是当涉及到将SSO部分与自定义服务器身份验证连接时,它的措辞非常简短。而且实际上作者只使用外部提供程序资源(“user”信息)来显示进程。 我认为这是正

  • 在过去的几周里,我一直在努力掌握KeyClope,这样我就可以实现一种使用遗留提供商(基于Oracle,带有会话表和各种奇怪的东西)对用户进行身份验证的方法。我们计划在不久的将来解决这个问题,但目前我们必须解决这个问题,所以我们的想法是在前线使用KeyClope——利用它提供的主要好处,比如SSO——在需要身份验证的应用程序中省略传统的身份验证提供程序。 我读了一些关于构建自定义OIDC身份提供程

  • 所以在我的安装中似乎缺少了几个类。无论如何,我尝试在我的po.xml文件中包含所有需要的依赖项。 我的pom.xml文件: 我的QueryAndenCodeDatabaseAuthenticationHandler.java文件(尚未修改!): 最后是我的AbstractJDBCUserNamePasswordAuthenticationHandler.java(也未修改):