Cookie 跨域,实现单点登录
Table title
最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下)。但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录。
单点登录:多个不同系统整合到统一加载个平台,用户在任何一个系统登录后,可以访问这个统一加载上的所有系统。登录之后,用户的权限和信息不再受某个系统的限制,即使某个系统出现故障(包括统一加载平台),其他系统还是能正常使用的。这就需要用户权限等信息保存到客户端,不受服务器的限制。
在cookie相关文档信息中,提到cookie是不能跨域访问的,但是在二级域名是可以共享cookie的。这样就是我们的项目有了局限性,必须将多个系统的域名统一,作为二级域名,统一平台提供使用主域名。这样就可以实现cookie的单点登录了。
在这里介绍一下cookie:
1.cookie是一个存储在客户端的字符串属性,可以用它对当前网页的cookie进行读,写,增.删等操作;javascript能够用document对象的cookie属性对cookie进行操作;
2.cookie的四个可选属性:
2.1 cookie的生存期属性:expires;默认情况下,cookie只在浏览器会话期存在.退出浏览器就丢失;可以用expires设置时间;退出浏览器后就不会丢失并存为客户端浏览器的cookie文件;过了时间后cookie失效,还会自动删除cookie文件.
2.2 path属性:默认情况下,在同一个目录下文件可以调用;例如:http://hanj.com/c1/1.html设置的cookie可以被http://hanj.com/c1/2.html调用.但不能被http://hanj.com/c2/目录下的文件调用;但如把path属性设成"/";则在http://hanj.com/下的所有文件都可调用此cookie.
2.3 domain属性:例如设成".hanj.com"则在.hanj.com下的所有服务器下的文件都可以调用cookie.
2.4 安全属性:默认情况下为false;用http协议不安全传输;true:用https等协议安全传输.
3.cookie的局限性:
浏览器最多保存300个cookie;为单个web服务器的最多只能保存20个cookie;每个cookie不能超过4000个字节.
单点登录实现环境:
统一平台域名:www.hanj.com
子系统1:a.hanj.com
子系统2:b.hanj.com
子系统3:c.hanj.com
统一加载平台和各子系统都是不同的服务器,统一加载平台提供登录认证服务,在统一加载平台认证系统上登录后,用户都可以被其他的系统识别。
/**
函数名称:getCookie
函数功能:获取指定名称的cookie的值
输入参数:需要测试的字符串
返回参数:
*/
function getSSOCookie()
{
var arrStr = document.cookie.split("; ");
for(var i = 0;i < arrStr.length;i ++){
var temp = arrStr[i].split("=");
if(temp[0] == "sso") {
return unescape(temp[1]);
}
}
return "";
}
/**
函数名称:addCookie
函数功能:添加cookie
输入参数:需要测试的字符串
返回参数:
*/
function addSSOCookie(objValue)
{
var str = "sso" + "=" + escape(objValue);
if(true){//为0时不设定过期时间,浏览器关闭时cookie自动消失
str += "; path=/";
}
document.cookie = str;
}
/**
函数名称:delCookie
函数功能:删除cookie
输入参数:需要测试的字符串
返回参数:
*/
function delCookie()
{//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间
var date = new Date();
date.setTime(date.getTime() - 10000);
document.cookie = "sso" + "=a; expires=" + date.toGMTString()+"; path=/";
}
用户在统一加载平台认证系统认证通过后,使用addSSOCookie,用户权限信息保存到了cookie中,其他平台通过调用getSSOCookie,取得用户信息。这样用户就可以不再受平台限制,而实现自由访问各个系统了。
在addSSOCookie方法中,没有设置cookie的失效时间,这样在浏览器关闭后,cookie就自动消失。注意:这样cookie的有效性只能在同一浏览器进程,如果重新打开了一个浏览器进程,cookie信息是获取不到的,也就是单点登录只能在同一个浏览器进程有效。如果想在不用浏览器进程中共享cookie信息,那就设置失效时间,如下:
function addCookie(objValue,objHours){//添加cookie
var str = "sso"+ "=" + escape(objValue);
if(objHours > 0){//为0时不设定过期时间,浏览器关闭时cookie自动消失
var date = new Date();
var ms = objHours*3600*1000;
date.setTime(date.getTime() + ms);
str += "; expires=" + date.toGMTString()+"; path=/; domain=.hanj.com";
}
document.cookie = str;
}
这样cookie在指定的时间后失效。但这样安全性不能保证,如果时间设置太短,用户在使用中,可能cookie就失效了,需要重新登录。如果时间过长,用户在下次访问,或电脑重起访问,cookie还在有效期中,有可能别其他人使用。cookie不能准确的删除,存在安全隐患。
分享到:
相关推荐
在Java开发环境中,实现完全跨域的单点登录是一项重要的技术挑战,涉及到多个领域的知识,包括HTTP协议、Cookie管理、会话跟踪、授权机制等。本篇文章将深入探讨这一主题,并基于给定的标签"SSO"、"Java"和"单点登陆...
### 基于可变Cookie的跨域单点登录 #### 概述 随着互联网技术的发展及企业信息化建设的深入,跨域系统间的用户身份认证成为一项亟待解决的问题。单点登录(Single Sign-On,简称SSO)作为一种便捷的身份认证机制,...
该压缩包文件"单点登录跨域iframe互相通信方案.zip"提供了一种解决方案,可能包含以下关键知识点: 1. **OAuth 2.0或SAML协议**:单点登录通常基于OAuth 2.0或Security Assertion Markup Language (SAML)等标准协议...
跨域单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在...总的来说,跨域单点登录是一个涉及到用户认证、会话管理、安全策略等多个方面的复杂过程,需要结合具体的业务需求和技术环境来设计和实现。
综上所述,"完全跨域单点登录DEMO"提供了学习和实践SSO技术的平台,通过"WebSSODemo"和"WebSSOAuth"的代码,开发者可以深入理解SSO的实现原理,以及Cookie、JWT和OAuth 2.0在SSO中的应用,进一步提升Web应用的身份...
【标题】:“Iframe+Cookie实现简单的单点登录” 单点登录(Single Sign-On,SSO)是一种身份验证机制,允许用户在多个相互关联的应用系统中登录一次,然后在整个会话期间无需再次输入凭证即可访问这些系统。在本文...
综上所述,跨域访问的单点登录是一个涉及多种技术和协议的复杂系统,需要综合运用OAuth 2.0、OpenID Connect、CAS、JWT、Cookie管理、CORS策略以及安全实践,以实现无缝、安全的用户登录体验。理解并熟练掌握这些...
在这个“单点登录的demo(使用cookie+filter实现)”中,我们将深入探讨如何利用Cookie和Filter技术来实现一个简单的SSO系统。 **一、Cookie基础** Cookie是Web服务器存储在用户浏览器上的一小段数据,用于在用户与...
JEECG智能开发平台的单点登录(SSO)功能是通过集成Kisso实现的,Kisso是一个轻量级Java权限框架,它利用加密会话cookie机制来实现单点登录服务。单点登录是一种用户登录认证方法,允许用户在多个应用系统中,只通过...
SSO(Single Sign-On)是单点登录的缩写,是一种网络用户身份验证的机制,允许用户在一次登录后,可以访问多个相互信任的应用系统,而无需再次进行身份验证。这个压缩包文件提供了SSO的完整实现,适用于跨域场景,...
SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在多个相互关联的应用系统中只需要登录一次,即可访问所有系统,而无需再次输入凭证。这种技术在现代企业环境中非常常见,因为它提供了便捷的用户体验并...
在sso_bbs(v2)这个项目中,我们看到的是一个使用Cookie和Filter技术实现的单点登录的第二个版本。下面将详细讲解这一技术实现及其相关知识点。 首先,我们要理解Cookie的作用。Cookie是Web服务器发送到用户浏览器并...
在"asp.net 跨域单点登陆Demo"中,可能包含了实现上述概念的代码示例,如身份验证控制器、票据生成和验证逻辑、以及配置文件中的相关设置。通过对这个Demo的深入学习和实践,开发者可以掌握如何在ASP.NET环境中搭建...
本文将详细讲解如何在Axios中配置Cookie跨域以及相关的后端设置。 首先,我们要明确一点:默认情况下,Axios在发起跨域请求时并不会携带Cookie。这是因为浏览器的安全策略限制,为了防止跨站脚本攻击(Cross-Site ...
ASP.NET跨域单点登录(Single Sign-On, SSO)是一种允许用户在多个相互独立的应用系统中使用同一套登录凭据的技术。这个源码包包含了实现这一功能的关键组件和示例,适合C#开发者和ASP.NET爱好者进行学习和实践。 ...
跨域点单登录源码SSO_cross_domain是一个用于实现单点登录(Single Sign-On, SSO)的项目,主要解决了用户在多个域名之间切换时无需重复登录的问题。在这个项目中,我们将探讨三个核心概念:跨域、点单登录以及SSO。...
ASP.NET跨域单点登录(Single Sign-On, SSO)是一种高效的身份验证机制,它允许用户在登录一个应用系统后,无需再次输入凭证即可访问其他关联的应用系统。这种技术极大地提升了用户体验,尤其在多应用环境中的企业级...
SSO(Single Sign-On)单点登录是一种...总结,通过cookie和JSONP的结合,我们可以构建一个基本的SSO系统,实现跨域的单点登录功能。然而,实际应用中还需考虑更多的安全措施和扩展性需求,以适应不断变化的网络环境。