◆常旭 侯春雷
(北京計(jì)算機(jī)技術(shù)及應(yīng)用研究所 北京 100854)
本文所要解決的技術(shù)問(wèn)題在于提供一種基于第三方Key的Samba身份認(rèn)證方法,以便解決Samba只支持用戶名和口令的認(rèn)證方式,以及由此引起的安全隱患問(wèn)題。
為實(shí)現(xiàn)上述目的,本文提供了一種基于第三方Key的Samba身份認(rèn)證方法,包括:Web認(rèn)證代理模塊、后臺(tái)服務(wù)模塊以及第三方USBKey設(shè)備。
Web認(rèn)證代理程序?yàn)楸疚牡暮诵膬?nèi)容,它起到連接第三方USBKey設(shè)備和對(duì)Samba進(jìn)行認(rèn)證的作用。
Web認(rèn)證代理程序安裝在客戶端,這里的客戶端為PC桌面設(shè)備。Web認(rèn)證代理程序工作流程如下:它會(huì)啟動(dòng)一個(gè)主線程,主線程會(huì)打開(kāi)已經(jīng)存儲(chǔ)在配置文件中配置好的端口。主線程會(huì)一直監(jiān)聽(tīng)該端口,只要有客戶端的連接請(qǐng)求到來(lái),它就用“連接處理”函數(shù)去處理連接請(qǐng)求?!斑B接處理”函數(shù)會(huì)進(jìn)行一些預(yù)判,來(lái)決定是否允許該連接,主要拒絕因素是判定連接請(qǐng)求是否來(lái)自本客戶端。如果允許,則調(diào)用“請(qǐng)求隊(duì)列”函數(shù)并把處理工作交給它,“請(qǐng)求隊(duì)列”函數(shù)也會(huì)進(jìn)行預(yù)判,判斷連接隊(duì)列是否已滿,如果滿了就等待直到有位置容納請(qǐng)求,如果沒(méi)有空閑進(jìn)程且進(jìn)程數(shù)量沒(méi)有達(dá)到最大閾值,就會(huì)啟動(dòng)一個(gè)新的工作進(jìn)程去處理客戶端的請(qǐng)求。
Web認(rèn)證代理程序可以被嵌入到任意的上層應(yīng)用里(客戶端軟件或Web應(yīng)用服務(wù))里,Web認(rèn)證代理程序與上層應(yīng)用間交互數(shù)據(jù)承載協(xié)議為HTTP,驗(yàn)證結(jié)果通過(guò)JSON編碼返回給上層應(yīng)用。Web認(rèn)證代理程序?qū)ν馓峁〨ET和POST兩種調(diào)用方式。以GET方式交互時(shí),請(qǐng)求數(shù)據(jù)位于URL中,以POST方式交互時(shí),請(qǐng)求數(shù)據(jù)由表單提交。
將第三方Key的驅(qū)動(dòng)配置文件、動(dòng)態(tài)庫(kù)和智能卡服務(wù)布置完畢后,Web認(rèn)證代理將Key的接口函數(shù)頭文件加載完畢后,Web認(rèn)證代理等待用戶輸入指令,當(dāng)指令為“驗(yàn)證PIN碼”時(shí),Web認(rèn)證代理模塊接收到上層通過(guò)POST或者GET方式下發(fā)的PIN碼后,Web認(rèn)證代理模塊通過(guò)動(dòng)態(tài)庫(kù)提供的“驗(yàn)證口令接口”進(jìn)行代入認(rèn)證,如果PIN碼正確,而進(jìn)行指令為“讀取工號(hào)UID”的操作,當(dāng)讀取到KEY中的工號(hào)后,再根據(jù)POST或者GET接收到的Samba密碼進(jìn)行“Samba認(rèn)證”認(rèn)證,成功則認(rèn)證成功,LINUX操作系統(tǒng)客戶端直接將Samba用戶目錄掛載到本地,Windows操作系統(tǒng)客戶端直接打開(kāi)Samba用戶目錄。
以下結(jié)合如下流程圖(圖1)和具體實(shí)施例進(jìn)行詳細(xì)描述。
圖1 流程圖
通過(guò)后臺(tái)服務(wù)模塊的管理界面為后臺(tái)新建立一個(gè)驗(yàn)證本文的Samba用戶,界面輸入?yún)?shù)有用戶工號(hào)(UID)和密碼等。后臺(tái)服務(wù)模塊起輔助Web認(rèn)證代理模塊的作用。
后臺(tái)服務(wù)模塊內(nèi)部相當(dāng)于在操作系統(tǒng)中執(zhí)行如下操作,以下為后臺(tái)服務(wù)模塊在本專(zhuān)利中的簡(jiǎn)易操作步驟:
(1)我們建立一個(gè)工號(hào)(UID)為1008的用戶,密碼為test的驗(yàn)證用戶:
貴州省地處云貴高原,省內(nèi)河流數(shù)量多,分布廣,部分河流受氣候影響較大,有其優(yōu)異的地質(zhì)地形地貌為我國(guó)水利工程的開(kāi)發(fā)興建提供了優(yōu)越的地理?xiàng)l件。但是近年來(lái),貴州省受降雨氣候影響,接連出現(xiàn)大規(guī)模洪水洪澇災(zāi)害,為周?chē)骺h及下屬村鎮(zhèn)造成的巨大損失。2016年,貴州省省政府頒布了國(guó)發(fā)2號(hào)文件,針對(duì)貴州省水利工程建設(shè)施工問(wèn)題提出的相應(yīng)指導(dǎo)性建議和政策性方針,可以說(shuō)貴州省水利資源相關(guān)建設(shè),不僅具有地質(zhì)氣候和自然資源供給,更具有政府政策性保證[1]。
(2)建立分配給工號(hào)UID為1008的文件夾空間并限定只有1008可以使用。
(3)為Samba配置文件添加驗(yàn)證用戶“1008”的簡(jiǎn)易驗(yàn)證配置。
為Web認(rèn)證代理模塊加載第三方USBKey的“驅(qū)動(dòng)”、“動(dòng)態(tài)庫(kù)”和“客戶端接口”。Web認(rèn)證代理模塊支持所有標(biāo)準(zhǔn)key,此處選用的Key為通用標(biāo)準(zhǔn)key。以下為“Web認(rèn)證代理模塊”的初始化操作在本文的簡(jiǎn)易步驟:
(1)將第三方USBKey的驅(qū)動(dòng)配置文件拷貝到配置目錄下。
(2)將USBKey所帶動(dòng)態(tài)庫(kù)拷貝到庫(kù)目錄下并且保證智能卡服務(wù)運(yùn)行。
(3)將第三方USBKey “客戶端接口說(shuō)明”文檔中接口添加到Web認(rèn)證代理模塊中
從第三方USBKey的“客戶端接口說(shuō)明”文檔得出實(shí)現(xiàn)Web認(rèn)證代理模塊所需的最少接口有五個(gè):
1)打開(kāi)用戶終端證書(shū)載體設(shè)備接口
2)關(guān)閉用戶終端證書(shū)載體設(shè)備接口
3)驗(yàn)證口令接口
4)讀取用戶證書(shū)接口
5)獲取用戶身份信息接口
Web認(rèn)證代理模塊HTML表單驗(yàn)證函數(shù)模擬對(duì)外提供GET和POST兩種調(diào)用方式。以GET方式交互時(shí),請(qǐng)求數(shù)據(jù)位于URL中。以POST方式交互時(shí),請(qǐng)求數(shù)據(jù)由表單提交。
(1)定義HTML字符串常量模擬HTML表單提交
驗(yàn)證PIN碼
獲取用戶UID
(2)接收模擬HTML表單提交的數(shù)據(jù)
通過(guò)表單數(shù)據(jù)接收函數(shù),可以將通過(guò)HTML表單提交的GET和POST數(shù)據(jù)存儲(chǔ)到get_html_var函數(shù)的第三個(gè)參數(shù)中,將該參數(shù)代入到客戶端接口中,可完成:
首先執(zhí)行打開(kāi)設(shè)備函數(shù),并將PIN碼作為參數(shù)傳給它,如果PIN碼錯(cuò)誤,則結(jié)束驗(yàn)證,然后調(diào)用讀取用戶證書(shū)接口函數(shù),從用戶終端證書(shū)載體設(shè)備中讀取用戶證書(shū)或CA證書(shū),再調(diào)用獲取用戶身份信息接口,從而讀出用戶工號(hào)(UID),將用戶輸入的Samba用戶密碼和獲取到的用戶工號(hào)(UID)作為參數(shù)傳到Samba標(biāo)準(zhǔn)用戶名和密碼認(rèn)證的接口中,如果打開(kāi)Samba共享文件夾成功,則認(rèn)證成功,Linux操作系統(tǒng)客戶端直接將Samba用戶目錄掛載到本地,Windows操作系統(tǒng)客戶端直接打開(kāi)Samba用戶目錄。
針對(duì)傳統(tǒng)Samba安全性存在的弊端,提出了一種基于第三方Key的Samba身份認(rèn)證方法,可以為安全NAS存儲(chǔ)提供一定的參考價(jià)值。
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2022年8期