2013-05-27 59 views
1

我在想,如果扭曲的Web服務器提供了限制訪問使用基於客戶端證書身份驗證的一些資源,並允許在沒有證書訪問其他資源的可能性特定資源。客戶端證書訪問使用雙絞線網絡服務器

我搜索低谷的問題,發現這個帖子:Client side SSL certificate for a specific web page

現在的問題是,如果有人知道,如果扭曲已經實現了SSL重新協商如何爲例會是什麼樣子。

或者已經有過不同的方法,因爲呢?


只是爲了把事情說清楚,並提供其他信息:

我真正想要實現的是這樣的:

  • 一個新的用戶訪問的網站,尚未批准訪問資源,因爲他沒有令牌可以查看該網站的令牌。
  • 因此,他被重定向到要求客戶端證書登錄資源。如果一切正確,則從證書中檢索的其他數據將存儲在會話中,這構成令牌。
  • 然後,他被重定向到入口網站,令牌驗證,並根據他的授權級別的具體內容顯示

如果我理解你正確的讓 - 保羅,這似乎是可能實現用你的策略吧? 糾正我,如果我失去了一些東西或做錯了。

回答

1

它似乎沒有我,SSL重新協商特別適用在這裏。你真正想要做的是授權基於提供的客戶端證書的請求。 SSL重新協商可能需要的唯一原因是您希望客戶端能夠通過單個持久HTTPS連接請求多個資源,併爲每個客戶端提供不同的客戶端證書。這不太可能是必需的(或者至少,需要這樣做的原因 - 而不僅僅是讓客戶端建立新的HTTPS連接,或者僅僅基於單個客戶端證書對所有資源進行授權 - 都是模糊的)。

授權在扭曲網絡是簡單的。許多人喜歡類似於功能的方法,其中服務器根據客戶端提供的憑證選擇資源對象。此資源對象可以完全控制其內容及其子級,因此通過選擇適合所提供憑據的資源對象,您可以完全控制可向哪些客戶端提供的內容。

你可以在web in 60 seconds serieshttp auth entry中閱讀關於twisted.web.guard的文章。

這將幫助您熟悉認證和授權的扭曲網絡的具體細節。但它不會告訴您如何基於SSL客戶端證書進行身份驗證或授權。

爲了做到這一點,你需要寫的東西類似HTTPAuthSessionWrapper - 但這種檢查客戶端SSL證書,而不是執行HTTP authenticationHTTPAuthSessionWrapper一樣。這將涉及執行:

  • IResource檢查在其上接收請求,以提取所述客戶端證書
  • 實現憑證鍵入表示X509證書
  • 實現憑證檢查器,可以認證所述傳輸您的用戶根據他們的X509證書
  • 並可能實現一個領域,它可以授權用戶(儘管您可能已經寫過,因爲它是hogonal的認證步驟,因此是可重複使用的,即使你不想與SSL證書認證)

此功能將是扭曲本身頗受歡迎,所以我敢肯定,你可以找到更多的幫助Twisted開發的IRC頻道(freenode上的#twisted-dev),我希望你能將任何你寫回的內容貢獻給Twisted!

+0

非常感謝Jean-Paul的建議。這是一個很好理解的描述。我已經找到了一個使用簡單的用戶名/密碼方法授予訪問權限的HTTPAuthSessionWrapper示例。但是,正如您所描繪的那樣,使用身份驗證和客戶端證書的示例非常罕見或者不存在。那就是爲什麼我問這裏是否有人會舉個例子。 感謝您的描述,我現在知道在哪裏挖掘更深:) – user2323407