sso

SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析

烈酒焚心 提交于 2019-12-26 10:44:12
最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1、jquery ajax跨域重定向,要理ajax解跨域重定向,先要了解浏览器对重定向的处理。正常我们请求一个地址,如果server返回302,那么浏览器会再发起一次重定向后的http请求;用jquery ajax发起一次异步请求,server返回302,如果重定后url的域名跟ajax请求的域名是同一个域名的话,浏览器会再发起一次重定向后的http请求,请求成功会调用ajax的success函数,如果重定向后url的域名跟ajax请求的域名不是同一个域名,也就是跨域重定向(跨域redirect),这个时候浏览器看到返回的response的Location跨域了就不会再发起请求,请求被拦截了,ajax请求失败会调用error方法 那么如果我们非要做跨域重定向呢?这也是可以实现的,普通的ajax请求不行,我们需要通过jsonp的方式,而且需要设置crossDomain:true,可以参考https://api.jquery.com/jQuery.ajax/ 关于jquery.ajax方法的crossDomain 参数的说明 跨域redirect实例: test.html <script src="jquery.js

SSO 单点登录总结(PHP)

扶醉桌前 提交于 2019-12-23 12:46:51
本篇文章根据个人理解的知识整理汇总,如有不足之处,请大家多多指正。 单点登录(SSO——Single Sign On)的应用是很普遍的,尤其在大型网站系统中,比如百度,登录百度账号和,再转到百度经验、百度贴吧等是不用重新登录的。本文将从 cookie 和 session 基础详细介绍单点登录的原理,代码实现为 PHP。 Cookie Cookie 是由客户端访问服务器时服务器发送给客户端的特殊信息,且这些信息以文本文件的方式存储在客户端。第一次访问服务器时,服务器会在 HTTP 响应头(Response Header)返回 Cookie 信息。客户端保存 Cookie 信息之后,下次访问服务器时,HTTP请求头(Request Header)会包含 Cookie 信息。 简单的说: 服务器不认识访问它的客户端,为了识别它们,就给每个访问它的客户端一个口令,服务器通过口令识别这些客户端。 注意: 不是访问每个服务器都会返回 Cookie 的,只有服务器中有设置 Cookie ,才会返回给客户端。 Cookie 生成和传递流程 在本地服务器下的 test.php 中设置 Cookie <?php // Cookie 是 HTTP 标头的一部分,因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似 setcookie(

集成基于CAS协议的单点登陆

巧了我就是萌 提交于 2019-12-20 11:52:28
  相信大家对单点登陆(SSO,Single Sign On)这个名词并不感到陌生吧?简单地说,单点登陆允许多个应用使用同一个登陆服务。一旦一个用户登陆了一个支持单点登陆的应用,那么在进入其它使用同一单点登陆服务的应用时就不再需要重新登陆了。而CAS协议则正是各单点登陆产品所需要实现的协议,其全称为Central Authentication Service。   那为什么要写这篇博客呢?这是因为在为公司的产品集成SSO的时候,我发现如果软件开发人员不了解CAS协议,那么他在集成出现错误的时候将完全没有办法对出错的原因进行分析。 单点登陆简介   如果您不知道单点登陆是什么,那么先来体会一次单点登陆。首先,请在一个全新浏览器(或者清除了登录信息缓存的浏览器)的地址栏中键入 www.hotmail.com ,并进入您的hotmail邮箱。接下来,我们再访问 www.msn.com 。请看网页的右上角,您会发现您已经成功地通过刚刚的hotmail邮箱登入了 www.msn.com :   这就是单点登录:即使hotmail和msn的域名表明它们完完全全就是两个不同的网站,但是由于它们使用了同一个单点登录服务,因此在登陆hotmail之后再登陆msn,您刚刚输入的用户身份凭证依然有效。   这种在一处登录就能直接访问其它应用的功能在企业级应用中是非常有用的。试想这样一个情景

SSO单点登录一:cas单点登录防止登出退出后刷新后退ticket失效报500错,也有退出后直接重新登录报票根验证错误

