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

Acessar o token e inserir no cabeçalho da requisição com Fetch API

Gostaria de saber qual seria a melhor estratégia para ter acesso ao token jwt e inserir no cabeçalho de uma requisição feita com a Fetch API, considerando o uso das Claims.

Desde já, agradeço.

Flw!

3 respostas

Mateus, não sei se entendi bem sua dúvida sobre Fetch API.

Sobre Claims, você insere quantas claims quiser no token. Basta determinar isso antes da geração do mesmo.

Daí você pode retornar o token no cabeçalho da resposta de autenticação. A partir daí você pode recuperá-lo através do cabeçalho do HttpClient e usar em outras requisições se quiser.

Estou sem acesso ao código no momento, mas se precisar posso colocar aqui exemplos de código para as situações dos dois parágrafos acima.

Aguardo sua resposta.

Pronto, vou tentar explicar melhor. Atualmente o código abaixo está sendo usado para inserir o _token nas requisições feitas após a autenticação.

private void AddBearerToken()
        {
            var token = _acessor.HttpContext.User.Claims.First(c => c.Type == "Token").Value;
            _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
        }

Caso eu queira consumir a api sem o uso da implementação do "LivroApiClient.cs", ou seja, usando a fetch api. Ex:

fetch('http://localhost:6000/api/v1.0/posts/1', {
    method: 'GET',
    headers: {
        'Authorization': 'Bearer ' + _token; // 
    }
})
.then(function(response) {
    console.log(response);
}).catch(function (response) {
    console.log(response);
});

Minhas perguntas são:

1º Qual seria a melhor e mais segura estratégia para preencher a variável "_token"?

2º Seria correto(seguro) recupera-lo diretamente, já que ele foi inserido no cookie anteriormente. segue exemplo.

const _token = document.cookie; 

3º Comprometeria a segurança caso eu expusesse o método "AddBearerToken()" a um endpoint [AllowAnonymous], http://localhost:6000/api/v1.0/token por exemplo, para posteriormente preencher a variável _token acessando esse point. Pensei nisso considerando que ele é visível aos usuários que tiverem acesso ao cookei pelas ferramentas do navegador, como vc mesmo fez em determinada aula.

Entendo que foge um pouco do assunto, por isso desde já, agradeço.

Flw!

solução!

Mateus, bom dia. Não tenho experiência com a Fetch API e JWTs, então não consigo te dar uma resposta referente a estratégias seguras para lidar com o token JWT no navegador.

Imagino que também irá fazer o login da aplicação no navegador e é nesse momento que precisará armazenar o token para futuras requisições à API de livros ou outra qualquer.

Encontrei um artigo interessante que discute as vantagens e desvantagens do armazenamento do JWT via Web Storage (sessionStorage/localStorage) ou Cookies. Espero que possa ajudá-lo.

Abraços!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software