使用一次性密碼解決方案更安全地驗證身份_第1頁
使用一次性密碼解決方案更安全地驗證身份_第2頁
使用一次性密碼解決方案更安全地驗證身份_第3頁
使用一次性密碼解決方案更安全地驗證身份_第4頁
使用一次性密碼解決方案更安全地驗證身份_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、目錄 HYPERLINK /fc/editor/fckeditor.html?InstanceName=spBlogText&v=3.3&Toolbar=Default&v=3.1.html l S1 一次性密碼 HYPERLINK /fc/editor/fckeditor.html?InstanceName=spBlogText&v=3.3&Toolbar=Default&v=3.1.html l S2 完整的 OTP 解決方案 HYPERLINK /fc/editor/fckeditor.html?InstanceName=spBlogText&v=3.3&Toolbar=Default&

2、v=3.1.html l S3 測試 OTP 生成器客戶端 HYPERLINK /fc/editor/fckeditor.html?InstanceName=spBlogText&v=3.3&Toolbar=Default&v=3.1.html l S4 示例網(wǎng)站 HYPERLINK /fc/editor/fckeditor.html?InstanceName=spBlogText&v=3.3&Toolbar=Default&v=3.1.html l S5 身份驗證 Web 服務(wù) HYPERLINK /fc/editor/fckeditor.html?InstanceName=spBlogTe

3、xt&v=3.3&Toolbar=Default&v=3.1.html l S6 完整的體系結(jié)構(gòu) HYPERLINK /fc/editor/fckeditor.html?InstanceName=spBlogText&v=3.3&Toolbar=Default&v=3.1.html l S7 運行代碼示例 HYPERLINK /fc/editor/fckeditor.html?InstanceName=spBlogText&v=3.3&Toolbar=Default&v=3.1.html l S8 部署注意事項 HYPERLINK /fc/editor/fckeditor.html?Insta

4、nceName=spBlogText&v=3.3&Toolbar=Default&v=3.1.html l S9 嘗試一下密碼的安全和管理是令企業(yè) IT 管理員 非常頭疼的一個問題。用戶往往創(chuàng)建非常簡單的密碼,或?qū)⑵涿艽a寫下來以確保他們能夠記住這些密碼。此外,幾乎沒有安全有效的程序來重置密碼。既然存在這些限制,如何才能在遠程用戶訪問您的網(wǎng)絡(luò)時減少此類安全問題呢?由于許多用戶都會寫下他們的密碼,如何才能使公司的密碼解決方案更加可靠呢?我將介紹如何使用基于標準的技術(shù)以及 C# 和 C 來開發(fā)一次性密碼 (OTP) 概念驗證。但是,我想先大致介紹一下密碼替代技術(shù)。有多種方法可用于消除遠程用戶的標準密

5、碼??墒褂米C書頒發(fā)機構(gòu)來向用戶頒發(fā)證書,但這需要公鑰基礎(chǔ)結(jié)構(gòu) (PKI),并且其設(shè)置和維護成本比較昂貴。同時還難于管理遠程用戶的證書,尤其是使用基于硬件的令牌(如智能卡)時。此類高安全性常常導(dǎo)致高成本。另外,可使用 RSA 提供的一次性密碼解決方案 SecureID。但是,應(yīng)當注意 SecureID 并非基于標準的技術(shù),因此它可能導(dǎo)致不兼容問題和授權(quán)開銷。第三種選擇是使用基于標準的 OTP 解決方案。但是,它有些什么類型的一次性密碼選項,為什么 OTP 優(yōu)于傳統(tǒng)的密碼?我們這就來研究一下。一次性密碼傳統(tǒng)的靜態(tài)密碼通常只在需要時才進行更改:當它過期時或者當用戶忘記密碼并需要重置時。由于密碼緩存在

