单点登录sso 、cookie跨域

setcookie();中的第五个参数是域名参数domain

这个参数如果是.domain.com那么这个cookie可以在主域名或者任意子域名都能够获取。相同域名下。子域名间可以相互共享。但是不相同的域名下不能直接共享。

不同(主)域名直接可以通过嵌套的方式生成cookie,通过A域名下的页面嵌套B域名下的连接,从而生成B域名的cookie。但是不能直接相互共享。

嵌套的方式在ie下可能会被阻止,不同的浏览器对第三方生成cookie是有着不同的权限的。因此用到p3p开启ie的权限允许第三方生成cookie

header(‘P3P: CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"‘);//p3p

  

sso单点登录

A登录之后,产生一个标示,带着这个标示去访问B(判断是否登录成功),再获取数据。

只要sessionid知道 就可以去找链接池找到登录状态

子域名下setcooke.php

<?php
	//假如登录成功了
	//在子域名下生成一个共享cookie
	$gongxiang = "zhuliuyang";

	setcookie("gongxiang",$gongxiang,time()+3600,"/",".cs.com");//设置共享的cookie

	session_id($gongxiang);//设置session_id
	session_start();//开启 session
	$_SESSION[‘isLogin‘] = ‘1‘;

	echo "set success";

  

主域名下判断是否登录

<?php
if(isset($_COOKIE[‘gongxiang‘]) && $_COOKIE[‘gongxiang‘]!=false)
{
	session_id($_COOKIE[‘gongxiang‘]);//获取共享cookie并设置session_id
}
session_start();//开启session

echo "<pre>";
var_dump($_COOKIE);
var_dump($_SESSION);
echo "</pre>";

?>

  运行结果:

清除cookie之后。是两个空数组。

不同主域名下原理也是一样的。前提是在同一服务器上。不在同一服务器上,那么session的连接池就找不到了。

在不同的服务器上可以吧登录状态存到数据库中或者文件中。再进行判断

(未完待续)

时间: 2024-10-08 21:29:18

单点登录sso 、cookie跨域的相关文章

单点登录 关于Cookie跨域的问题

public void ProcessRequest(HttpContext context) { HttpCookie cookie = new HttpCookie("name", "www.Admin10000.com"); cookie.Domain = "test2.com"; cookie.Path = "/"; cookie.Expires = DateTime.Now.AddMinutes(10000); co

单点登录之ajax跨域实现

需求:相同根域名或不同根域名的两个域名,实现单点登录登出 原理: 以b站为例,b站的账号登录域名为passport.bilibili.com.主站为www.bilibili.com,游戏站为www.biligame.com, 获取登录用户信息接口为http://api.bilibili.com/nav?callback=jQuery17209622933453583296_1497257608944&type=jsonp&_=1497257609114, 1.用户访问www.bilibil

【原】保存一下之前spring-session的redis单点登录配置文件【跨域】

由于先前在调试项目的时候需要做单点,但是项目是基于spring-session老版本做的单点登录,没有实现跨域登录,因为只是针对相同域名下的用户缓存进行存储而已,例如 http://127.0.0.1/wap 和 http://127.0.0.1/wap2 ,这样的话只要在 第一个域名登录后再去第二2个域名进行用户登录,则无需重复登录,但是如果是 http://127.0.0.1/wap 和 http://192.168.1/wap2 这样就没办法找到session. <?xml version

可跨域的单点登录(SSO)实现方案

可跨域的单点登录(SSO)实现方案 SSO简介 定义: 传统的单站点登录访问授权机制是:登录成功后将用户信息保存在session中,sessionId保存在cookie中,每次访问需要登录访问的资源(url)时判断当前session是否为空,为空的话跳转到登录界面登录,不为空的话允许访问. 单点登录是一种多站点共享登录访问授权机制,访问用户只需要在一个站点登录就可以访问其它站点需要登录访问的资源(url).用户在任意一个站点注销登录,则其它站点的登录状态也被注销.简而言之就是:一处登录,处处登录

cookie跨域,跨目录访问及单点登录。

首先普及下域名的知识: 域名: baidu.com    // 一级域名  A play.baidu.com  //  二级域名 B abc.play.baidu.com // 三级域名  C 数有几个点词. 三个域名分别用A/B/C 表示. 1.1 cookie在域名下的设置:Domian 1.如果未设置Domian默认为当前网站的域名,此时只有当前域名够访问cookie; 2.Domian设置为域名域名及其子域名都可以访问.例如给A设置,A.B.C 都可以访问. cookie在域名下的删除:

基于Cookie跨域的单点登录问题

由于项目中,需要用的单点登录,主要的思路是:系统1:用户名密码-->写入Cookie-->其他系统读取Cookie. 1.在同一个服务器下的Cookie共享 @Component("userLoginAction") @Namespace("/userLogin") @ParentPackage("json-default") public class UserLoginAction extends ActionSupport{ @A

单点登录SSO的实现原理

原文地址:http://blog.csdn.net/cutesource/article/details/5838693 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这

单点登录 SSO

1 什么是单点登陆       单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.       较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务.例如财务系统为财务人员提供财务的管理.计算和报表服务:人事系统为人事部门 提供全公司人员的维护服务:各种业务系统为公司内部不同的业务提供不同的服务等等.这些系统的目的都是让计算机来 进行复杂繁琐的

单点登录SSO的实现原理 (转)

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉.实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因

单点登录SSO:图示和讲解

h1.title,h2.title { padding-left: 2rem !important; color: rgb(71, 91, 204) !important } h1.title { font-size: 22px !important } h2.title { font-size: 18px !important } .padding { padding: 0 2rem; padding-bottom: 1rem } blockquote.menu { padding-left: