2012-06-07 20 views
6

Özet kimlik doğrulaması ile ilgili tüm iletileri okudum ve çalışıyorum ama herhangi bir sorunum var, özellestirme kimlik doğrulaması uygulanmış bir engelleme sahibim ve kimlik doğrulaması yapmaya çalıştığım bir javascript api ile. İlk olarak, xmlhttprequest POST sunucusuna xmlhttprequest POST dosyasını (dosyadan // // localhost: 8111'e kadar CORS sorunum var ama çözüldü), 401 ile sunucu yanıtını ve WWW-Authenticate üstbilgisini yapıyorum bununla:Javascript özet el ile kimlik doğrulaması

WWW-Authenticate:Digest realm="Guard", domain="/",  nonce="MTMzOTA5Mjk1NTE2NDo0NzY2NjJiOTgyMjE1ZDc0OWU3NzM5MTkzMWNjNGQzNw==", algorithm=MD5, qop="auth" 

yüzden bu başlığı almak ve kimlik doğrulama algoritması sindirmek geçerlidir: İlk 2 değişkenler, "cnonce" ve "nc" oluşturun: benim edebi nesnesinde oluşturmak

tokensObj["cnonce"] = 'bd5fd9b093dccaa1'; (invented) 
tokensObj["nc"] = '00000001'; 

'uri' parametresi (sunucu yanıtında bir "var" main ":?) 'domain' değerini alıp nesnemin 'uri' anahtarına koydum.

sonra, algoritma yapın:

var HA1 = MD5("login:Guard:mypassword"); 
var HA2 = MD5("POST:/"); 
var authResponse = MD5(HA1 + ':' + 

     unquotes(tokensObj["nonce"]) + 
     ':' + 
     tokensObj["nc"] + 
     ':' + 
     tokensObj["cnonce"] + 
     ':' + 
        unquotes(tokensObj["qop"]) + 
     ':' + 
     HA2); 
var responseContentHeader = 'Digest username:"login"' +', realm=' + tokensObj["realm"] + 
          ', nonce=' + tokensObj["nonce"] + 
          ', uri=' + tokensObj["domain"] + 
       ', algorithm=' + tokensObj["algorithm"] + 
       ', response="' + authResponse + '"' + 
       ', qop=' + unquotes(tokensObj["qop"]) + 
       ', nc=' + tokensObj["nc"] + 
       ', cnonce="' + tokensObj["cnonce"] + '"'; 

i setRequestHeader ("Yetki", responseContentHeader) yapmak; Sunucu tüm CORS başlıkları Tamam ayarlanır, yine 401 döndürür

Authorization:Digest username:"login", realm="Guard", nonce="7d0c753c2fb4cdc9480403547952f1", uri="/", algorithm=MD5, response="e9d8ad8f04e42672f2c21d70257c1072", qop=auth, nc=00000001, cnonce="bd5fd9b093dccaa1" 

Ama işler, bu yüzden sorun, sunucu kimlik doğrulaması değildir: Yani, sunucuya göndermek nihai başlığıdır Sindirim test edildi, Chrome ile giriş yapılıyor ve başlık Yetkilendiriliyor ki bu benimkiyle aynı (farklı bir şekilde farklıdır).

Birisi benim gitmem gereken bir şey gibi görünüyor mu? hata Teşekkür

cevap

3

oldu:

Authorization:Digest username="login", realm="Guard", nonce="7d0c753c2fb4cdc9480403547952f1", uri="/", algorithm=MD5, response="e9d8ad8f04e42672f2c21d70257c1072", qop=auth, nc=00000001, cnonce="bd5fd9b093dccaa1" 
İlgili konular