Questions tagged «single-sign-on»

5
使用CAS或OAuth进行SSO?
我想知道我是否应该使用CAS协议或OAuth +一些身份验证提供程序进行单点登录。 方案示例: 用户尝试访问受保护的资源,但未通过身份验证。 该应用程序将用户重定向到SSO服务器。 如果蜜蜂通过了身份验证,则用户将从SSO服务器获取令牌。 SSO重定向到原始应用程序。 原始应用程序针对SSO服务器检查令牌。 如果令牌正常,则将允许访问,并且应用程序知道用户ID。 用户执行注销,并同时从所有连接的应用程序中注销(单次注销)。 据我了解,这正是CAS发明的目的。CAS客户端必须实现CAS协议才能使用身份验证服务。现在,我想知道要在客户端(消费者)站点上使用CAS还是OAuth。OAuth是否可以替代CAS的那部分?是否应首选OAuth作为事实上的新标准?是否有易于使用的(不是Sun OpenSSO!)替代CAS的身份验证部分,支持不同的方法,如用户名/密码,OpenID,TLS证书...? 内容: 不同的应用程序应依赖SSO服务器的身份验证,并应使用类似于会话的内容。 这些应用程序可以是GUI Web应用程序或(REST)服务。 SSO服务器必须提供一个用户ID,这对于从中央用户信息存储中获取有关用户的更多信息(例如角色,电子邮件等)是必需的。 单点退出应该是可能的。 大多数客户端都是用Java或PHP编写的。 我刚刚发现WRAP,它可以成为OAuth的后续产品。它是Microsoft,Google和Yahoo指定的新协议。 附录 我了解到,即使OAuth可以用于实现SSO,也不是为身份验证而设计的,而只能与OpenID之类的SSO服务一起使用。 在我看来,OpenID是“新CAS”。CAS具有一些OpenID遗漏的功能(例如单点注销),但是在特定情况下添加遗漏的部分并不难。我认为OpenID已被广泛接受,最好将OpenID集成到应用程序或应用程序服务器中。我知道CAS也支持OpenID,但是我认为CAS与OpenID无关。

3
使用JWT进行跨域身份验证的单点登录流程
网络上有很多有关使用JWT(Json Web Token)进行身份验证的信息。但是我仍然没有清楚地说明在多域环境中将 JWT令牌用于单点登录解决方案时的流程。 我为一家在不同主机上有很多站点的公司工作。让我们使用example1.com和example2.com。我们需要一个单一的登录解决方案,这意味着如果用户在example1.com上进行了身份验证,我们希望他也可以在example2.com上进行自动身份验证。 通过使用OpenId Connect流,我了解到要在example1.com上进行身份验证的用户将首先被重定向到身份验证服务器(或OP:“ OpenId Provider”)。用户在该服务器上进行身份验证,然后使用签名的JWT令牌将其重定向回原始的example1.com网站。(我知道还有另一种流返回中间令牌,该中间令牌以后可以将其本身交换为真正的JWT令牌,但是我认为这对我们而言不是必需的)... 因此,现在用户又回到了example1.com并通过了身份验证!他可以发出请求,并在Authentication标头中传递JWT令牌,并且服务器能够验证已签名的JWT,因此能够识别用户。真好! 第一个问题: JWT令牌应如何存储在客户端上?再次有很多关于此的信息,人们似乎同意使用Web Storage是行之有效的方法,而不是过时的方法cookies。我们希望JWT在浏览器重启之间保持不变,所以让我们使用Local Storage,而不是Session Storage... 现在,用户可以重新启动浏览器,并且只要JWT令牌未过期,他仍将在example1.com上进行身份验证! 另外,如果example1.com需要向我们的另一个域发出Ajax请求,则我知道配置CORS会允许这样做。但是我们的主要用例不是跨域请求,而是一个单一的登录解决方案! 因此,主要问题是: 现在,如果用户转到example2.com并且我们希望使用他已经拥有的JWT令牌对他进行身份验证,那么流程应该是什么?Local Storage似乎不允许跨域访问,因此此时浏览器无法读取JWT令牌向example2.com发出请求! 应该 : 再次将用户重定向到身份验证服务器?当用户通过example1.com进行身份验证时, 身份验证服务器可能已在该用户上设置了cookie,因此example2.com的此新身份验证请求可以使用该cookie来查看该用户是否已通过身份验证,并立即将其重定向回 example2.com。使用相同的JWT令牌? 还是可以在example2.com上的浏览器访问JWT令牌而不必再次进入身份验证服务器?我看到有交叉存储解决方案,但是广泛使用了吗?它们是跨域SSO环境的建议解决方案吗? 我们不需要任何花哨的东西,我们会对使用最广泛的解决方案感到满意!

