亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于PHP的WEB應(yīng)用系統(tǒng)單點登錄的研究與實現(xiàn)

        2010-07-12 08:18:36陳海虹
        關(guān)鍵詞:表單單點客戶端

        陳海虹

        (浙江海洋學(xué)院網(wǎng)絡(luò)中心,浙江舟山 316004)

        如今不論是高校還是企事業(yè)單位,WEB應(yīng)用系統(tǒng)日漸增多,每個應(yīng)用系統(tǒng)都有自己的用戶管理機制和身份認證機制。用戶需要記住多個甚至十幾個系統(tǒng)的賬號和密碼,登錄許多應(yīng)用系統(tǒng)才能完成他們的日常工作。所以,需要在多個WEB應(yīng)用系統(tǒng)中實施單點登錄方案,用戶只需要登錄1次就可以訪問所有相互信任的應(yīng)用系統(tǒng),并且在系統(tǒng)之間切換時,將不再受到訪問限制。目前實現(xiàn)單點登錄的技術(shù)主要有2種:一種是采用1個具有單點登錄功能的協(xié)議來完成;一種是利用業(yè)界常用的“偽登錄”技術(shù)。采用具有單點登錄功能的協(xié)議來完成的一個典型代表就是使用Kerberos協(xié)議,Kerberos協(xié)議提供了采用票據(jù)來訪問目標系統(tǒng),這也是目前采用的一種比較流行的單點登錄技術(shù),它具有更安全、更具彈性、更高效率的優(yōu)點[1]。但是也有一定的不足,它需要對目標系統(tǒng)或目標服務(wù)進行協(xié)議化,同時需要對應(yīng)用系統(tǒng)做出適當?shù)母脑?,這就限制了它對一些不愿開放的應(yīng)用系統(tǒng)的應(yīng)用。因為一些應(yīng)用系統(tǒng)的結(jié)構(gòu)和接口不開放,造成了第三方無法與其對接,另外,還有一些企業(yè)也不愿意對系統(tǒng)進行修改。“偽登錄”技術(shù),就是通過一些腳本自動為用戶輸入賬號和密碼,屏蔽用戶登錄目標系統(tǒng),這種技術(shù)體現(xiàn)了與應(yīng)用系統(tǒng)的無關(guān)性,例如與應(yīng)用系統(tǒng)的平臺、開發(fā)環(huán)境、結(jié)構(gòu)、編程語言以及腳本,所以應(yīng)用系統(tǒng)無需做任何修改?;赑HP的WEB應(yīng)用系統(tǒng)單點登錄就是根據(jù)“偽登錄”技術(shù)原理,通過PHP語言并結(jié)合MySQL數(shù)據(jù)庫來實現(xiàn)單點登錄功能。

        1 開發(fā)技術(shù)簡述

        1.1 PHP和MYSQL技術(shù)介紹

        PHP語言是一種廣泛用于Web開發(fā)并可以嵌入HTML的多用途的腳本語言。PHP能運行在包括Windows、Linux等在內(nèi)的絕大多數(shù)操作系統(tǒng)環(huán)境中,并支持Oracle、Sybase、MySQL、ODBC等在內(nèi)的大多數(shù)常見數(shù)據(jù)庫,具有很好的跨平臺性;PHP是開源軟件,代碼在許多工程師手中進行了檢測,同時它與Apache編譯在一起的方式也可以讓它具有靈活的安全設(shè)定,具有了公認的安全性能;PHP還具有占用系統(tǒng)資源少、代碼執(zhí)行速度快等優(yōu)勢。

        MySQL是個真正的多用戶、多線程SQL數(shù)據(jù)庫。它是完全免費的,它的平臺無關(guān)性使其能在多個操作系統(tǒng)上運行,其中包括UNIX、Linux、Solaris、SunOS、FreeBSD等,它還具有文件體積小、支持多線程、優(yōu)化SQL查詢算法、執(zhí)行速度快等優(yōu)勢。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站和各種中小型數(shù)據(jù)庫管理工作,如財務(wù)、行政、金融、經(jīng)濟、統(tǒng)計和審計等領(lǐng)域。

        1.2 HTTP協(xié)議簡介[2]

        目前大部分WEB應(yīng)用系統(tǒng)的身份認證技術(shù)在應(yīng)用層上是基于HTTP協(xié)議,HTTP協(xié)議采用了請求/響應(yīng)模型。通常,由HTTP客戶端發(fā)起一個請求,建立一個到服務(wù)器指定端口的TCP連接。HTTP服務(wù)器則在那個端口監(jiān)聽客戶端發(fā)送過來的請求,一旦收到請求,服務(wù)器向客戶端發(fā)回一個狀態(tài)行,比如“HTTP/1.1 200 OK”,和響應(yīng)的消息。HTTP請求報文格式為:請求行-通用信息頭-請求頭-實體頭-報文主體;響應(yīng)報文格式為:狀態(tài)行-通用信息頭-響應(yīng)頭-實體頭-報文主體。

        基于HTTP協(xié)議的客戶端訪問服務(wù)器包括4個過程,分別是建立TCP套接字連接、發(fā)送HTTP請求報文、接收HTTP應(yīng)答報文和關(guān)閉TCP套接字連接。HTTP協(xié)議的請求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。這里介紹最常用的GET方法和POST方法。當客戶端要從服務(wù)器中讀取文檔時,使用GET方法。GET方法要求服務(wù)器將URL定位的資源放在響應(yīng)報文的數(shù)據(jù)部分,回送給客戶端。使用GET方法時,請求參數(shù)和對應(yīng)的值附加在URL后面,利用一個問號代表URL的結(jié)尾與請求參數(shù)的開始,傳遞參數(shù)長度受限制。當客戶端給服務(wù)器提供信息較多時可以使用POST方法。POST方法將請求參數(shù)封裝在HTTP請求數(shù)據(jù)中,以名稱/值的形式出現(xiàn),可以傳輸大量數(shù)據(jù)。

        2 單點登錄功能總體設(shè)計

        2.1 庫表結(jié)構(gòu)設(shè)計

        每個WEB應(yīng)用系統(tǒng)幾乎都需要數(shù)據(jù)庫來存儲用戶的身份認證信息和其他的數(shù)據(jù)信息,但是彼此數(shù)據(jù)庫的類型、庫表結(jié)構(gòu)、字段值、加密方式都不同,無法直接在各應(yīng)用系統(tǒng)的數(shù)據(jù)庫中讀出和操作用戶身份認證信息。所以,需要一個獨立的數(shù)據(jù)庫來單獨存儲用戶在各應(yīng)用系統(tǒng)的身份認證信息。

        本系統(tǒng)采用MySQL數(shù)據(jù)庫。數(shù)據(jù)結(jié)構(gòu)主要包含3張表,分別是:sso_app_info、sso_app_props、sso_login_info。

        sso_app_info表存放:PHP模擬HTTP客戶端登錄各應(yīng)用系統(tǒng)用到的數(shù)據(jù)信息、允許用戶輸入賬號密碼的表單元素名、用戶身份驗證失敗應(yīng)用系統(tǒng)返回的信息。sso_app_props表存放:允許用戶輸入除賬號密碼外其它表單元素名,這張表中的數(shù)據(jù)主要用來構(gòu)建動態(tài)或靜態(tài)表單。sso_login_info表存放:用戶成功登錄各應(yīng)用系統(tǒng)的身份認證信息。圖1是這個數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)庫模型圖。

        圖1 數(shù)據(jù)庫模型圖Fig.1 Database illustration of model

        2.2 總體設(shè)計思路

        單點登錄主要與應(yīng)用系統(tǒng)和用戶有關(guān),所以首先分配三個變量標識應(yīng)用系統(tǒng)和用戶,它們分別是應(yīng)用系統(tǒng)的ID號、應(yīng)用系統(tǒng)名稱、用戶ID號,它們的值分別與表sso_app_info中的uid、name字段和表sso_login_info中的userid字段相對應(yīng)。單點登錄模型依據(jù)這3個值判斷哪個用戶登錄到哪個應(yīng)用系統(tǒng)。

        如果數(shù)據(jù)庫表sso_login_info中有符合這些變量的記錄,則說明用戶曾成功登錄過這個應(yīng)用系統(tǒng),取出庫中數(shù)據(jù),以URL形式或動態(tài)表單形式傳遞登錄數(shù)據(jù)并自動登錄到WEB應(yīng)用系統(tǒng)。

        如果沒有記錄,說明用戶首次登錄這個應(yīng)用系統(tǒng),由單點登錄系統(tǒng)生成或直接調(diào)用靜態(tài)表單頁面,讓用戶初次完成應(yīng)用系統(tǒng)認證信息的輸入過程。并用PHP模擬瀏覽器客戶端傳遞用戶輸入的認證信息,通過這個方法檢查用戶輸入的認證信息是否能通過WEB應(yīng)用系統(tǒng)服務(wù)器的認證。

        如果用戶輸入的認證信息能通過WEB應(yīng)用系統(tǒng)服務(wù)器的認證則將認證信息存入庫中,并借助URL形式或者動態(tài)表單形式傳遞認證信息并自動登錄應(yīng)用系統(tǒng),否則輸出錯誤信息。程序流程圖如圖2所示。

        圖2 總體設(shè)計程序流程圖Fig.2 The flowchart of system design

        3 關(guān)鍵技術(shù)分析

        3.1 PHP模擬瀏覽器登錄應(yīng)用系統(tǒng)服務(wù)器

        用戶輸入賬號、密碼等登錄信息后,應(yīng)用系統(tǒng)服務(wù)器需要判斷是否通過此認證。可用PHP模擬HTTP客戶端,發(fā)送認證信息及接收反饋信息,從反饋信息中判斷認證是否被通過。PHP模擬HTTP客戶端的程序流程圖如圖3所示。fsockopen函數(shù)可以打開指定網(wǎng)域的TCP套接字連接或IP地址的TCP套接字連接,然后傳回1個文件指標,這可以和fwrite等函數(shù)一起使用。相關(guān)代碼[3]如下:

        圖3 PHP模擬瀏覽器登入流程圖Fig.3 The flowchart about using php to mimic browser logining

        3.2 生成具有靜態(tài)或動態(tài)表單的網(wǎng)頁,模擬應(yīng)用系統(tǒng)登錄界面

        表單是一個包含表單元素的區(qū)域,表單元素是允許用戶在表單中(比如文本域、下拉列表、單選框、復(fù)選框等等)輸入信息的元素。

        為了獲取不同應(yīng)用系統(tǒng)中不同用戶的登錄信息,需要預(yù)先生成供用戶填寫的模擬應(yīng)用系統(tǒng)登錄界面的表單。不同的應(yīng)用系統(tǒng)具有不同的表單元素,可以先分析各應(yīng)用系統(tǒng)的表單元素并存入數(shù)據(jù)庫中,然后利用PHP語言加載數(shù)據(jù)庫中的數(shù)據(jù)生成具有表單元素的登錄頁面,為了提高速度,再將動態(tài)頁面生成靜態(tài)頁面。相關(guān)代碼如下:

        代替用戶輸入認證信息自動登入WEB應(yīng)用系統(tǒng)的步驟中也用到了表單。

        3.3提交認證信息的請求方法

        為了達到程序的強健性,將HTTP協(xié)議中的GET和POST方法相結(jié)合來提交請求認證信息,因為有的系統(tǒng)不支持跨域POST方法。GET方法將認證請求信息放在URL中傳遞給系統(tǒng)服務(wù)器,POST方法是將認證請求信息作為表單元素提交給系統(tǒng)服務(wù)器。相關(guān)代碼如下:

        4 結(jié)束語

        依據(jù)“偽登錄”技術(shù)原理采用PHP腳本語言自動為用戶輸入賬號和密碼,模擬用戶登錄應(yīng)用系統(tǒng)的單點登錄模型,使用戶只須完成最初的登錄過程就可以直接訪問應(yīng)用系統(tǒng),無須每次訪問一個應(yīng)用資源都登錄1次,大大提高了工作效率。這個模型與應(yīng)用系統(tǒng)無關(guān),應(yīng)用系統(tǒng)無須修改就可使用,具有高度擴展性,同時,即使單點登錄系統(tǒng)失效,應(yīng)用系統(tǒng)仍可以正常使用,容錯性好。需要改進的地方是,它沒有將存儲認證信息的數(shù)據(jù)庫與其他應(yīng)用系統(tǒng)的數(shù)據(jù)庫同步起來。

        [1]朱 嬋.基于Kerberos票據(jù)的Web單點登錄設(shè)計[J].現(xiàn)代計算機,2007(2):76-77.

        [2]STEVENS W R.TCP/IP詳解·卷3:TCP事務(wù)協(xié)議、HTTP、NNTP和UNIX域協(xié)議[M].北京:機械工業(yè)出版社,2002.

        [3]WILLISON.httpClient-a PHP Web Client Class[CP/OL].[2003-04-06].http://scripts.incutio.com/httpclient/index.php.

        猜你喜歡
        表單單點客戶端
        電子表單系統(tǒng)應(yīng)用分析
        華東科技(2021年9期)2021-09-23 02:15:24
        歷元間載波相位差分的GPS/BDS精密單點測速算法
        超薄異型坯連鑄機非平衡單點澆鑄實踐與分析
        山東冶金(2019年5期)2019-11-16 09:09:10
        縣級臺在突發(fā)事件報道中如何應(yīng)用手機客戶端
        傳媒評論(2018年4期)2018-06-27 08:20:24
        孵化垂直頻道:新聞客戶端新策略
        傳媒評論(2018年4期)2018-06-27 08:20:16
        基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
        電子測試(2018年10期)2018-06-26 05:53:34
        淺談網(wǎng)頁制作中表單的教學(xué)
        數(shù)字電視地面?zhèn)鬏斢脝晤l網(wǎng)與單點發(fā)射的效果比較
        16噸單點懸掛平衡軸的優(yōu)化設(shè)計
        客戶端空間數(shù)據(jù)緩存策略
        成人小说亚洲一区二区三区| 国产精品国产三级野外国产| 国产高清一区二区三区四区色| 人禽交 欧美 网站| 欧美国产成人精品一区二区三区| 女同成片av免费观看| 亚洲女同恋中文一区二区| 富婆猛男一区二区三区| 吃奶摸下高潮60分钟免费视频| 少妇性l交大片| 男人天堂网在线视频| 太大太粗太爽免费视频| 黑人玩弄极品人妻系列视频| 日本熟妇色xxxxx日本妇| 国产成人av一区二区三区在线| 无遮挡十八禁在线视频国产制服网站| 国产91熟女高潮一曲区| 日产精品高潮一区二区三区5月| 无码任你躁久久久久久老妇| 最新亚洲人成网站在线| 黑丝国产精品一区二区| 亚洲成av人片极品少妇| 久久综合九色欧美综合狠狠| 毛片大全真人在线| 国产精品1区2区| 国产视频一区二区三区久久亚洲| 久久精品中文字幕无码绿巨人| 日韩无套内射视频6| 无码中文字幕av免费放| 伊人久久大香线蕉av不变影院| 国产精品毛片无遮挡高清| 久久久久久亚洲精品中文字幕| 连续高潮喷水无码| 国产影片免费一级内射| 超碰人人超碰人人| 日韩av精品国产av精品| 久热香蕉av在线爽青青| 国产一级r片内射视频播放| 99e99精选视频在线观看| 午夜福利av无码一区二区| 日韩欧美第一页|