6、計算機硬盤上并存儲在服務(wù)器上,因此它們很容易被破解。便攜式計算機尤其如此,因為它們?nèi)菀妆槐I。許多企業(yè)都為員工配備了便攜式計算機,并將網(wǎng)絡(luò)打開以允許遠程訪問。他們還會雇用臨時員工和供應(yīng)商。在此環(huán)境中,簡單的靜態(tài)密碼解決方案可能成為一種不利因素。與靜態(tài)密碼不同,一次性密碼會在用戶每次登錄時發(fā)生更改。密碼有以下兩種生成方式:與時間同步或與計數(shù)器同步。兩種方法通常都要求用戶攜帶一個與服務(wù)器同步的小型硬件設(shè)備(通常可以掛在鑰匙鏈上),并且通常都使用一些算法來生成密碼。與時間同步的 OTP 已得到廣泛部署,但可能出現(xiàn)時鐘偏差問題。即,如果身份驗證服務(wù)器和用戶令牌的時間不同,則無法生成預(yù)期的 OTP 值,并

7、且用戶身份驗證將失敗。使用與時間同步的 OTP 時,用戶通常必須在特定時間段內(nèi)輸入該密碼,否則會將其視為過期且必須生成另一密碼。與計數(shù)器同步的 OTP 解決方案將同步客戶端設(shè)備與服務(wù)器之間的計數(shù)器。每次請求設(shè)備的 OTP 值時,計數(shù)器都會增加。就像使用與時間同步的 OTP 一樣,當用戶想要登錄時,他必須輸入設(shè)備上當前顯示的 OTP。用于應(yīng)對復(fù)雜情況的 OTP 是一種特殊情況,它們通常還會使用硬件設(shè)備。但是,用戶必須提供一個已知值(如個人標識號 (PIN))才能生成 OTP。此類 OTP 目前正在歐洲廣泛應(yīng)用,用于為信用卡和借記卡增加身份驗證。目前使用的 OTP 解決方案均建立在某種加密處理之上

8、,以根據(jù)同步參數(shù)(即時間或計數(shù)器值)、密鑰以及可能需要的 PIN 生成當前密碼。例如,基于哈希的 OTP 使用加密哈希算法來計算密碼。如您所知,加密哈希是一種單向函數(shù),即將任意長度的消息映射為固定長度的摘要。因此,基于哈希的 OTP 首先進行輸入(同步參數(shù)、密鑰、PIN),然后通過單向函數(shù)運行它們,并且生成固定長度的密碼。那么,究竟應(yīng)選擇哪種方法呢?由于希望了解其工作原理,因此我創(chuàng)建并測試了一個解決方案。接下來,我將介紹如何使用 IIS 7.0 和密鑰哈希消息身份驗證來創(chuàng)建與計數(shù)器同步的 OTP(如 RFC 2104 和 RFC 4426 標準所述。其中 RFC 2104 是“HMAC:鍵入-

9、散列法用于信息身份驗證”,網(wǎng)址是 ;而 RFC 4226 是“HOTP:基于 HMAC 的一次性密碼算法”,網(wǎng)址是 )。因為是測試部署,我將使用簡單的客戶端應(yīng)用程序來創(chuàng)建 OTP。如前所述,在實際情況中,您可能希望將其與防篡改硬件設(shè)備結(jié)合使用。我將大致介紹使用這種方法所需的基礎(chǔ)知識,并提供一些入門資源。完整的 OTP 解決方案為構(gòu)建 OTP 解決方案,我需要創(chuàng)建一個基于標準的 OTP 身份驗證 Web 服務(wù),該服務(wù)由 SQL Server 提供支持且集成到 ASP.NET 中。我將創(chuàng)建一個 OTP 生成器,通過將其安裝到每臺客戶端計算機上,用戶就可運行它來生成新的 OTP。當收到 Web 瀏覽

