我的項目一直在嘗試使用scrypt來實現憑證檢查器。我們嘗試過實施我們自己的憑證和檢查器對象,但是我們在使用pb時遇到了很多麻煩。應該如何支持twisted.pb中的備用憑證類型?
鉛似乎硬編碼爲使用過線,這絕對不會在我們的實施工作MD5哈希值;我們沒有辦法在服務器端以純文本的形式獲取正確的密碼,因爲我們使用的是scrypt,所以我們需要一種方式來傳輸密碼,以明文形式進行驗證。我們已經嘗試過使用twisted.cred.credentials.UsernamePassword和我們的憑證檢查器,但它似乎沒有將其傳送到服務器。 (我們仍然使用_PortalAuthChallenger)
在http://twistedmatrix.com/trac/ticket/4398的票證似乎表明需要一個PBServerFactory子類來支持pb中的自定義憑證檢查器,但到目前爲止,我已經完全無法弄清楚按順序覆蓋什麼以使其使用不同的ICredentials實施。是否有任何示例(甚至只是文檔)如何讓pb使用不同的憑證類?
看看_PortalRoot和例子,它看起來像IPBRoot實現不應該實際上被傳遞給PBServerFactory,而應該被註冊爲傳遞給PBServerFactory的適配器......這是正確的嗎? 此外,它看起來像[PBClientFactory的_cbResponse](http://twistedmatrix.com/trac/browser/trunk/twisted/spread/pb.py#L1107)被編碼以期望挑戰/挑戰者元組,並且[默認挑戰者](http://twistedmatrix.com/trac/browser/trunk/twisted/spread/pb.py#L1331)在pb中使用MD5;不需要改變? – codermonkeyfuel 2011-03-28 00:36:39
1:如果'x'提供'IFoo',IFoo(x)'將總是返回'x'。因此,如果您通過直接提供商,則無需註冊適配器。 2:如果你在身份驗證方面做了一些不同的服務器端,那麼你必須做一些不同的客戶端;你需要實現你自己的東西,就像PBClientFactory。 – Glyph 2011-03-28 01:12:55