Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

HTTP Digest Authentication

Olá eu sei que não vimos no curso isso, mais surgiu a seguinte duvida, ao acessar um serviço com javascript :

class HttpService{
    static get(){
        return new Promise((resolve,reject)=>{
            let xhr = new XMLHttpRequest();
            xhr.open('get','http://localhost:82/server/index.php/api/example/users/id/3/format/json')
            xhr.onreadystatechange = () =>{
                if(xhr.readyState == 4){
                    if(xhr.status == 200){
                        resolve(xhr.responseText);
                    }else{
                        reject(xhr.responseText);
                    }
                }
            }
            xhr.send();
        })
    }
}

Aparece um Pop-up de Autenticação Necessária com usuário e senha eu informo o usuário e senha de autenticação do serviço e o mesmo me entrega o JSON perfeitamente, ao olhar meu Request Header me deparo com :

Authorization:Digest username="admin", realm="REST API", nonce="5a6bc4417eabd", uri="/server/index.php/api/example/users/id/3/format/json", response="1e1c03912ad8094c9ec4a133da2c708d", opaque="aba3d4b49c454e1974970e7b5514b001", qop=auth, nc=00000002, cnonce="3f66194d53028acd"
  • Gostaria de passar esse usuário e senha na minha request e não digitar no pop-up...tem como eu fazer isso ?

Grato !!

4 respostas

Fala ai Marcelo, tudo bem ?

Caso você tenha como pegar antes de alguma maneira seria bem interessante.

Ai você poderia colocar isso no corpo da requisição, mas como te disse ainda pouco é bem relativo.

Opa Matheus !

Consegui colocar no Head da requisição, porém isso só funciona com o Basic, quando o servidor usa Digest não consigo. :(

xhr.setRequestHeader('Authorization', 'Basic ' + btoa('usuario:senha'));

usando dessa forma acima se ele for Basic ele aceita meu usuário e senha, agora quando a autenticação é Digest ele usa alguma criptografia pelo o que eu entendi e não consigo acessa informando o usuário e senha.

Triste fim.

solução!

Puts

Será que não vale você mandar algum token da vida para fazer isso ?

Vou tentar algo do tipo.

Obrigado!!