SSO單點登陸的知識儲備

這段時間在看一些關於SSO單點登陸的問題,寫下一些記錄和一些基礎知識的儲備。php

cookie

Cookie是由服務器端生成,發送給User-Agent(通常是瀏覽器),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie給服務器(前提是瀏覽器設置爲啓用cookie)。Cookie名稱和值能夠由服務器端開發本身定義,這樣服務器能夠知道該用戶是否合法用戶以及是否須要從新登陸等,服務器能夠設置或讀取Cookies中包含信息,藉此維護用戶跟服務器會話中的狀態。web

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或是否使用該網站。cookie

當頁面中的IFRAME或者FRAME或者JS跨域的時候,IE不容許跨域訪問cookie,IE有安全策略限制頁面不帶cookie,爲了解決這個限制,咱們使用P3Psession

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。dom

JSONP跨域數據交互

JSONP是一種依靠開發人員的聰明才智創造出的一種非官方跨域數據交互協議。函數

【參考】
正確理解web交互中的cookie與session
對於 PHP cookie 與 session 的理解
PHP-利用P3P實現跨域
JavaScript 的同源策略

相關文章
相關標籤/搜索