天威產(chǎn)品那些年(二)用證書來進行身份認(rèn)證

前一篇介紹了證書系統(tǒng)和與系統(tǒng)的接口,那么有了接口證書如何在不同系統(tǒng)中使用是過去幾年公司重點在研究和探索的內(nèi)容,證書的應(yīng)用場景我之前也做過相應(yīng)的介紹,在這里詳細(xì)講解下使用證書進行身份認(rèn)證。

身份認(rèn)證的一般流程

使用口令認(rèn)證的流程是:用戶注冊,系統(tǒng)保存賬戶和密碼,用戶用注冊的名稱和密碼登錄,系統(tǒng)判斷登錄的賬戶和密碼是否正確,在系統(tǒng)中有那些權(quán)限,用戶登錄成功進入首頁。

使用證書認(rèn)證接口:后客戶端的步驟,瀏覽器加載插件,插件調(diào)取u盾接口獲取證書信息,通過js展現(xiàn)在頁面上,用戶選擇自己的證書點擊登錄輸入u盾pin碼,js將pin碼以及待簽名原文這里是服務(wù)的產(chǎn)生的隨機數(shù)通過session傳到前端,u盾通過pin碼獲取到密鑰使用權(quán)限對隨機數(shù)簽名返回插件,插件通過js調(diào)用返回服務(wù)端,這樣客戶端調(diào)用證書登錄過程完畢,接下來是服務(wù)端調(diào)用過程。

服務(wù)端驗證過程,服務(wù)端加載了證書驗證的接口包。在驗證流程中獲取從瀏覽器傳來的簽名結(jié)果,從session中獲取到本次登錄使用的隨機數(shù),然后進行證書簽名驗證,驗證過程包括簽名驗證,證書頒發(fā)機構(gòu)驗證,證書有效期驗證,證書是否吊銷驗證,驗證沒有問題后從簽名結(jié)果中獲取到證書,再解析證書主題得到存放在證書主題中的用戶信息,之后就可以通過與保存在系統(tǒng)中的權(quán)限信息進行匹配,假如匹配成功則返回成功用戶進入首頁。

在實踐中如何應(yīng)用

集成方式

接口集成

這種方式是產(chǎn)品最初期的形態(tài),也就是說每談一次新客戶,客戶有新系統(tǒng),就要與系統(tǒng)集成一次,然后收取一次集成費用以及接口費用,而且由于系統(tǒng)的語言以及開發(fā)人員的水平不同,實施難度不同。不像現(xiàn)在云平臺的興起,業(yè)務(wù)開發(fā)人員對api的理解越來越高。那時需要現(xiàn)場培訓(xùn)交流,甚至直接在業(yè)務(wù)系統(tǒng)里面嵌入代碼,雖然接口已經(jīng)封裝的足夠簡單。所以后來的思路一方面是接口文檔的規(guī)范化和demo的標(biāo)準(zhǔn)化,一方面是與流行業(yè)務(wù)系統(tǒng)的提前整合這樣證書功能就變成業(yè)務(wù)系統(tǒng)的一個功能模塊了。

接口預(yù)埋

與業(yè)務(wù)系統(tǒng)進行深度集成綁定是證書應(yīng)用的最好的方式,但是后期維護的成本也比較高,只要業(yè)務(wù)系統(tǒng)版本升級就需要不斷跟隨測試。比如和某oa系統(tǒng)集成,oa系統(tǒng)采用比較規(guī)范的mvc架構(gòu),在使用外部接口的時候,它首先會封裝出來一些接口出來,然后我們再去實現(xiàn)這些接口,如何調(diào)用這些接口,會參考我們的demo。這樣弄下來雙方都需要開發(fā),不過耦合度就比較高,對于戰(zhàn)略合作伙伴來說不失為一種好方式。

U盾集成

1.要檢查u盾的插入拔出狀態(tài),這樣可以防止u盾的擁有者不在電腦旁但u盾插入時被別人非法操作

