2012-06-07 8 views
6

Я прочитал все сообщения об аутентификации дайджеста, и я пытаюсь, но у меня есть какие-либо проблемы, у меня есть рестарт с аутентификацией дайджеста, а с помощью javascript api я пытаюсь выполнить аутентификацию.Проверка подлинности вручную Javascript

Во-первых, я делаю xmlhttprequest POST на сервере (из файла: // в localhost: 8111, поэтому у меня проблема CORS, но решена), ну, ответ сервера с 401 и с заголовком WWW-Authenticate с этим:

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

так я беру этот заголовок и применить аутентификации переваривать алгоритм: Сначала создайте 2 ВАР, «cnonce» и «пс»:

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

я создаю в моем буквального объекте Параметр «uri» (в ответе сервера есть «do main ":?) Я принимаю значение« domain »и помещаю в« uri »ключ моего объекта.

после, я сделать алгоритм:

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"] + '"'; 

и я сделать setRequestHeader ("Authorization", responseContentHeader); Таким образом, окончательный заголовок, отправить на сервер:

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

Но не работает, сервер снова возвращает 401, все заголовки CORS устанавливаются в порядке, так что это не проблема, аутентификация сервера дайджест протестирован, логин с Chrome и заголовок. Авторизация, которую он ставит, такая же, как у меня (obviusly nonce отличается).

Кому-то кажется, что я могу идти? Благодаря

ответ

3

Ошибка была:

Authorization:Digest username="login", realm="Guard", nonce="7d0c753c2fb4cdc9480403547952f1", uri="/", algorithm=MD5, response="e9d8ad8f04e42672f2c21d70257c1072", qop=auth, nc=00000001, cnonce="bd5fd9b093dccaa1" 
Смежные вопросы