10、器提示時,用戶需要鍵入 OTP 值并單擊“Submit”(提交)按鈕進行身份驗證。OTP 插件模塊從 IIS 得到通知,并且隨后調(diào)用 Web 服務(wù)來檢驗身份驗證請求。Web 服務(wù)在 SQL Server 表中查找用戶的密鑰和計數(shù)器值、檢驗 OTP 計算,并響應(yīng)身份驗證為成功還是失敗。圖 1 顯示了示例解決方案的體系結(jié)構(gòu)。請記?。涸谏a(chǎn)環(huán)境中,應(yīng)通過在客戶端和服務(wù)器之間配置信任關(guān)系以及限制無效的登錄嘗試等方法,進一步強化此體系結(jié)構(gòu)來杜絕拒絕服務(wù) (DoS) 攻擊。圖 1 一次性密碼解決方案組件 本文附帶的示例代碼(位于MSDN 雜志網(wǎng)站的下載區(qū))包含一個 Visual Studio 2005 解

11、決方案,其中有用于生成 OTP 的一個 C+ DLL (HmacOtpDll)。由于該 DLL 供 OtpClient 和 Web 服務(wù)使用,我將其放在 system32 文件夾中。(我使用生成后事件來將其自動復(fù)制到該位置。)此示例還包含一個名為 OtpClient 的控制臺應(yīng)用程序,可用它來生成 OTP 值。OtpClient 使用 XML 文件來存儲加密代碼和計數(shù)器。每次重建應(yīng)用程序時,它都會將 XML 從項目根目錄復(fù)制到目標目錄,從而將計數(shù)器重置為 0。名為 IIS7Module 的 IIS 模塊提供了 OTP 身份驗證服務(wù),并且該模塊使用一個名為 WebService 的 Web 服務(wù)

12、來檢驗 OTP 值。該 Web 服務(wù)包含一個位于 App_Data 中的 SQL Server Express 數(shù)據(jù)庫。最后,我在 TestWebsite 項目中包括了用于測試該解決方案的網(wǎng)頁。測試 OTP 生成器客戶端測試 OTP 生成器客戶端應(yīng)用程序是一個獨立的工具,它允許用戶獲取 OTP 身份驗證值。它免除了在實際部署中通常必需的硬件設(shè)備和挑戰(zhàn)(如 PIN 請求)。為計算 OTP,該客戶端組件使用與身份驗證 Web 服務(wù)共享的 DLL。在本示例應(yīng)用程序中,用戶將運行此工具來創(chuàng)建下一個 OTP,然后將該值手動鍵入到 Web 瀏覽器的表格中。我將使用 C# 和一些 C 來完成所有工作。(我選

13、擇使用 C 來實現(xiàn)底層 OTP 加密。)您已了解 OTP 在用戶級別的工作原理,但此解決方案是如何在功能級別上工作的呢?這個基于哈希的 OTP 解決方案有兩個輸入值:密鑰和計數(shù)。但是,OTP 解決方案還具有與實現(xiàn)程序相關(guān)的元數(shù)據(jù),包括執(zhí)行身份驗證時用戶必須鍵入的密鑰的長度和預(yù)期 OTP 值的長度。我的示例程序?qū)⑸砷L度為六個字符的 OTP,并且可支持最多八個字符。為簡單起見,該實現(xiàn)使用將密鑰長度限制為 64 個字節(jié)的一些固定長度緩沖區(qū)。但是,假設(shè)密鑰是密碼學(xué)角度上的高質(zhì)量隨機數(shù)字,則會需要巨大的密鑰空間。此類密鑰將不會成為生產(chǎn)部署中的脆弱環(huán)節(jié)。(目前隨機密鑰通常為 256 位,即 32 字節(jié)。

14、)特定用戶(或從技術(shù)角度講,具有特定密鑰)每次進行身份驗證嘗試時,計數(shù)值都會增加。OTP 解決方案的安全性依賴于永不重復(fù)使用的計數(shù)值;這一點由 OTP 服務(wù)器保證。實際使用時,計數(shù)是 64 位無符號整數(shù)。如前所述,另一種部署方法是使用與服務(wù)器之間的時間同步。密鑰哈希消息身份驗證代碼 (HMAC) 是基于密鑰的一種加密哈希?;驌Q句話說,HMAC 接受任意消息和密鑰,并將消息映射成固定長度的摘要值(如 20 字節(jié)),從而確保只有具有相同密鑰的人才能從相同的消息生成相同的摘要值。HMAC-OTP 的首個計算步驟是接受計數(shù)值,并將其編碼為 HMAC 計算的輸入消息。實際使用時,消息是設(shè)為計數(shù)器值的 8

