好了試驗了一下之後,我發現resin正在調用我的AbstractAuthenticator實現「authenticate」方法,它需要一個HttpDigestCredentials對象而不是DigestCredentials(仍然不知道什麼時候是稱爲它們中的每一個)問題是HttpDigestCredentials沒有getDigest()方法,而是它有一個getResponse()方法,它不返回散列或至少不是可比較的方法。Caucho Resin Digest Authentication with CustomAuthenticator,有人請賜教
在創建我自己的[[user:realmassword] [nonce] [method:uri]]散列之後,這個散列非常不同,實際上我認爲getResponse()不會返回摘要,但可能是服務器對瀏覽器?
任何辦法,這是我的調試日誌:
USER:user:PASSWORD:password:REALM:resin:METHOD:GET:URI/appe/appe.html:NONCE:HsJzN+j+GQD:CNONCE:b1ad4fa1ba857cac88c202e64528bc0c:CLIENTDIGEST:[[email protected]:SERVERDIGEST:I4DkRCh21YG2Mk14iTe+hg==
,你可以看到這兩個假定客戶端隨機數是非常從服務器產生的隨機數很大的不同,實際上客戶端隨機數看起來並不像一個MD5哈希。
請問有人有此事嗎?在HttpDigestCredentials中是否有缺失?我知道摘要幾乎不被使用。
請問,我知道SSL,但我還沒有SSL證書,所以不要告訴我「你爲什麼不使用SSL」。 ;)
更新:
不知道是否是正確的事情,但是,當我讀到樹脂使用Base64格式的哈希值之前,所以我用的apache公地編解碼器1.6使用encodeBase64String()方法和現在哈希看起來很相似,但它們不一樣。
我都嘗試passwordDigest.getPasswordDigest(a1+':'+nonce+':'+a2); passwordDigest.getPasswordDigest(a1+':'+nonce+':'+ncount+':'+cnonce+':'+qop+':'+a2);
,其中沒有給出相同的散列從HttpDigestCredentials之一。