我想知道是否应该使用CAS协议或OAuth +某些身份验证提供程序进行单点登录.
示例场景:
据我所知,这正是CAS发明的.CAS客户端必须实现CAS协议才能使用身份验证服务.现在我想知道在客户(消费者)网站上使用CAS或OAuth.OAuth是CAS的那部分的替代品吗?OAuth作为新的事实上的标准应该优先考虑吗?是否有一个易于使用的(不是Sun的OpenSSO!)更换为CAS支持不同的方法,如用户名/密码,OpenID的,TLS certifactes认证部...?
语境:
我刚刚发现WRAP,它可能成为OAuth的继任者.这是微软,谷歌和雅虎指定的新协议.
附录
我了解到OAuth不是为验证而设计的,即使它可用于实现SSO,但只能与OpenID等SSO服务一起使用.
OpenID在我看来是"新CAS".CAS具有OpenID未命中的一些功能(如单点注销),但在特定场景中添加缺失部分并不困难.我认为OpenID已被广泛接受,最好将OpenID集成到应用程序或应用程序服务器中.我知道CAS也支持OpenID,但我认为CAS对OpenID来说是可有可无的.
在你没有做任何作业的情况下让我问过于基本的问题之前,我想说我一直在做很多关于这些主题的阅读,但我仍然感到困惑.
我的需求似乎很简单.在我的公司,我们有一堆Ruby on Rails应用程序.我想构建一个所有这些应用程序都应该使用的SSO身份验证服务.
我试着做一些关于如何做到这一点的研究CAS,SAML并且阅读了OAuth2.(我知道OAuth中的"Auth"代表授权,而不是身份验证,但我阅读了足够多的文章,说明如何使用OAuth进行身份验证 - 这就是其中之一.)
有人能用简单的语言告诉我这三个是什么吗?他们是替代品(竞争)吗?比较它们甚至是正确的吗?
而且有很多宝石似乎都在说非常相似的东西:
我只想要一个单独的Rails应用程序来处理我的其他Rails应用程序的所有身份验证.
注意:我不想让用户使用他们的Google/Facebook帐户登录.我们的用户已在我们的网站上拥有帐户.我希望他们能够使用该帐户登录一次,并且无需再次登录即可访问我们的所有应用程序.在任何应用中注销都应该在所有应用中签名.
UPDATE
我遇到过这两个OAuth解决方案:
他们似乎在描述与我想要的非常相似的东西.但我还没有找到任何指南/博客文章/教程,展示如何使用SAML/CAS执行此操作.
建议欢迎.
更新2
关于我们用例的更多细节.
我们没有任何现有的SAML架构.主要是我们的用户(直接在我们的网站上注册)将访问我们的所有应用程序.将来,我们可能会有第三方(合作伙伴)公司调用我们的API.我们也可能有来自这些第三方(合作伙伴)公司(在其网站上注册)访问我们的应用程序的用户.
我们正在为我们正在寻求构建的新Web事物评估几种解决方案.它有几个方面,包括用户管理,内容管理,活动,社区和金融交易.
我们正在寻找自己的框架,使用Joomla + Vaadin + CAS(仅举几例)来DIY,但我想知道我们是否应该简单地采用Liferay门户进行一站式购物?
我一直在寻找推荐书,并没有提出太多建议.我很欣赏任何使用Liferay(或选择不参加)的人,他们会分享它解决(或不解决)的技术障碍,以及可能创造的其他技术障碍.
谢谢!
我应该使用哪种CAS实现来启用CAS单点登录到我的django应用程序(trusing指定的CAS服务器,我对创建CAS提供程序不感兴趣)?我能找到的是以下内容:
我之前使用过django-cas,似乎有效,但似乎有点被遗弃?django-cas-consumer至少似乎有更近期的活动.
每种实施的实际利弊是什么?我应该使用其他实现吗?
我想更多地了解解决单点登录的不同方法及其优缺点.您是否使用过一个特定的解决方案,告诉我它有什么好处,并告诉我有哪些限制或次优部分.
以下是我想知道或不明白的细节.
SSO是一个巨大的主题,如维基百科中所列.我学的越多,我的问题就越多.
首先,我不了解CAS的令牌验证的必要性,它有什么用?
它更安全吗?我猜它很容易受到像中国人那样的中间人攻击.客户还应该使用ssl吗?
让我们变得真实,这是我们的需求:如果已经在我们的某个应用程序中登录,则自动识别/登录用户.
(我们有很多用不同语言编写的webapps)
我们希望(保留)我们自己的身份验证规则和用户存储,但可能会添加一些Oauth2提供程序,如facebook-connect.我们希望它对用户来说简单易用,对于使用它的开发人员来说简单.
你会怎么做?
在客户端,您是否会使用iframe(如灯箱)来显示重定向的页面?为什么/为什么不呢?
还有另一个与SSO相关的问题:Saml经常(错误地)混入SSO讨论中 - 如果我这么说,我能理解吗?
当浏览器指向www.yetanother-myapp.com时,saml实现不会提供sso(自动登录)?
我研究过的一些相关的SO问题:
谢谢你教育我!
我有一个相当稳定的服务器应用程序版本,已经在数十个客户中部署了将近一年.
一位新客户最近设置了该应用程序,并收到以下错误:
System.MethodAccessException:尝试通过安全透明方法[SomeMethod]访问安全性关键方法[SomeOtherMethod]失败.
SomeMethod和SomeOtherMethod都是我编写的程序集中的方法,这些方法是针对.NET 4构建的,并且是在Windows服务中运行的.如果它有所不同,SomeOtherMethod确实引用了针对.NET 2.0构建的第三方程序集(EntLib 4.1)中的类型.查看EntLib 4.1的代码,我确实看到它们同时使用SecurityTransparent和APTC属性,但这从未在其他客户端引起过问题.
这些程序集是从.NET 2.0 CLR升级的,但很久以前.这个确切的代码正好在其他客户上运行,我没有明确使用APTC属性,也没有在任何地方使用SecurityCritical属性.
这使我得出结论,这是一个配置问题或者.NET Framework补丁问题.是否有针对.NET发布的补丁会导致这种突破性变化?是否有一个配置设置在某些地方执行这种类型的检查,默认情况下是关闭但我的客户可能已启用?
最后一点.我的服务使用SSRS RDLC生成PDF.由于.NET 4中的一些更改,我必须通过以下配置强制服务使用旧版安全策略:
  <runtime>
    <NetFx40_LegacySecurityPolicy enabled="true" />
  </runtime>
Run Code Online (Sandbox Code Playgroud)
有关我需要执行此操作的详细信息,请参阅此stackoverflow帖子:.NET 4.0中的内存使用率非常高
重要的是,我也在所有其他客户那里做到这一点.只有这一个客户遇到问题.
Java AtomicInteger类有一个方法 -
boolean weakCompareAndSet(int expect,int update)
Run Code Online (Sandbox Code Playgroud)
它的文件说:
可能是虚假的失败.
这里"虚假失败"的意思是什么?
以下代码段用于使用restful API调用我的Web服务.
ClientConfig config = new DefaultClientConfig();
    Client client = Client.create(config);
    String uri= "https://127.0.0.1:8443/cas-server-webapp-3.5.0/login";
    WebResource resource = client.resource(URLEncoder.encode(uri));
      MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
       queryParams.add("username", "suresh");
       queryParams.add("password", "suresh");
       resource.queryParams(queryParams); 
       ClientResponse response = resource.type(
            "application/x-www-form-urlencoded").get(ClientResponse.class);
    String en = response.getEntity(String.class);
    System.out.println(en); 
Run Code Online (Sandbox Code Playgroud)
并在运行上述代码时获得此异常
com.sun.jersey.api.client.ClientHandlerException: java.lang.IllegalArgumentException: URI is not absolute
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:151)
    at com.sun.jersey.api.client.Client.handle(Client.java:648)
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:680)
Run Code Online (Sandbox Code Playgroud)
我搜索了许多文章,并没有得到我做错的地方.
旁注:cas-server-webapp-3.5.0  在Apache tomacat7中部署在我的机器上的war
我正在使用带有JDBC身份验证处理程序的CAS,并且想知道在成功进行身份验证后,是否可以获取主体对象的其他属性(例如firstname,lastname),而不仅仅是CAS中的用户名?