为君一笑 提交于 2019-12-19 14:50:10
问题1: 我登录了client2,又登录了client3,现在我把client2退出了,在client3里面我F5刷新了一下,结果页面报错: 未能够识别出目标 'ST-41-2VcnVMguCDWJX5zHaaaD-cas01.example.org'票根 问题2:登录了client,然后退出,再重新输入用户名,结果页面也会报错 验证 'ST-41-2VcnVMguCDWJX5zHaaaD-cas01.example.org'失败 解决方法:自己测试了多遍并在网上做了参考后修改,最后验证成功,之后就不报错了。解决办法如下: 单点登出,客户端配置。我尝试使用SAML作为认证和Ticket校验,但是调试时发现单点登出取标识的方式只能识别CAS的认证和校验。 认证:org.jasig.cas.client.authentication.AuthenticationFilter 校验:org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter 过滤器顺序: 1. CAS Single Sign Out Filter 2. CAS Validation Filter 3. CAS Authentication Filter 4. CAS HttpServletRequest Wrapper Filter

SSO 单点登录

走远了吗. 提交于 2019-12-11 13:30:29
SSO介绍 SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。 实现单点登录设想 问题:用户的登录信息只保存到一台服务器中,其他服务器需要使用用户信息时,数据无法共享; 思考: url重写奇数,动态拼接sessionId效率太低,解决Cookie禁用问题,大型公司不会考虑该问题; IP_hash,将用户ip绑定到指定的一台服务器上,负载不均; 单点登录实现 当用户输入用户名和密码时将数据发送到单点登录系统中. 单点登录系统接收到用户名和密码后,进行校验.如果用户名和密码不正确,直接错误返回即可.如果用户名和密码是正确的.将用户的信息转化为JSON串,并且生成加密的秘钥token.将数据保存到redis中.token当做key.userJSON当做value.将用户的token数据返回给客户端. 获取到服务器返回值之后,如果用户名和密码不正确,则给用户进行提示.如果用户登陆成功.需要将token数据保存到客户端的Cookie中.并且实现页面跳转.同时实现数据的回显. 来源: CSDN 作者: L小菜鸟L 链接: https://blog.csdn.net/qq_43156369

理解OAuth2.0协议-基础篇

南笙酒味 提交于 2019-12-10 04:44:12
什么是OAuth2.0? https://oauth.net/2/ 说: OAuth 2.0 is the next evolution of the OAuth protocol which was originally created in late 2006. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. This specification is being developed within the IETF OAuth WG. OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。 OAuth2.0 是在 OAuth 基础上的简化与优化,虽然不向下兼容,但是和OAuth 有着相似的理论。 OAuth2.0 的角色 资源所有者 resource owner (RO) 指对某种资源拥有授权能力的实体,如果资源属于某个人的话,这个 RO 就是这个人的终端账户。

单点登录

我的梦境 提交于 2019-12-09 14:04:00
一 . 单点登录简介 在企业级软件发展初期,企业系统往往很少,只有一到两个,每个系统都有其登录界面。可随着时代发展,用到的系统也越来越多,系统使用者在操作不同的系统时需要多次登录,且不同的账号密码让人十分难受。 于是单点登录(SSO)诞生了,他解决的问题是:可以只登录一个系统,就可以访问其他互相信任的应用系统。 如上图,只有SSO有登录模块,A1,A2,A3都没有登录模块,而当A1,A2,A3需要登录的时候则直接跳转到SSO进行登录,登录成功后则A1,A2,A3都可访问。 二 .技术实现 2.1 普通的登录验证机制 一般情况下,我们在浏览器(Browser)访问一个应用,都会在浏览器先输入用户名和密码,完成登录验证后,服务器的Session状态变成YES(已登录),同时在浏览器留下该用户的唯一标识(Cookie)。以后再次访问该应用都会携带Cookie,服务器端根据该Cookie找到Session,通过session来判断这个用户是否登录。如果不做特殊配置,这个Cookie的名字叫做jsessionid,值在服务端(server)是唯一的。 2.2 同域下的单点登录 一个企业一般情况下只有一个域名,通过二级域名区分不同的系统。比如我们有个域名叫做:a.com,同时有两个业务系统分别为:app1.a.com和app2.a.com。我们要做单点登录(SSO),需要一个登录系统,叫做

漫谈单点登录(SSO)

