SSO单点登录的知识储备

kaizhuQin

这段时间在看一些关于SSO单点登录的问题,写下一些记录和一些基础知识的储备。

cookie

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

setcookie()

setcookie(name,value,expire,path,domain,secure)

name 必需。规定 cookie 的名称。
value 必需。规定 cookie 的值。
expire 可选。规定 cookie 的有效期。
path 可选。规定 cookie 的服务器路径。
domain 可选。规定 cookie 的域名。
secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。

For example:

setcookie('uid','10007',time()+3600*24,'.')

session

session的工作原理
(1)当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。
(2)首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。
(3)当执行PHP脚本时,通过使用session_register()函数注册session变量。
(4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。

利用P3P解决单点登陆跨域问题

P3P(Platform for Privacy Preferences)是W3C公布的一项隐私保护推荐标准,以为用户提供隐私保护。

P3P标准的构想是:Web 站点的隐私策略应该告之访问者该站点所收集的信息类型、信息将提供给哪些人、信息将被保留多少时间及其使用信息的方式,如站点应做诸如 “本网站将监测您所访问的页面以提高站点的使用率”或“本网站将尽可能为您提供更合适的广告”等申明。访问支持P3P网站的用户有权查看站点隐私报告,然后决定是否接受cookie或是否使用该网站。

当页面中的IFRAME或者FRAME或者JS跨域的时候,IE不允许跨域访问cookie,IE有安全策略限制页面不带cookie,为了解决这个限制,我们使用P3P

header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
setcookie('uid','kaizhu',time()+3600*24,'/');   

这里说的跨域主要是设置cookie的情况,如果是跨域读取cookie,要保证在对应设置cookie的时候设置了P3P,否则在读取的事情IE会屏蔽跨域cookie。

JSONP跨域数据交互

JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。

【参考】
正确理解web交互中的cookie与session
对于 PHP cookie 与 session 的理解
PHP-利用P3P实现跨域
JavaScript 的同源策略

阅读 4.5k

kaizhuQin
好记性,不如烂笔头

PHPer

977 声望
13 粉丝
0 条评论

PHPer

977 声望
13 粉丝
文章目录
宣传栏