PHP版單點登陸實現方案

來源:互聯網
上載者:User

簡介:這是PHP版單點登陸實現方案的詳細頁面,介紹了和php,有關的知識、技巧、經驗,和一些php源碼等。

class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=323140' scrolling='no'>

摘要:

本文主要介紹了利用webservice,session,cookie技術,來進行通用的單點登入系統的分析與設計。具體實現語言為PHP。單點登入,英文名為Single Sign On,簡稱為 SSO,是目前企業,網路業務的使用者綜合處理的重要組成部分。而SSO的定義,是在多個應用系統中,使用者只需要登陸一次就可以訪問所有相互信任的應用系統。

動機:

用過uctenter的全站登入方式的朋友,應該都知道這是典型的觀察者模式的解決方案。使用者中心作為subject, 其所屬observer的註冊和刪除統一在ucenter的後台進行。而各個子應用網站都對應一個observer。每次使用者中心的登入動作,都會觸發js指令碼回調w3c標準的子站登入介面(api/uc.php)。

這種方式的缺點,本人認為主要是兩點:1. 子網站過多時,回調介面相應增多,這個在分布子站的量的限制上,如何控制來使登入效率不會太低,不好把握; 2. 當某個子站回調介面出現問題時,預設的登入過程會卡住(可以限制登入程式的執行時間,但相應出現問題子站後面的子站的回調介面就調不到了。

基於以上問題,在實際開發過程中,本人設計了另一套單點登入系統。

一. 登陸原理說明

單點登入的技術實現機制:當使用者第一次訪問應用系統1的時候,因為還沒有登入,會被引導到認證系統中進行登入;根據使用者提供的登入資訊,認證系統進行身份效驗,如果通過效驗,應該返回給使用者一個認證的憑據--ticket;使用者再訪問別的應用的時候,就會將這個ticket帶上,作為自己認證的憑據,應用系統接受到請求之後會把ticket送到認證系統進行效驗,檢查ticket的合法性。如果通過效驗,使用者就可以在不用再次登入的情況下訪問應用系統2和應用系統3了。

可以看出,要實現SSO,需要以下主要的功能:

a) 所有應用系統共用一個身份認證系統;

b) 所有應用系統能夠識別和提取ticket資訊;

c) 應用系統能夠識別已經登入過的使用者,能自動判斷目前使用者是否登入過,從而完成單點登入的功能

基於以上基本原則,本人用php語言設計了一套單點登入系統的程式,目前已投入正式產生伺服器運行。本系統程式,將ticket資訊以全系統唯一的 session id作為媒介,從而擷取當前線上使用者的全站資訊(登陸狀態資訊及其他需要處理的使用者全站資訊)。

二. 過程說明:

登陸流程:

1. 第一次登陸某個站:

a) 使用者輸入使用者名稱+密碼,向使用者驗證中心發送登入請求

b) 當前登入網站,通過webservice請求,使用者驗證中心驗證使用者名稱,密碼的合法性。如果驗證通過,則產生ticket,用於標識當前會話的使用者,並將當前登陸子站的網站標識符記錄到使用者中心,最後

c) 將擷取的使用者資料和ticket返回給子站。如果驗證不通過,則返回相應的錯誤狀態代碼。

d) 根據上一步的webservice請求返回的結果,當前子站對使用者進行登陸處理:如狀態代碼表示成功的話,則當前網站通過本站cookie儲存 ticket,並本站記錄使用者的登入狀態。狀態代碼表示失敗的話,則給使用者相應的登入失敗提示。

2. 登陸狀態下,使用者轉到另一子:

a) 通過本站cookie或session驗證使用者的登入狀態:如驗證通過,進入正常本站處理常式;否則戶中心驗證使用者的登入狀態(發送ticket到使用者驗證中心),如驗證通過,則對返回的使用者資訊進行本地的登入處理,否則表明使用者未登入。

登出流程

a) 當前登出站清除使用者本站的登入狀態 和 本地儲存的使用者全站唯一的隨機id

b) 通過webservice介面,清除全站記錄的全站唯一的隨機id。webservice介面會返回,登出其他已登入子站的javascript代碼,本站輸出此代碼。

c) js代碼訪問相應站W3C標準的登出指令碼

三. 代碼說明:

本文所涉及到相關代碼,已打包上傳,如有興趣,可在本文最後下載連結處點擊下載。

“PHP版單點登陸實現方案”的更多相關文章 》

愛J2EE關注Java邁克爾傑克遜視頻站JSON線上工具

http://biancheng.dnbcw.info/php/323140.html pageNo:16

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.