一世执手 提交于 2019-12-09 12:28:18
1. 摘要 ( 注意:请仔细看下摘要,留心此文是否是您的菜,若浪费宝贵时间,深感歉意!!!) SSO这一概念由来已久,网络上对应不同场景的成熟SSO解决方案比比皆是,从简单到复杂,各式各样应有尽有!开源的有OpenSSO、CAS ,微软的AD SSO,及基于kerberos 的SSO等等……这些优秀的解决方案尽显开发及使用者的逼格,当然需求所致无谓好坏高低,满足实际之需才是王道! 本文并不讨论上述提到的方案的整合使用、或者复杂场景如:安全、防火墙、N 多个系统层叠调用这种"巨型项目"里SSO的实现与使用,也并不涉及 C/S 、C/S+B/S 的SSO解决方案,仅关注B/S 上的SSO实现。虽是如此,然而万变不离其宗,这里我们将从一个简而小的登录场景去接触SSO的本质,描述如何原生态地自实现一个轻量、微核的SSO(本文不提供源码)。 文章将由浅入深地探讨SSO(单点登录),涉及SSO的定义、表现、原理、实现细节等方面的阐述,借助大家熟知的淘宝、天猫登录场景,通过对阿里登录的模仿实现,建立一个简单模型,然后不断由该模型进行迭代并对每一个迭代版本进行详细描述,最终得到一个支持跨域的SSO( 力求条理清晰,层层递进,简单但有深度!!!!开始部分本着让即使从未听过SSO的同学也能够从抽象文字定义的概念印象过渡到具象的视觉认知这一宏(zhuang)伟(bi)理念入手,将会有很多浅显的描述,

java实现简单的单点登录

ε祈祈猫儿з 提交于 2019-12-07 18:51:37
java实现简单的单点登录 发表于2年前(2014-05-20 09:11) 阅读( 6399 ) | 评论( 0 ) 9 人收藏此文章, 我要收藏 赞 1 摘要 单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中。本文从业务的角度分析了单点登录的需求和应用领域;从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO和桌面SSO的实现、源代码和详细讲解;还从安全和性能的角度对现有的实现技术进行进一步分析,指出相应的风险和需要改进的方面。本文除了从多个方面和角度给出了对单点登录(SSO)的全面分析,还并且讨论了如何将现有的应用和SSO服务结合起来,能够帮助应用架构师和系统分析人员从本质上认识单点登录,从而更好地设计出符合需要的安全架构。 SSO Java J2EE JAAS 1 什么是单点登陆 单点登录( Single Sign On ),简称为 SSO ,是目前比较流行的企业业务整合的解决方案之一。 SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和 IT 服 务。例如财务系统为财务人员提供财务的管理、计算和报表服务;人事系统为人事部门提供全公司人员的维护服务;各种业务系统为公司内部不同的业务提供不同的 服务等等

Java实现的SSO单点登录

ぐ巨炮叔叔 提交于 2019-12-07 18:51:14
原理 在网上找了很多SSO 框架,不是太复杂就是侵入式的,比如CAS,josso,后为想还是自己写一个吧,反正不难。以下记录一下,希望对大家有用. 1:产生背景 想像一下,一家企业从无信息化系统开始着手实现自己公司的信息化,假如这家公司有自己的IT团队,第一个系统公司一般都会先上OA系统,他的基本结构如下: 系统上线后运行很正常,公司从企业信息化中尝到甜头,想接着开发第二个系统:采购系统.公司IT人员注意到采购系统可以利用OA系统中的公共代码:用户、组织架构、应用权限。 公司为了节约成本和加快开发速度会采用重用OA系统中的公共代码. 这里有两种复用情况供他们选择 (1): 把所有公共表结构和公共代码复制一份,作为采购系统的开发基线. (2): 把公共表结构和公共代码从OA系统中抽离出来,作为一个独立的系统,叫他统一视图,对外提供RESTFul接口或者Web Service接口供其它系统调用.形成如下结构: 两种方案比较: 第一种方案简单明了,对原有OA系统冲击小或者无冲击.但是他会导致采购系统中有一份和OA系统中一样的一份用户数据,两边都可以对用户新增和删除、修改,这样会导致两边用户不一致,有一种做法就是采购系统中把用户相关的操作移除,系统初始化时从OA系统中导入用户数据,然后每天晚上去增量同步OA中更新过的用户数据.这样采购系统应该也可以运行良好.