15、 字節(jié)緩沖區(qū)。圖 2 描述了這一步驟以及接下來的兩個步驟。下一計算步驟是使用用戶密鑰計算上述消息的 HMAC。請注意,我在該實現(xiàn)中對字節(jié)順序進行了編址以確保它與 RFC 兼容。圖 2 一次性密碼流程 (單擊該圖像獲得較大視圖)隨后,通過對 20 字節(jié)的 HMAC 結(jié)果進行十進制編碼,從而將此結(jié)果轉(zhuǎn)換為 OTP 值。其中包含兩個實踐要求:第一,我需要保留盡可能多的 HMAC 計算位,最多為 OTP 結(jié)果的長度(在本例中為六位數(shù)),因為丟失位會把計算暴露給加密攻擊。第二,我需要創(chuàng)建與盡可能多的輸入設(shè)備類型兼容的 OTP。這一兼容要求正是我采用十進制編碼的原因所在。(這種強身份驗證實現(xiàn)甚至與撥號式電

16、話兼容?。┦纠W(wǎng)站我的目標是確保所設(shè)計的站點能正確地顯示用戶是否使用 OTP 實現(xiàn)成功登錄。為便于測試,此 OTP 解決方案包含一個示例網(wǎng)站。該網(wǎng)站的首頁是 Default.htm,此登錄頁面用于向通過身份驗證的用戶展示 OTP 模塊如何保護非 ASP.NET 頁面。其中還包含用于顯示當前已通過身份驗證的用戶名的 Test.aspx 文件,以及顯示 Test.aspx 頁面如何從 System.Web.UI.Page.User 屬性檢索已通過身份驗證的用戶名的 Test.aspx.cs 文件。該解決方案還包括一個 web.config 文件(其中包含對 OtpModule 的引用)以及引用了

17、IISModule.dll 文件的 Visual Studio 項目解決方案。IIS HTTP OTP 插件模塊是該網(wǎng)站的一個組件。該模塊與 IIS 交互,并將用戶重定向到可在其中輸入用戶名和 OTP 的 Web 窗體。當用戶提交用戶名和 OTP 時,該模塊會檢驗輸入并將用戶重定向到相應(yīng)的成功或失敗頁面。該模塊還會將用戶的身份驗證狀態(tài)與用戶會話關(guān)聯(lián)起來。為實現(xiàn)可維護性和可支持性,我希望能夠?qū)υ撃K進行管理,因此我使用 C# 來編寫該模塊。插件模塊是身份驗證 Web 服務(wù)(稍后我將進行介紹)的客戶端。OTP 模塊實現(xiàn)了 IHttpModule 接口。實際上,該模塊非常簡單,僅包括三個公共方法。第

18、一個是 Init,如下所示:復(fù)制代碼 public void Init(HttpApplication application) application.BeginRequest += new EventHandler(application_BeginRequest);如您所見,該模塊使用此方法來注冊 BeginRequest 處理程序 application_BeginRequest。OTP BeginRequest 處理程序的目的是確保所有 HTTP 請求均來自通過身份驗證的用戶。具體實現(xiàn)方式為使用以下幾個幫助函數(shù):一個函數(shù)用于確定調(diào)用方是否已通過身份驗證,還有幾個函數(shù)用于在調(diào)用方尚未通

19、過身份驗證時對其執(zhí)行身份驗證。還有一點值得一提:在 BeginRequest 事件過程中截取請求的方式不會遵循 ASP.NET 應(yīng)用程序所使用的標準身份驗證模式。但是,如果不希望其他模塊看到此請求(甚至是那些設(shè)計為在進行身份驗證之前截取請求的模塊),則建議使用此方法。IsAuthenticated 幫助函數(shù)將確定請求是否指明需要一個已通過身份驗證的用戶。實現(xiàn)方法是:使用 System.Web 命名空間中的 HttpContext、HttpCookie 和 Security.FormsAuthenticationTicket 類來檢查應(yīng)用程序上下文中是否包含正確加密的身份驗證 cookie。如果

