Enviando token JWT nos cabeçalhos com o Postman


169

Estou testando uma implementação de segurança baseada em token JWT, com base no artigo a seguir . Recebi com sucesso um token do servidor de teste. Não consigo descobrir como o programa Chrome POSTMAN REST Client envia o token no cabeçalho.

screenshot carteiro

Minhas perguntas são as seguintes:

1) Estou usando o nome do cabeçalho certo e / ou a interface POSTMAN?

2) Preciso basear 64 codificar o token? Eu pensei que poderia apenas enviar o token de volta.


Olá, onde posso ver no POSTMAN o token jwt que recebi?
Usr

1
@MLondei, depende da maneira como o servidor de recebimento está configurado. Ele pode retornar como um URL (localizá-lo na cadeia de URL) ou no corpo da resposta (localizá-lo no campo do corpo da resposta). Esses são os dois principais que eu conheço.
Diode Dan

Respostas:


277

Para o nome do cabeçalho da solicitação, use Autorização. Coloque o Portador antes do Token. Eu apenas tentei e funciona para mim.

Autorização: portador TOKEN_STRING

Cada parte do JWT é um valor codificado em base64url.


61
Apenas a título de esclarecimento, o campo "Cabeçalho" torna-se autorização e no campo "Valor" se torna portador [espaços em branco] <seu código-aqui>
Diode Dan

Você sabe qual parte do campo está criptografada? Parece que os dados logo após o último '.' separador está me dando o que parece ser caracteres de lixo. Suponho que essas informações sejam realmente criptografadas pelo gerador de token?
Diode Dan

5
Confira jwt.io. Há uma seção onde você pode colar um JWT e visualizar seu conteúdo decodificado, é a melhor maneira de ver o que está acontecendo. A cadeia secreta do servidor é usada para criar a última seção do token. O JWT assina apenas que a carga útil não criptografa, ou seja, você pode decodificar as partes 1 e 2 da sequência, mas não pode validá-la sem o segredo. self-issued.info/docs/draft-ietf-oauth-json-web-token.html
Mick Cullen

4
Alguém pode, por favor, explicar por que precisamos colocar o Portador antes do JWT? Isso é algum tipo de sinal para o servidor de que é um JWT?
user137717

3
Essa é apenas a convenção - você pode encontrar todos os detalhes aqui: jwt.io/introduction
Michael Noyb 16/16/16

134

Aqui está uma imagem, se ajudar :)

Carteiro

Atualizar:

A equipe do carteiro adicionou "token do portador" à "guia autorização": Carteiro atualizado


40

Estou adicionando a esta pergunta uma dica interessante que pode ajudar vocês a testar o JWT Apis.

É realmente muito simples.

Quando você efetua login, em sua API (ponto de extremidade de login), você receberá imediatamente seu token e, como @ mick-cullen disse, terá que usar o JWT no cabeçalho como:

Authorization: Bearer TOKEN_STRING

Agora, se você deseja automatizar ou apenas facilitar sua vida, em seus testes, você pode salvar o token como um global que pode chamar em todos os outros pontos de extremidade como:

Authorization: Bearer {{jwt_token}}

No Postman: Em seguida, faça uma variável Global no postman como jwt_token = TOKEN_STRING.

No terminal de login: Para torná-lo útil, adicione no início da guia Testes e adicione:

var data = JSON.parse(responseBody);
postman.clearGlobalVariable("jwt_token");
postman.setGlobalVariable("jwt_token", data.jwt_token);

Suponho que sua API esteja retornando o token como json na resposta como: {"jwt_token": "TOKEN_STRING"}, pode haver algum tipo de variação.

Na primeira linha, você adiciona a resposta à variedade de dados. Limpe seu Global e atribua o valor.

Portanto, agora você tem seu token na variável global, o que facilita o uso da Autorização: Portadora {{jwt_token}} em todos os seus pontos de extremidade.

Espero que esta dica ajude.


EDITAR
Algo para ler

Sobre testes no Postman: exemplos de testes

Linha de Comando: Newman

CI: integração com Jenkins

Bom post no blog: master api test automation


Interessante, não estou familiarizado com o conceito da Testguia e da codificação Postman. Existe um recurso que você recomenda para começar com isso?
Diode Dan