4
跨多个域的单点登录[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我们公司拥有多个域,每个域上都托管有一个网站。目前,每个域都有自己的身份验证,该身份验证通过Cookie进行。 当登录到一个域的某人需要访问另一个域的任何内容时,用户需要使用位于另一域的另一个网站上的不同凭据再次登录。 我当时正在考虑朝单一登录(SSO)迈进,以便消除这种麻烦。我不知道如何实现此目标的任何想法,因为我在这方面没有任何经验。 谢谢。 编辑: 网站是Internet(外部)和Intranet(公司内部使用)站点的组合。


5
C#ASP.NET单一登录实现
作为下一个版本的一部分,我的任务是为客户实施单点登录。流程如下: 用户使用学校提供给他/她的学生ID /密码登录到学校的主门户系统。 用户单击指向我公司产品的链接。 用户将被自动带到仪表板页面,就像他们刚刚通过我们网站上的登录表单登录一样。 因此,可以通过两种机制对用户进行身份验证到我们的网站中: 进入产品主页,并使用存储在本地系统中的电子邮件/密码登录。 在学生已经使用学生ID和密码登录到学校主系统的情况下,使用单点登录。 如果我们的产品是在ASP.NET中实现的(而不是Java / Ruby),那么我们应该使用CAS,JOSSO还是其他一些第三方单点登录产品?还是有.NET环境可用的东西,对我们作为.NET公司而言,这会更简单?

3
AdminTokenAction:致命错误:无法获取应用程序SSO令牌
我试图使用配置为sso的apache tomcat代理安装openam 12 war,但尝试了50次以上,但仅收到错误消息。 如果我从webagent更改为amAdmin以下属性值,同时在tomcat的第二个实例中调用受保护的应用程序,它一次又一次地重定向到同一页面,但没有任何异常。amAdmin是我的openam控制台管理员用户。 OpenSSOAgentBootstrap.properties/com.sun.identity.agents.app.username = Tomcat日志中的异常 Apr 16, 2015 5:41:10 PM org.apache.tomcat.util.digester.Digester startElement SEVERE: Begin event threw error java.lang.ExceptionInInitializerError at com.sun.identity.agents.arch.AgentConfiguration.bootStrapClientConfiguration(AgentConfiguration.java:727) at com.sun.identity.agents.arch.AgentConfiguration.initializeConfiguration(AgentConfiguration.java:1140) at com.sun.identity.agents.arch.AgentConfiguration.<clinit>(AgentConfiguration.java:1579) at com.sun.identity.agents.arch.Manager.<clinit>(Manager.java:675) at com.sun.identity.agents.tomcat.v6.AmTomcatRealm.<clinit>(AmTomcatRealm.java:67) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:374) at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:145) at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1288) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509) at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182) …

2
是否可以检查是否在Facebook上确认了电子邮件?
更新资料 这是在2013年12月16日通过https://www.facebook.com/whitehat/report/向Facebook报告的,而Facebook在12月17日回应说该错误早已得到修复。 我已经使用我的Facebook帐户重新测试了这一点(我仍然没有验证电子邮件地址),并且在使用Grap API Explorer工具时,无法使用Graph API或FQL查询获取该帐户的电子邮件地址。 结论:使用Graph API或FQL查询从Facebook获得的电子邮件地址是经过验证的电子邮件。如果帐户尚未验证,则为电子邮件,但无法获取。 原始帖子 我正在使用SSO制作一个网络应用程序,该应用程序为用户提供了使用Google或Facebook登录的功能。我希望同时使用这两种帐户的用户在我的系统中显示为同一用户,而不管他们使用哪个身份登录。为此,我正在考虑使用电子邮件地址作为标识符,以了解是否应该创建一个新帐户或用户是否已经存在。 为了不引入任何安全问题,我必须知道该电子邮件地址已经过验证,并且实际上属于该用户。对于Google,userinfo API可以告诉我电子邮件是否已验证,因此这里没有问题。但是我在Facebook Graph API中找不到类似的东西。 是否可以知道是否在Facebook上确认了电子邮件地址? 我知道有一个verified字段,但这仅告诉您该帐户是否已验证,而不是电子邮件地址。 首先,您似乎只能将Graph API用于已确认电子邮件地址的帐户。如果未确认地址,我会收到一个错误消息,告诉我必须先确认电子邮件地址,然后才能登录任何第三方站点。 但是,似乎并非所有帐户都是如此。在某些情况下,即使您没有确认的电子邮件地址,也可以访问Facebook的所有部分。例如,当您使用@ myopera.com邮件地址进行注册时。 当您使用@ myopera.com电子邮件地址注册Facebook时,您会收到一条消息,提示您在提交注册表单后帐户已被临时锁定。要继续,您需要提供电话号码以验证您的帐户并“保持Facebook安全和免受垃圾邮件侵扰”(对于截图中的瑞典语,很抱歉,这是在我进入Facebook并将语言更改为英语之前): 提供电话号码后,您就可以登录,而Facebook不会再让您担心必须验证电子邮件地址。 您可以在设置页面上看到唯一尚未验证您的电子邮件地址的地方: 在确认电子邮件地址可用并列出注册期间输入的电话号码之前,通常无法访问“移动设置”: 除此之外,还可以使用未经确认的电子邮件地址登录第三方站点: 当我与此用户连接到图api时,我可以获得未确认的电子邮件地址,并且该verified字段按预期返回true,因为我已经通过添加电话号码验证了该帐户。因此,显然我无法相信我从Facebook获得的电子邮件地址确实属于拥有Facebook帐户的用户。 还有其他方法可以知道电子邮件地址是否已通过验证,或者如果我想使用它来识别用户,是否必须自己进行验证?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.