Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单SSO-使用自定义身份验证-CAS或某些Oauth或openid服务器?_Java_Ruby_Oauth_Single Sign On_Cas - Fatal编程技术网

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

Java 简单SSO-使用自定义身份验证-CAS或某些Oauth或openid服务器?,java,ruby,oauth,single-sign-on,cas,Java,Ruby,Oauth,Single Sign On,Cas,我想知道更多关于这个项目的情况 解决单个问题的不同方法 登录及其利弊。您是否使用过一种特定的解决方案,请告诉我它的优点,并告诉我其局限性或次优部分 下面 这是我想要的细节 知道,还是不明白 单点登录是一个巨大的话题,就像。我学的越多,问题就越多 首先,我不明白令牌验证的必要性,它有什么好处 它更安全吗?我想它很容易受到中间人攻击。客户端也应该使用ssl吗 让我们现实一点,这是我们的需要:如果用户已经登录我们的某个应用程序,我会自动识别/登录用户 my-php-app.com my-java-a

我想知道更多关于这个项目的情况 解决单个问题的不同方法 登录及其利弊。您是否使用过一种特定的解决方案,请告诉我它的优点,并告诉我其局限性或次优部分

下面 这是我想要的细节 知道,还是不明白

单点登录是一个巨大的话题,就像。我学的越多,问题就越多

首先,我不明白令牌验证的必要性,它有什么好处

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

让我们现实一点,这是我们的需要:如果用户已经登录我们的某个应用程序,我会自动识别/登录用户

  • my-php-app.com
  • my-java-app.com
  • my-ruby-app.com
(我们有许多用不同语言编写的网络应用程序)

我们希望(保留)我们自己的身份验证规则和用户存储,但可能会添加一些Oauth2提供商,如facebook connect。我们希望它对用户非常简单,对使用它的开发人员非常简单

你会怎么做

  • CAS
  • Openid?我可以用它进行集中身份验证吗
  • 其他的?还是使用OAuth的服务器
在客户端,您会使用iframe(如lightbox)来显示重定向的页面吗?为什么


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

saml实现不会提供 指向目标时的sso(自动登录) 浏览www.yetanother-myapp.com


我研究过的一些相关问题:

  • -他的需求描述不是我想要的,他描述了
  • -嗯,我不确定我从中学到了什么

谢谢你教育我

我可以回答一些有关CAS的问题,因为我以前使用过它们。我没有OAuth方面的经验,因此不会对此发表评论

首先,我不明白CA的令牌验证的必要性,它有什么好处

CAS用于SSO目的。当您有多个应用程序(不同TLD上的桌面应用程序/Web应用程序)希望从单个源进行身份验证时,可使用此选项

它更安全吗?我注意到它是基于重定向的,因此同样会受到中间人攻击,就像没有额外令牌验证步骤的“自定义”身份验证服务器一样。我错过的是中科院的保安吗

身份验证服务器使用SSL来防止MitM攻击。但我不认为这是SSO/CAS特有的问题,因为即使应用程序自己进行身份验证,您也会遇到同样的问题。也许您可以告诉我们您担心CAS设置中的哪种MitM攻击

令牌的目的是提供单次注销和/或超时吗?(我们不想要它,我们的用户会讨厌我们。)我一直在研究CAS,因为有一些很棒的Ruby实现,但我不确定它是否是我们需要的

令牌只是应用程序在没有密码的情况下对您进行身份验证的一种方式。它们是与您的用户凭据关联的短寿命/单次使用的令牌。应用程序向CAS服务器提供令牌,CAS服务器用凭据(如果有)进行回复。可以实现单次签出和超时,但不直接与令牌绑定

我希望这是清楚的。我试着做一个高层次的解释。如果有任何部分不清楚或您想了解更多细节,请随时询问细节

编辑:我找到了一个更好的简单解释,解释了CAS的工作原理(页面的其余部分讨论了代理身份验证。这更复杂,但前几段是我们在这里讨论的简单案例)

我转到我的门户实例。它将我重定向到CAS登录。CAS检测到我的安全cookie并进行单点登录,这样我就不必再次提供用户名和密码。CAS将我重定向回门户。门户验证票证,将我登录到门户,我看到我的默认布局中填充了一些很酷的频道,告诉我外面很冷,有什么新闻

请注意,门户没有获取我的密码


这是基于我的经验: SSO(单点登录)与两种场景相关:- i) 我非常了解你(涉及两方) ii)嘿,朋友,见见我的朋友(涉及三方)

当然,第二种场景需要重定向/转发机制,因为第三方通常只是集中式的身份验证/授权服务

现在,就实现而言,SSO需要评估两个方面:-

a) 不同各方/系统(无论是相关组织的内部/外部)如何管理用户凭据。这称为身份管理

b) SSO信息应如何在各方之间流动?在大多数情况下都是安全的

我认为身份管理比决定如何安全地传递信息更为重要,因为对于后一部分,有很多加密/解密技术可用。在一组支持SSO的系统中,独立管理毫无疑问是不同的

现在,身份管理可以通过一个简单的用户ID(如果它在所有参与系统上都可用)或者通过内部开发的XML内容、SAML有效负载或第三方令牌来实现。我认为token只是一个通用术语,指的是以安全方式包含用户凭证的容器,以及有关执行的一些安全过程的信息

@Ole,在谈到了SSO的所有基础知识(从我的角度来看)之后,我认为您应该更多地关注如何跨多个系统识别用户及其角色,例如:您的用户存储,开放H2提供者;所以多想想
<SingleSignOnReqType>   <sourceID>XYZ</sourceID>    <source-domain>my-java-app.com</source-domain>  <user-credentials>...</<user-credentials>
        <security-credentials>...</<security-credentials> </SingleSignOnReqType>