2.u盾的管理,這里要能夠管理u盾的pin碼,當(dāng)密碼忘記時要安全的重置。

3.u盾的定制,定制主要看客戶的需求,比如外觀的選擇,logo的印刷,驅(qū)動定制等。有種特殊的情況是廠商的key已經(jīng)在機器上安裝過驅(qū)動了,假如再插入一個新的設(shè)備那么就會出現(xiàn)識別不出來或者個別功能失效的問題,這時就需要對驅(qū)動進行唯一化定制。

配置模式

以上兩種針對國內(nèi)的軟件是有效的因為都是自己開發(fā)的,針對國外的軟件比如微軟或者ibm的軟件或者一些硬件設(shè)備,由于沒法修改的,基本都是以配置為主。假如該軟件沒有證書認(rèn)證功能那就基本沒戲了,不過目前為止還沒有軟件是不支持的,下面介紹下通過配置方式來進行證書身份認(rèn)證:

微軟配置

微軟的官方文檔里面有講解如何進行智能卡域登錄的,它的后臺認(rèn)證協(xié)議采用自己的kebero協(xié)議,這里不對協(xié)議進行介紹,也不用它自己的ca進行配置,而是使用第三方ca來進行身份認(rèn)證。簡單說來只需要三步:

第一步導(dǎo)入ca的信任體系到域控制器的ca證書存儲相應(yīng)的位置,同時也要把信任體系產(chǎn)生的吊銷列表也導(dǎo)入;

第二步將信任體系導(dǎo)入要采用智能卡認(rèn)證的組策略中;

第三步打開組策略中的智能卡認(rèn)證方式同時進行下發(fā),之后刷新組策略注銷重新登錄就可以進行認(rèn)證了。該步驟也是經(jīng)過多次嘗試后才可以使用。其中需要注意的是證書主題項dn值要與域控中的組信息和個人信息匹配,否則由于找不到該用戶也會出現(xiàn)錯誤提示。

一般軟硬件配置

按照經(jīng)驗來看ibm的軟件、國外的設(shè)備如f5,web中間件如tomcat和apache,國內(nèi)的設(shè)備如vpn等都是采用文件或者界面配置的方式。

第一步是啟用ssl端口443或者8443,根據(jù)需要打開單向認(rèn)證或雙向認(rèn)證,單向意思是客戶端認(rèn)證服務(wù)端身份而雙向是客戶端和服務(wù)端雙方都要認(rèn)證對方身份。身份的標(biāo)識就是數(shù)字證書,下面就會配置服務(wù)器證書和客戶端證書。

第二步制作jks文件或keystore文件,這里主要是把證書信任鏈導(dǎo)入以及正確產(chǎn)生和導(dǎo)入服務(wù)器證書。這里不再詳述會在后續(xù)的文章中詳述。在配置文件或者界面中指定正確的文件后就可以重啟服務(wù)了。

第三步用戶權(quán)限配置,這里不同的設(shè)備是不一樣的,比如ibm的系統(tǒng)會有專門的服務(wù)將證書與個人賬戶信息綁定,而在國內(nèi)的vpn中會事先建立權(quán)限組進行之后再進行綁定。一些服務(wù)就要配合目錄服務(wù)來統(tǒng)一管理用戶權(quán)限了。

第四步在客戶端使用u盾重新登錄進行測試。在瀏覽器的效果是會彈出對話框選擇要登錄的證書,假如能夠彈出u盾中的個人證書選擇后進入系統(tǒng)顯示個人信息則整個部署過程就完成了。

結(jié)論

使用證書進行身份認(rèn)證,是一個不斷積累的過程,各軟件廠商在證書認(rèn)證這塊還沒有完全統(tǒng)一,各家在實現(xiàn)中也會多少有點差別,但是基本原理是一致的,只有不斷實踐和總結(jié),對于ca廠商來說才會擁有更好的服務(wù)口碑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容