Na verdade, o Postman é realmente interessante e bastante forte quando se trata de testes automatizados. É possível configurar o carteiro de forma que ele possa construir dados aleatórios Variáveis ​​globais ou Variáveis ​​de ambiente que você pode executar nos testes. E faça execuções iterativas e teste qualquer resposta como testes de unidade de terminal. Salve-os e encontre erros ao alterar o código. Não usei o utilitário de linha de comando, mas entendo que você pode configurá-lo para ser executado no seu ci-pipeline.
Pablo Palacios

Sua pode ler sobre linha de comando aqui: getpostman.com/docs/newman_intro
Pablo Palacios

9

Eu tive o mesmo problema Flaske depois de tentar as 2 primeiras soluções iguais ( Authorization: Bearer <token>) e obter o seguinte:

{
    "description": "Unsupported authorization type",
    "error": "Invalid JWT header",
    "status_code": 401
}

Consegui finalmente resolvê-lo usando:

Authorization: jwt <token>

Achei que poderia economizar algum tempo para as pessoas que encontrarem a mesma coisa.


1
Eu estava ficando Authentication credentials were not providedem djangousar Bearer <token>. resolvido com jwt <token>. Obrigado pela solução
S_M 21/17/17

7

Aqui está como definir o token automaticamente

Em sua solicitação de login / autenticação

insira a descrição da imagem aqui

Em seguida, para página autenticada

insira a descrição da imagem aqui


4

Se você deseja usar o carteiro, o caminho certo é usar os cabeçalhos como tal

chave: autorização

valor: jwt {token}

tão simples como isso.


2

Para pessoas que estão usando o plugin wordpress Advanced Access Manager para abrir a autenticação JWT.

O campo Cabeçalho deve colocar autenticação em vez de autorização

insira a descrição da imagem aqui

A AAM mencionou isso em sua documentação ,

Nota! O AAM não usa o cabeçalho de autorização padrão , pois é ignorado pela maioria dos servidores Apache. ...


Espero que ajude alguém! Obrigado por outras respostas também me ajudou muito !!


2
  1. Carteiro aberto.
  2. vá para o campo "cabeçalho".
  3. lá pode-se ver espaços em branco do "valor-chave".
  4. no tipo de chave "Autorização".
  5. no valor, digite "Portador (espaço) your_access_token_value".

Feito!


2

insira a descrição da imagem aqui

Tudo o resto, ie. Parâmetros, Autorização, Corpo, Script de pré-solicitação, Testes está vazio, basta abrir a guia Cabeçalhos e adicionar como mostrado na imagem. É o mesmo para a solicitação GET também.


0

De alguma forma, o carteiro não funcionou para mim. Eu tive que usar uma extensão do Chrome chamada RESTED que funcionou.


0

Fiz como o moplin mencionou. Mas, no meu caso, o serviço envia o JWT nos cabeçalhos de resposta, como um valor na chave "Autorização".

Authorization →Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpbWFsIiwiZXhwIjoxNDk4OTIwOTEyfQ.dYEbf4x5TGr_kTtwywKPI2S-xYhsp5RIIBdOa_wl9soqaFkUUKfy73kaMAv_c-6cxTAqBwtskOfr-Gm3QI0gpQ

O que eu fiz foi criar uma variável global no carteiro como

chave->
valor jwt-> bláblá

na solicitação de login-> guia Testes, adicione

postman.clearGlobalVariable("jwt");
postman.setGlobalVariable("jwt", postman.getResponseHeader("Authorization"));

em outras solicitações, selecione a guia Cabeçalhos e forneça

chave-> Autorização

valor -> {{jwt}}


0

Na versão mais recente do Postman (7 ++), pode haver um campo Portador na autorização. Então, vá para a guia Cabeçalho

selecione a chave como Autorização e, no valor, escreva JWT


Para a v7.19.0 + e já existe há algum tempo, há um Bearer Tokenauxiliar na Authorizationguia, adicionando o valor do token aqui (codificado permanentemente ou como uma variável dinâmica) criará o mesmo Authorizationcabeçalho para a solicitação.
Danny Dainton
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.