20、存在 cookie 并且能夠正確解密,則認為調(diào)用方已通過身份驗證。否則,存在以下兩種可能的狀態(tài):該請求是應(yīng)處理的 OTP 身份驗證請求,或者該 Web 客戶端請求無效(未通過身份驗證),這時會顯示登錄窗體。OTP 模塊包括一個名為 LoginPage.htm 的內(nèi)置登錄窗體。它由以下五個 HTML 元素組成:一個初始為空的錯誤消息字段,一個用戶名字段、一個密碼字段、一個提交按鈕以及一個名為 hdLoginForm 的隱藏輸入字段。如果調(diào)用方已通過身份驗證,則模塊無需執(zhí)行進一步操作。繼續(xù)處理請求。在本演示中,將加載 Default.htm 頁面。如果調(diào)用方未通過身份驗證,則會調(diào)用 IsAuthe

21、nticationPost 幫助函數(shù)。它將檢查請求類型是否為 POST,以及請求窗體是否包含 hdLoginForm 輸入字段。如果兩個條件都得到確認,則此方法將返回 true。如果請求是身份驗證請求,則調(diào)用 TryAuthenticate 幫助函數(shù)。從請求上下文中檢索用戶名和 OTP 值,并將其傳遞給身份驗證 Web 服務(wù)的 VerifyOtpCode 方法。如果確認成功,則會將新的加密身份驗證 cookie 附加到響應(yīng)中。然后,將該響應(yīng)重定向到默認頁面 (Default.htm)。要演示這一效果,可先保存用戶請求的原始頁面,并在身份驗證成功之后將用戶重定向到該頁面。如果 VerifyOtp

22、Code Web 服務(wù)調(diào)用失敗,請求將被重定向回登錄窗體(此時將顯示一個錯誤消息),并且調(diào)用幫助函數(shù) ShowLoginForm。此幫助函數(shù)從模塊的資源部分加載登錄頁面、設(shè)置頁面中的錯誤消息字符串(如果適用),并將登錄頁面設(shè)為對當前請求的響應(yīng)。然后,它將請求標記為已完成(無論請求的性質(zhì)如何都會完成這一步)。身份驗證 Web 服務(wù)身份驗證 Web 服務(wù)負責執(zhí)行實際的 OTP 身份驗證,其方法是確定提供的 OTP 值是否表明命名用戶已擁有密鑰,。由于重用底層加密庫(此加密庫實現(xiàn)了在之前的有關(guān)測試 OTP 生成器客戶端的章節(jié)中所介紹的 OTP 計算),實現(xiàn) OTP 身份驗證 Web 服務(wù)將非常簡單。

23、該重用形式為對本機 HmacOtpDll.dll 的 GenerateOTP 導(dǎo)出的 P/Invoke 調(diào)用。Web 服務(wù)提供一個 Web 方法 VerifyOtpCode(在身份驗證成功時它將返回 true)。該方法首先加載與身份驗證請求中指定的用戶名相對應(yīng)的 SQL Server 數(shù)據(jù)庫行。如果 SQL Server 無法找到匹配行,該方法將返回 false。如果在 SQL Server 數(shù)據(jù)庫中找到相應(yīng)用戶名,該方法將把以下數(shù)據(jù)項傳給本機 GenerateOTP:請求中指定的 OTP 值、用戶密鑰(從 SQL Server 中檢索得到)以及計數(shù)器值(也從 SQL Server 中檢索得到

24、)。GenerateOTP 將使用連續(xù)的計數(shù)器值進行反復(fù)嘗試,直到返回匹配的 OTP 值或者已檢查過 1,000 個連續(xù)的計數(shù)器值。盡管不太可能從上次成功身份驗證后重復(fù)嘗試一千次,但它可能使用戶意外將客戶端計數(shù)器運行至脫機!通過縮小此范圍,還可使攻擊者實際猜測的 OTP 值與序列中的值恰好相等的機率更低,但它會增加用戶意外將客戶端計數(shù)器運行至超出服務(wù)器允許范圍的可能性。在后一種情況下,需要請求管理員介入才能使用戶能夠再次進行身份驗證。如果在計數(shù)器范圍內(nèi)找到匹配的 OTP 值,則將把新的計數(shù)器值寫回數(shù)據(jù)庫。然而遺憾的是,這需要身份驗證 Web 服務(wù)具有數(shù)據(jù)庫的寫入權(quán)限,并且如前所述,由于必須確保

