`

SSO 跨域名(两个截然不同的域名共用一个 cookie )

    博客分类:
  • SSO
阅读更多
   有时在编代码的时候,累并不是一件坏事,当你累时,你应该出去空气流通的地方放松一下自己的心情。这样说不定会突然茅塞顿开。
    研究了一个礼拜 Cookie 跨域问题 ,今天终于解决了,其用这么久解决的原因是:懒得去动,只是思考,所以 希望看到这篇文章的朋友们 一定要 多思考,勤动手。失败就是在快成功的时候没能再坚持一点点。
    下来进入正题:我负责的服务器的的域名是: http://uc.cun365.com 
计划要跨域共享 cookie 的另一台服务器的域名是: http://www.c365.com
    分析:所谓人们常用的 cookie 跨域是说: uc.cun365.com 下登录,凡是后缀名为:.cun365.com  的服务器都可共享同一个 cookie, 这种方式相对比较容易解决,只要设置一下 setDomain(".cun365.com") 就行。但是问题来了,如果要跨另一台服务器的话,我们应该怎么办呢?
     解决:再次使用上面那种方法 setDomain(".c365.com") 已经是不可能实现,因为它两使用的服务器不是同一个,而且也不是 二级域名的关系,所以目前有两种方法解决遇到的这种问题。
    方法1
         步骤(1):创建 jsp 页面 ,名字为: login4cun.jsp
<%@ page language="java" pageEncoding="GBK"%>

测试 在 村网 登录 后 隐士在 生活网 登录
<%
String token = request.getParameter("token");
String passport = request.getParameter("passport");
if(null != token && null!=passport){
	response.setHeader("P3P","CP=\"NON DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa HISa TELa OTPa OUR UNRa IND UNI COM NAV INT DEM CNT PRE LOC\"");
	
	session.setAttribute("cnlifeUserToken", token);
	session.setAttribute("cnlifeUserId", passport);

	Cookie aCookie = new Cookie("cnlifeUserToken", token);
	aCookie.setMaxAge(-1);
	aCookie.setDomain(".c365.com");
	aCookie.setPath("/");
	response.addCookie(aCookie);

	passport = new String(passport.getBytes("GBK"), "ISO8859_1");
	aCookie = new Cookie("cnlifeUserId",passport);

	aCookie.setMaxAge(-1);
	aCookie.setDomain(".c365.com");
	aCookie.setPath("/");
	response.addCookie(aCookie);
}
%>

注意:创建好后一定要放在 域名为 :http:www.c365.com 服务器上,我就是因为不相信这种做法,害的走了4天弯路。

         步骤(2):再创建一个 jsp 页面,名字为: test.jsp
<%@ page language="java" pageEncoding="GBK"%>
<script type="text/javascript" src="http://www.c365.com/header1215/login4cun.jsp?token=aea1a0b549703a2060142b93ecc2846c&passport=renweigang">
</script>

测试 在 村网 登录 后 隐士在 生活网 登录
<%@ page language="java" pageEncoding="GBK"%>
<script type="text/javascript" src="http://www.c365.com/header1215/login4cun.jsp?token=aea1a0b549703a2060142b93ecc2846c&passport=renweigang">
</script>

测试 在 村网 登录 后 隐士在 生活网 登录
<a href="http://www.c365.com/ssoserver/logout.jsp?backurl=http://www.rwg.com:8080/ucenter/themes/default/logout.jsp">注销</a>


注意:以上的参数: token:是 辨别用户的令牌,你可以自己写一个,思路是:先验证用户名与密码是否匹配,如果匹配则 自动生成 一个 有效 的证书(16位的随机数).
passport :为 用户登录名,一定不要是中文,否则会出现 exceptin,因为它是往cookie 中保存,而cookie 的值是不支持 中文的,如果是中文 则把它转为: iso-8859-1即可。


         步骤(3):在火狐浏览器中 测试: http://localhost:8080/ucenter/test.jsp ,然后看看 域名为 .c365.com 的值是不是添加进来了。
注意: 最好在火狐下测试,因为显示的比较直观。
  • 大小: 26.8 KB
  • 大小: 20 KB
  • 大小: 15.1 KB
3
0
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    单点登录(SSO)-同域名、不同域名

    在企业的早期发展阶段,所使用的内部系统数量有限,通常为一两个,每个系统都配备有自己的登录模块。这样的架构对于运营人员来说非常便捷,因为他们只需要记住一套登录凭据即可访问所有系统。然而,随着企业的不断...

    SSO单点登录【基于cookie二级域名下跨域共享】

    一旦用户成功验证,SSO服务器会创建一个包含用户身份信息的安全令牌(Token),并将其存储在一个特殊的Cookie中,通常设置为`.example.com`,这样这个Cookie就能被所有二级域名识别。 接着,描述中提到的"跨域共享...

    多域名sso单点登录

    所有应用系统能够识别和提取Token信息要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对Token进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过...

    java 基于 Cookie 的 SSO 中间件 kisso 低代码

    Kisso是一个基于Cookie的轻量级SSO中间件,它简化了SSO的实施过程,尤其是对于那些不熟悉复杂认证流程的开发者来说,Kisso的低代码特性使其变得更加友好。 Kisso的工作原理大致如下: 1. 用户首次访问系统A时,...

    二级域名和顶级域名需要同步登录如何设置cookie作用域1

    在互联网应用中,用户在访问一个网站的不同子域名之间保持登录状态是非常常见的需求。例如,如果用户在`www.example.com`上登录后,他们也应该在`blog.example.com`或`shop.example.com`等子域名上自动登录。实现...

    跨域名和应用程序登陆

    例如,用户在A网站登录后,可以直接访问B网站而无需再次登录,只要这两个网站共享相同的认证系统。实现这一功能通常依赖于Cookie和OAuth等技术。 1. Cookie管理:通过设置P3P(Platform for Privacy Preferences ...

    cookie sso 基于 Cookie 的 SSO 中间件,它是一把快速开发 java Web 登录系统

    当用户在主应用中登录后,服务器会在用户的浏览器中设置一个特定的SSO Cookie,这个Cookie包含用户的认证信息。当用户访问其他与SSO系统集成的应用时,浏览器会自动携带这个Cookie,其他应用通过验证这个Cookie来...

    sso解决方案汇总

    本文将深入探讨SSO的几种常见实现方案,包括虚拟目录的主应用与子应用之间的SSO、不同验证机制下的SSO、同一域名或不同域名下子域名间SSO的实现,以及不同.NET版本和混合身份验证模式下的SSO解决方案。 ### 虚拟...

    SSO跨域单点登录Demo

    同时,它们的前端代码需要处理登录后的重定向和票据验证,确保用户在登录一次后能够在两个应用间无缝切换。 总的来说,这个SSO跨域单点登录Demo是一个实践性极强的学习资源,可以帮助开发者深入理解SSO的工作原理,...

    SSO单点登入,使用cookie实习(Struts2)

    通常,SSO系统由两个主要部分组成:认证中心(Central Authentication Service,CAS)和各个服务提供者(Service Provider)。当用户尝试访问受保护资源时,如果尚未登录,会被重定向到CAS进行身份验证。一旦验证...

    sso-use-cookie单点登录

    单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。在这个项目中,我们利用SpringBoot框架来实现基于Cookie的SSO。下面将详细解释这个项目的...

    SSO_same_domain

    总之,SSO_same_domain主要涵盖了同域名下SSO的实现方法和安全考虑,涉及到Cookie、OAuth、OpenID Connect、JWT等技术,以及如何利用Spring Security和CAS等工具来构建和维护一个高效、安全的SSO系统。在实际开发中...

    ASP.NET跨域单点登录的实现(SSO)

    ASP.NET跨域单点登录(Single Sign-On, SSO)是一种高效的身份验证机制,它允许...对于WebSite2和WebSite1这样的两个应用,通过共享认证服务器和正确配置CORS,可以轻松实现用户只需登录一次即可访问两个网站的功能。

    sso单点登录demo

    这个“sso单点登录demo”是一个Java实现的示例,包含了三种不同的场景:相同域名、相同父类域名以及不同域名的SSO解决方案。 1. **相同域名的SSO** (`sso_same_domain`): 在同一域名下实现SSO,通常比较直接,因为...

    关于二级域名下使用一级域名下的COOKIE的问题

    然而,有时我们需要在一级域名及其所有二级域名之间共享Cookie,以实现如单点登录(Single Sign-On, SSO)的功能。例如,用户在www.jb51.net登录后,希望在bbs.jb51.net也能保持登录状态。 要解决这个问题,关键...

    sso-user-cookie.zip

    在本“sso-user-cookie.zip”压缩包中,提供的是一个基于Cookie实现的SSO单点登录的示例。下面将详细介绍这个Demo所涉及的关键知识点。 1. **Cookie原理**: - Cookie是Web服务器在用户的浏览器上存储的小型文本...

    sso单点登陆1

    SSO(Single Sign-On)是一种身份验证机制,允许用户在一个应用系统中登录后,无需再次认证即可访问其他关联的应用系统。这种技术简化了用户登录流程,提高了用户体验,尤其是在多系统集成的企业环境中非常常见。 ...

    SSO解决方案大全 Single Sign-On for everyone

    5. 两个不同域名下的Web应用程序间实现SSO: 这需要更复杂的方法,如使用联盟身份验证(如OpenID Connect或SAML)或建立信任关系。通过在每个域上设置身份提供者(Identity Provider)和服务提供者(Service ...

    SSO解决方案大全-Single-Sign-On-for-everyone.docx

    本文介绍了如何在各种不同的应用场景中实现SSO,包括虚拟目录的主应用和子应用间、使用不同验证机制、同一域名中、子域名下的应用程序间、运行在不同版本.NET下的应用程序间、两个不同域名下的Web应用程序间和混合...

    多域名SSO单点登录

    所有应用系统能够识别和提取Token信息要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对Token进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过...

Global site tag (gtag.js) - Google Analytics