OTP在實際專案中的整合

2021-07-23 20:44:34 字數 2227 閱讀 8627

提起動態令牌,大家都會想到認證伺服器,而這個認證伺服器又怎麼應用到實際的應用系統中呢?在這裡做乙個分析和說明,幫助廣大使用者能夠更好的使用otp動態令牌這種身份認證產品。

從前面otp原理部分中可以看出,伺服器端是在乙個範圍內計算出多個otp,然後檢驗客戶端硬體產生的otp口令是否在這個範圍內。那麼伺服器端只要能夠完成這樣的驗證就可以了。實際上所有廠家的otp認證伺服器都是建立在這個認證基礎上的。即認證介面是伺服器的本質和核心。

otp廠商提供的伺服器軟體無非就是在這個認證介面上增加其他的功能,如:資料庫表定義、令牌管理工具、

radius

支援、各種認證**外掛程式等,但最終都會歸到這個認證介面完成最終的認證。另外,在某些情況下,

otp廠商也會將認證伺服器軟體安裝到硬體伺服器上,將硬體裝置一同銷售給客戶。

從上面的分析可以看出,可以有

3種模式將

otp系統整合到應用系統中,即:核心介面開發模式、伺服器介面開發模式和伺服器**模式。下面就來說明一下它們的特點。

該模式是最為靈活,整合最為方便簡單,與應用最為緊密結合的模式。由於與關聯少,也是目前大型專案中常採用的模式(如:中國銀行,同花順**系統,上海**交易所等都是採用介面形式的開發)。該模式由otp廠商提供認證和同步兩個api介面供系統整合呼叫。介面不與資料庫連線,應用系統使用系統中原有的資料庫連線方式,將金鑰與調整值從資料取出帶入到介面中進行認證,認證成功後,將新的調整值寫回到資料庫中。資料庫中使用者儲存令牌資訊的資料表可以根據應用系統實際情況進行設計,方便靈活。

整合過程如下:

(1)在資料庫中增加一張用於儲存

otp動態令牌資訊的資料表。裡面至少儲存以下字段:「令牌號」(背面條形碼)、「金鑰」(

authkey

)、「成功值」(

currsucc

)、「漂移值」(

currdft

)。其中令牌號和金鑰都可以用字串形式,成功值和漂移值介面中要用到

uint64

(biginteger

)和int

型別。

(2)在系統的使用者表中增加乙個存「令牌號」的字段,儲存與使用者繫結的令牌號。

使用者在登入時,輸入使用者名稱和otp傳給伺服器端。伺服器通過使用者名稱到使用者表中得到「令牌號」,再通過這個「令牌號」到令牌表中得到「金鑰」,「成功值」和「漂移值」,帶入到介面中進行認證或同步,認證或同步成功後將返回的值寫回資料庫中儲存。認證或同步失敗時,不要將這兩個值寫回資料庫。

這種模式下,需要安裝otp廠商提供的伺服器軟體,安裝otp伺服器軟體的機器就是otp認證伺服器。可以在伺服器端呼叫伺服器介面,或者在web伺服器機器上呼叫**介面將otp整合到應用系統中。

伺服器介面是指應用系統直接呼叫這個介面,介面直接呼叫資料庫取得需要的資料,完成認證,如下所示:

otp傳給 讀/寫認證資訊

客戶端―――――>應用系統後台認證模組―>呼叫伺服器介面 <―――――――>資料庫

**介面是指通過認證**,認證**再將認證資訊傳給伺服器進行認證,如下所示:

otp傳給 讀/寫認證資訊

客戶端―――――>認證**介面->認證伺服器

<―――――――>資料庫

綜上,可以認為認證伺服器是在伺服器介面基礎上封裝好的有圖形操作介面的軟體。**介面是在使用到負載均衡時會採用的手段,乙個**會根據優先順序設定查詢多個認證伺服器,乙個伺服器也可以按照優先順序設定接收多個認證**的請求。堅石誠信的otp認證伺服器軟體採用了多種優化措施,以及多程序/多執行緒的高效處理,每秒鐘能夠完成3300次以上的認證。就目前實際情況而言,不超過千萬級別的使用者,都是沒有必要做負載均衡的。

在這種模式下,需要資料庫中按照otp廠商定義的表結構建立資料庫表,在呼叫介面中的api函式前,都需要先與資料庫進行連線。整合過程如下:

(1)安裝otp認證伺服器軟體,包括otp認證服務和otp管理工具。

(2)在otp管理工具中建立資料庫及符合otp廠商定義的資料庫表。

(3)在應用系統中呼叫伺服器介面api或者**介面api完成認證。

該模式主要是針對一些具體應用而設計,不需要進行api介面開發就可以完成整合。由於其關聯的東西較多,且軟體介面都會有otp廠商的標識,相對而言靈活性較差。這些具體應用一般包括:iis/apache**保護、vpn radius登入保護、windows登入保護、linux登入保護、citrix遠端登入保護、owa登入保護等。整合過程如下:

(1)安裝otp認證伺服器軟體,包括otp認證服務和otp管理工具。

(2)根據不同的應用,安裝對應的認證**安裝包。

(3)在應用中配置

otp認證保護。

關於cachedrowset在實際專案中的應用

由於專案需求原因,需要實現乙個功能就是,抽取大量的資料庫資料然後寫入文字並打包上傳。看似乙個很簡單的東西,在大資料量的環境下就顯得不是那麼簡單了。首先有60張左右的表需要進行資料的處理。各個公司情況不同,表的總資料量可能是幾千萬到幾十億不等。所以,耗時非常嚴重。由於只是單純的進行資料的提取加工寫入文...

元件在實際專案中的使用

元件在實際專案中的使用 自動封裝元件 封裝元件後元件間傳值 父傳子props 子傳父 emit 元件事件的呼叫 在父元件內 元件標籤新增ref 自定義名 this.refs.自定義元件名.子元件方法 元件插槽 套入資料或分開布局 slot的使用就像它的名字一樣,在元件內定義一塊空間,取名為slota...

在專案中整合測試

使用小規模測試降低風險 開發人員編寫 和缺陷 tdd是在專案中整合測試最簡便的方式 單元測試不是萬能藥 使用多種測試技巧 確定每個團隊成員在測試中的角色 測試人員稱職嗎 一流的測試人員具有足夠的創造力,編碼工作之前,就能評估系統的設計和架構 編寫 過程中,測試人員會設計和實現他們的測試元件 會衡量測...