leo todas las publicaciones sobre la autenticación de resumen y estoy intentando pero tengo algún problema, tengo un repositorio con la autenticación resumida implementada, y con una API javascript estoy tratando de autenticar.Javascript digest autenticación manual
Primero, hago la POST xmlhttprequest al servidor (desde el archivo: // al localhost: 8111 entonces tengo el problema CORS pero está resuelto), bueno, la respuesta del servidor con el 401 y con el encabezado WWW-Authenticate con esto:
WWW-Authenticate:Digest realm="Guard", domain="/", nonce="MTMzOTA5Mjk1NTE2NDo0NzY2NjJiOTgyMjE1ZDc0OWU3NzM5MTkzMWNjNGQzNw==", algorithm=MD5, qop="auth"
así que tomo esta cabecera y aplicar la autenticación algoritmo de resumen: primero, cree 2 VARs, "cnonce" y "NC":
tokensObj["cnonce"] = 'bd5fd9b093dccaa1'; (invented)
tokensObj["nc"] = '00000001';
i crear en mi objeto literal del parámetro 'uri' (en la respuesta del servidor hay un "do main ":?) tomo el valor de 'domain' y pongo la clave 'uri' de mi objeto.
después, hago el algoritmo:
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"] + '"';
y hago la setRequestHeader ("Autorización", responseContentHeader); Así, la cabecera final que enviar al servidor es:
Authorization:Digest username:"login", realm="Guard", nonce="7d0c753c2fb4cdc9480403547952f1", uri="/", algorithm=MD5, response="e9d8ad8f04e42672f2c21d70257c1072", qop=auth, nc=00000001, cnonce="bd5fd9b093dccaa1"
Pero no las obras, el servidor devuelve el 401 de nuevo, todos los encabezados CORS se fijan bien, por lo que no es el problema, el servidor de autenticación digest se prueba, inicie sesión con Chrome y la Autorización de encabezado que coloca es la misma que la mía (obviamente el nonce es diferente).
Alguien parece tener algo que pueda estar pasando? Gracias