在網(wǎng)頁(yè)上要實(shí)現(xiàn)基于硬件對(duì)用戶(hù)進(jìn)行身份認(rèn)證,就必然需要網(wǎng)頁(yè)能夠訪問(wèn)硬件內(nèi)所存儲(chǔ)的數(shù)據(jù)。但是網(wǎng)頁(yè)有基本的安全模型,“沙盒”(SandBox),目的就在限制網(wǎng)頁(yè)對(duì)本地資源的訪問(wèn)能力,這兩者實(shí)際上是矛盾的。Microsoft推出的ActiveX能夠解決開(kāi)發(fā)人員在實(shí)際開(kāi)發(fā)中遇到的這個(gè)問(wèn)題,但是ActiveX過(guò)于強(qiáng)大,事實(shí)上幾乎無(wú)所不能。IE的做法是使用簽名驗(yàn)證,然后提示用戶(hù)認(rèn)清控件來(lái)源,把選擇權(quán)交給用戶(hù)。這樣就在用戶(hù)端需要進(jìn)行若干安全設(shè)置,部署這類(lèi)系統(tǒng)在用戶(hù)那里常常造成困擾,用戶(hù)不知道怎么樣去做設(shè)置,只能求助于技術(shù)支持人員,形成大量的售后支持需求。
USB KEY身份認(rèn)證管理系統(tǒng)不使用ActiveX。其要點(diǎn)在于在用戶(hù)終端運(yùn)行一個(gè)具備本地資源訪問(wèn)權(quán)限的可執(zhí)行程序,該程序負(fù)責(zé):
1 與網(wǎng)頁(yè)進(jìn)行交互,獲取網(wǎng)頁(yè)對(duì)硬件的讀寫(xiě)操作要求;
2 與硬件進(jìn)行交互,執(zhí)行讀寫(xiě)硬件數(shù)據(jù)的操作;
USB KEY身份認(rèn)證管理系統(tǒng)與硬件如何進(jìn)行交互:
容易理解,就是利用硬件的API進(jìn)行讀寫(xiě)。
USB KEY身份認(rèn)證管理系統(tǒng)與網(wǎng)頁(yè)進(jìn)行交互:
USB KEY身份認(rèn)證管理系統(tǒng)利用預(yù)先定義的網(wǎng)頁(yè)元素,來(lái)實(shí)現(xiàn)與網(wǎng)頁(yè)的交互,比如網(wǎng)頁(yè)里面有個(gè)Edit控件元素<INPUT type=hidden id=IID_SecureWeb_I_SerialNumber value="" length=20>,其ID為IID_SecureWeb_I_SerialNumber,當(dāng)硬件插入時(shí)USB KEY身份認(rèn)證管理系統(tǒng)就會(huì)自動(dòng)讀出硬件的ID序列號(hào),并將該控件的value屬性賦值為序列號(hào)數(shù)據(jù),這樣網(wǎng)頁(yè)就獲知了當(dāng)前插入的硬件的ID序列號(hào),這樣實(shí)現(xiàn)了USB KEY身份認(rèn)證管理系統(tǒng)與網(wǎng)頁(yè)的交互;再例如,網(wǎng)頁(yè)里面有個(gè)Edit控件元素<INPUT type=button id=IID_SecureWeb_I_Signin value="登錄">,其ID為IID_SecureWeb_I_Signin,當(dāng)終端用戶(hù)按下此按鈕,USB KEY身份認(rèn)證管理系統(tǒng)就知道用戶(hù)選擇了登錄操作,就執(zhí)行登錄過(guò)程所需要的運(yùn)算并將運(yùn)算結(jié)果傳送給網(wǎng)頁(yè)。
1 數(shù)據(jù)庫(kù)
需要給數(shù)據(jù)庫(kù)里面的用戶(hù)表增加兩個(gè)域:SerialNumber (建議變長(zhǎng)字符串類(lèi)型,長(zhǎng)度32,可以為空),SaltValue(建議變長(zhǎng)字符串類(lèi)型,長(zhǎng)度32,可以為空)(這個(gè)數(shù)據(jù)表域名可以自行確定)。當(dāng)然您還可以增加別的以便更好的管理,比如,綁定UKey的時(shí)間(或者說(shuō)是UKey的發(fā)行時(shí)間)等等。域名可以自行設(shè)定,不一定是按照這里說(shuō)的做。(約束您開(kāi)發(fā)的實(shí)際上只有那些頁(yè)面元素的ID,其他都不作限定)。
2 頁(yè)面語(yǔ)言
您可以選擇ASP、ASP.NET、JSP、PHP,這些無(wú)關(guān)緊要。實(shí)際上,如果您完全理解了USB KEY身份認(rèn)證管理系統(tǒng)方案的原理,就會(huì)明白,任何頁(yè)面程序開(kāi)發(fā)語(yǔ)言其實(shí)都可以使用。只不過(guò)上述的幾種我們提供了一個(gè)基本可以使用的示例代碼。您可以在示例代碼文件包里面找到相應(yīng)的目錄,然后解壓出來(lái)即可。下面講解中我們主要以ASP代碼為例。
3 理解基本架構(gòu)
利用USB KEY身份認(rèn)證管理系統(tǒng)方案實(shí)現(xiàn)網(wǎng)站用戶(hù)身份認(rèn)證,需要實(shí)現(xiàn)兩個(gè)功能模塊:UKey的發(fā)行|管理模塊(包括發(fā)行、修改、刪除、回收等等功能),終端用戶(hù)的認(rèn)證模塊。按照一般的說(shuō)法,前者面向網(wǎng)站運(yùn)營(yíng)維護(hù)人員,屬于網(wǎng)站后臺(tái),后者面向網(wǎng)站用戶(hù),始于網(wǎng)站前臺(tái)。
4 理解基本概念
UKey硬件序列號(hào)
每個(gè)UKey硬件都有一個(gè)唯一的硬件序列號(hào),由16位數(shù)字組成。
登錄入口
一個(gè)登錄入口由一個(gè)名稱(chēng)和一個(gè)URL兩項(xiàng)信息組成。登錄入口在USB KEY身份認(rèn)證管理系統(tǒng)相關(guān)文檔里面稱(chēng)為“應(yīng)用”。登錄入口的名稱(chēng)(“應(yīng)用名”)必須是唯一的,能夠與其他登錄入口相區(qū)別。URL有兩個(gè)作用,一是在終端插入UKey時(shí),需要彈出登錄入口時(shí),會(huì)主動(dòng)彈出的網(wǎng)址;二是URL的域名部分會(huì)用于檢查,使該應(yīng)用對(duì)應(yīng)的用戶(hù)在同一域名下不同的URL也可以進(jìn)行認(rèn)證。一個(gè)網(wǎng)站可以包含多個(gè)登錄入口,一個(gè)登錄入口在同一個(gè)網(wǎng)站下(以域名為準(zhǔn))可以有多個(gè)登錄網(wǎng)址。每個(gè)UKey針對(duì)一個(gè)登錄入口只能創(chuàng)建一個(gè)賬戶(hù)。如果一個(gè)UKey用戶(hù)需要登錄多個(gè)網(wǎng)站,就要設(shè)置多個(gè)登錄入口,并在每個(gè)用戶(hù)UKey內(nèi)為每個(gè)登錄入口創(chuàng)建一個(gè)賬戶(hù)。
用戶(hù)賬戶(hù)信息
用戶(hù)賬戶(hù)信息由三部分組成:賬戶(hù)名稱(chēng)、認(rèn)證種子數(shù)據(jù)和賬戶(hù)管理密碼。賬戶(hù)名稱(chēng)就是UKey所代表的用戶(hù)的名稱(chēng),主要用于顯示;認(rèn)證種子數(shù)據(jù)是用于認(rèn)證的關(guān)鍵數(shù)據(jù);賬戶(hù)管理密碼是由網(wǎng)站運(yùn)維人員掌握,在創(chuàng)建的時(shí)候,提供,寫(xiě)入到UKey里面,在對(duì)用戶(hù)的賬戶(hù)信息進(jìn)行管理包括刪除、修改的時(shí)候,需要提供賬戶(hù)管理密碼才有權(quán)進(jìn)行。賬戶(hù)管理密碼的作用在于避免非本網(wǎng)站運(yùn)維人員變更UKey賬戶(hù)信息。不同的UKey可以有不同的賬戶(hù)管理密碼,也可以相同。如果不同,賬戶(hù)管理密碼也可以保存在數(shù)據(jù)庫(kù)該用戶(hù)的記錄里面,這樣一定程度上會(huì)更安全。
1 發(fā)行 UKey
發(fā)行UKey的頁(yè)面,需要包含以下頁(yè)面元素:
INPUT元素:
IID_SecureWeb_I_SerialNumber:硬件序列號(hào)
IID_SecureWeb_I_ApplicationName:應(yīng)用名
IID_SecureWeb_I_URL:應(yīng)用URL
IID_SecureWeb_I_UserName:用戶(hù)賬戶(hù)名稱(chēng)
IID_SecureWeb_I_SaltValue:認(rèn)證種子數(shù)據(jù)
IID_SecureWeb_I_AdminPass:賬戶(hù)管理密碼
按鈕元素
IID_SecureWeb_B_Create:創(chuàng)建賬戶(hù)按鈕
創(chuàng)建流程:
1 【頁(yè)面需要編碼完成的流程】應(yīng)用名、應(yīng)用URL、賬戶(hù)管理密碼可以預(yù)先賦值value屬性,認(rèn)證種子數(shù)據(jù)value屬性由服務(wù)器端預(yù)先生成并賦值,用戶(hù)賬戶(hù)名稱(chēng)可以由運(yùn)維人員輸入,如果用戶(hù)已經(jīng)存在,也可以預(yù)先賦值,硬件序列號(hào)將由USB KEY身份認(rèn)證管理系統(tǒng)程序自動(dòng)賦值。
2 操作人員點(diǎn)擊“創(chuàng)建賬戶(hù)按鈕”后,USB KEY身份認(rèn)證管理系統(tǒng)程序?qū)⑸鲜鏊行畔?xiě)入UKey;
3 【頁(yè)面需要編碼完成的流程】頁(yè)面需要做的工作主要就是:創(chuàng)建或者修改用戶(hù)記錄,將硬件序列號(hào)和認(rèn)證種子數(shù)據(jù)保存進(jìn)數(shù)據(jù)庫(kù)。這里需要注意檢查不能讓一個(gè)硬件序列號(hào)的綁定多個(gè)用戶(hù)記錄。
請(qǐng)參考示例中create.asp創(chuàng)建流程的服務(wù)器端代碼片段:
<%
if request.Form("action")="dbcreate" then
set rs=conn.execute("select * from psa_users where SerialNumber='"&request.form("IID_SecureWeb_I_SerialNumber")&"'")
if not rs.eof then
conn.execute("delete from psa_users where SerialNumber='"&request.form("IID_SecureWeb_I_SerialNumber")&"'")
end if
rs.close
set rs=nothing
Conn.ExeCute("INSERT INTO psa_users (UserName, SerialNumber, AdminPass, SaltValue) values ('"&request.form("IID_SecureWeb_I_UserName")&"', '"&request.form("IID_SecureWeb_I_SerialNumber")&"', '"&request.form("IID_SecureWeb_I_AdminPass")&"', '"&request.form("IID_SecureWeb_I_SaltValue")&"')")
response.write "<script>"
response.write "alert('創(chuàng)建成功');"
response.write "</script>"
end if
%>
2 修改 UKey
修改和發(fā)行基本類(lèi)似,只不過(guò)需要根據(jù)檢查賬戶(hù)是否存在,以及驗(yàn)證賬戶(hù)管理密碼是夠正確。
INPUT元素:
IID_SecureWeb_I_SerialNumber:硬件序列號(hào)
IID_SecureWeb_I_ApplicationName:應(yīng)用名
IID_SecureWeb_I_URL:應(yīng)用URL
IID_SecureWeb_I_UserName:用戶(hù)賬戶(hù)名稱(chēng)
IID_SecureWeb_I_AdminPass:賬戶(hù)管理密碼
IID_SecureWeb_I_AdminPassNew:新的賬戶(hù)管理密碼
按鈕元素
IID_SecureWeb_B_Update:修改賬戶(hù)按鈕
修改流程:
1 【頁(yè)面需要編碼完成的流程】應(yīng)用名、賬戶(hù)管理密碼可以預(yù)先賦值value屬性,其他信息:應(yīng)用URL、新的賬戶(hù)管理密碼,用戶(hù)賬戶(hù)名稱(chēng)等,可以通過(guò)設(shè)置相應(yīng)元素的value屬性賦值,進(jìn)行修改。
2 操作人員點(diǎn)擊“修改賬戶(hù)按鈕”后,USB KEY身份認(rèn)證管理系統(tǒng)程序?qū)⒃隍?yàn)證賬戶(hù)管理密碼后,將上述所有信息寫(xiě)入UKey;
3 【頁(yè)面需要編碼完成的流程】頁(yè)面需要做的工作主要就是:修改用戶(hù)記錄相關(guān)域。
3 刪除賬戶(hù)
刪除指定賬戶(hù)。刪除前會(huì)檢查賬戶(hù)是否存在,以及驗(yàn)證賬戶(hù)管理密碼是夠正確。
INPUT元素:
IID_SecureWeb_I_ApplicationName:應(yīng)用名
IID_SecureWeb_I_AdminPass:賬戶(hù)管理密碼
按鈕元素
IID_SecureWeb_B_Delete:刪除賬戶(hù)按鈕
刪除流程:
1 【頁(yè)面需要編碼完成的流程】應(yīng)用名、賬戶(hù)管理密碼可以預(yù)先賦值value屬性。
2 操作人員點(diǎn)擊“刪除賬戶(hù)按鈕”后,USB KEY身份認(rèn)證管理系統(tǒng)程序?qū)⒃隍?yàn)證賬戶(hù)管理密碼后,將UKey內(nèi)保存的指定應(yīng)用的信息刪除;
3 【頁(yè)面需要編碼完成的流程】頁(yè)面需要做的工作主要就是:修改或者刪除用戶(hù)相關(guān)記錄。
4 回收 UKey
按鈕元素
IID_SecureWeb_B_Format:格式化UKey按鈕
聯(lián)系客服