25、計數(shù)器值不發(fā)生重用,因此它對于 OTP 的安全性而言也至關(guān)重要。(為使一次性密碼唯一,必須保證它實際僅被使用一次。)具有簡單架構(gòu)的 SQL Server 數(shù)據(jù)庫可用于存儲用戶名及對應(yīng)的 OTP 密鑰或種子值。還可擴展該構(gòu)架以包含登錄信息(如使用 OTP 成功登錄和不成功登錄的次數(shù)和時間)。該數(shù)據(jù)庫由 Username、SecretCode 和 Counter 列組成。有關(guān)每個元素的解釋,請參閱“身份驗證 Web 服務(wù)”一節(jié)。示例代碼附帶的數(shù)據(jù)庫副本僅包含一個存儲用戶名“testuser”的行。完整的體系結(jié)構(gòu)圖 3 顯示了解決方案完成時的體系結(jié)構(gòu)。如圖所示,用戶啟動客戶端應(yīng)用程序、生成 OTP、

26、然后導(dǎo)航至身份驗證 Web 應(yīng)用程序,并將 OTP 粘貼到 Web 瀏覽器窗體中。當 OTP 模塊檢測到請求尚未通過身份驗證時,它將生成窗體。當用戶單擊“Submit”(提交)時,Web 瀏覽器窗體將把請求發(fā)送到服務(wù)器(在其中它將被 OTP 模塊再次截?。?。接下來,OTP 模塊調(diào)用 OTP Web 服務(wù)來檢驗用戶的身份驗證數(shù)據(jù)。最后,如果成功,Web 服務(wù)器將針對請求頁面(此頁面可為任意類型:HTML、ASP.NET、PHP 等)調(diào)用處理程序。圖 3 詳細的 OTP 解決方案體系結(jié)構(gòu) (單擊該圖像獲得較大視圖)運行代碼示例要運行代碼示例,需要具有 IIS 7.0 的 Windows Vista

27、 或 Windows Server 2008 (并且針對 Windows Server 2008 啟用“應(yīng)用程序服務(wù)器”角色)、Visual Studio 2005、SQL Server 2005 或 SQL Server Express 以及 OTP 示例代碼。要實驗演示,建議使用 Windows Server 2008 和 SQL Server Express(因為我就使用的它們)。在下面的說明中,假設(shè) OTP 示例代碼解決方案文件位于 C:TestOTPOtp.sln。要準備環(huán)境,使用“IIS 管理器”或通過編輯 web.config 文件來安裝 IIS 模塊。向 IIS_IUSRS 帳

28、戶或配置為自定義應(yīng)用程序池標識的帳戶授予對 C:TestOTPwebserviceapp_data 的讀寫權(quán)限。然后,為 OtpTest 和 OtpService 添加網(wǎng)站。使用 web.config 文件注冊 IIS 模塊(此步驟已在示例中完成 請參閱 TestWebsiteWeb.Config)需要以下配置標記:復(fù)制代碼 modules 還應(yīng)將模塊 DLL 添加到 bin 文件夾或全局程序集緩存 (GAC) 中。要向 GAC 注冊 OTP 模塊,請使用如下所示命令:復(fù)制代碼 gacutil.exe /i iis7module.dll要使用“IIS 管理器”,請打開此管理器并在控制臺樹中單擊

29、計算機名稱。在中間窗格中,雙擊“Modules”(模塊)圖標,然后單擊操作窗格中的“Add Managed Module”(添加托管模塊)。接下來,從下拉列表框中選擇 OtpModule。如果將 DLL 放入 GAC 中并使用“IIS 管理器”來添加模塊,則可能需要重啟 IIS 才能刷新模塊列表。為正確增加 SQL Server Express 中的嘗試次數(shù)值,NETWORK SERVICE 帳戶需要具有對 C:TestOtpWebServiceApp_Data 庫的讀寫權(quán)限。此對象所需權(quán)限是讀取和執(zhí)行、列出文件夾內(nèi)容、讀取以及寫入(如圖 4 所示)。圖 4 所需的對 App_Data 目錄的

30、權(quán)限 還必須在 IIS 中為測試網(wǎng)站設(shè)置一個網(wǎng)站。為此,打開“IIS 管理器”控制臺,并在其控制臺樹中,展開具有您的計算機名稱的節(jié)點,右鍵單擊“Sites”(網(wǎng)站)并單擊“Add Web Site”(添加網(wǎng)站)。將以下設(shè)置用于新網(wǎng)站,然后單擊“OK”(確定)(圖 5 顯示了這些設(shè)置):圖 5 OtpTest 網(wǎng)站設(shè)置 (單擊該圖像獲得較大視圖)“Site name”(網(wǎng)站名稱):OtpTest “Physical path”(物理路徑):C:testOtpTestWebsite “Port”(端口):8000 還必須為 Web 服務(wù)創(chuàng)建一個網(wǎng)站。將以下設(shè)置用于該網(wǎng)站:網(wǎng)站名稱為 OtpServ

31、ice,物理路徑為 C:TestOtpWebService,并且端口為 8080。接下來,在 Visual Studio 中打開 Otp.sln 解決方案,在解決方案資源管理器中展開 IIS7Module,展開“Web References”(Web 引用)、右鍵單擊 OtpService,單擊“Properties”(屬性)并確認“Web Reference URL”(Web 引用 URL)已設(shè)為 http:/localhost:8080/service.asmx。在“Build”(生成)菜單中,單擊“Build Solution”(生成解決方案)并確認沒有發(fā)生生成錯誤。現(xiàn)在,應(yīng)執(zhí)行測試來確

32、保已適當注冊并正確加載 OTP 模塊。為此,導(dǎo)航到 http:/localhost:8000 并確認出現(xiàn)圖 6 所示的登錄頁面。要測試實現(xiàn),鍵入測試用戶名 testuser。圖 6 測試網(wǎng)站的首頁 要獲得 OTP 代碼文本框的值,以管理員身份打開命令提示符窗口并導(dǎo)航到 OTP 客戶端程序的生成目錄 (C:TestOtpotpclientbindebug)。運行 OtpClient.exe 獲得下一 OTP 值。結(jié)果應(yīng)如圖 7 所示。圖 7 運行 OtpClient.exe 以獲得 OTP 值 (單擊該圖像獲得較大視圖)將 OTP 值鍵入 OTP 代碼文本框,然后單擊“Submit”(提交)。圖

33、 8 在頁面中顯示了示例 OTP 代碼。如果身份驗證成功,您會轉(zhuǎn)到 Default.htm 頁面。圖 8 具有示例 OTP 值的測試頁面 單擊默認頁面上的 Text.aspx 鏈接進入演示頁面,該頁面將顯示當前通過身份驗證的用戶(如果有)的名稱。如果身份驗證憑據(jù)不正確,則會出現(xiàn)圖 9 所示的頁面。圖 9 身份驗證不成功 部署注意事項如果要在實際環(huán)境中部署此示例解決方案,有許多需要考慮的事項。實際部署將用戶密鑰/種子存儲在防篡改的設(shè)備中(如硬件令牌)。建議將解決方案修改為在多次連續(xù)失敗的身份驗證嘗試后鎖定帳戶??赏ㄟ^將多個 SQL Server 列和一個功能添加到 Web 服務(wù)來實現(xiàn)此功能。如果互

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論