Token JWT en Encabezado POSTMAN


Estoy probando una implementación de seguridad basada en tokens JWT basada en el siguiente artículo . He recibido con éxito un token del servidor de prueba. No puedo averiguar cómo hacer que el programa cliente Chrome POSTMAN RESTO enviar el token en el encabezado.

postman captura de pantalla

Mis preguntas son las siguientes:

1) ¿Estoy usando el nombre de encabezado correcto y/o la interfaz de POSTMAN?

2) ¿Necesito codificar el token en base 64? Pensé que podría enviar el token volver.

Author: Hans Wouters, 2014-07-12

8 answers

Para el nombre del encabezado de la solicitud simplemente use Authorization. Colocar al Portador antes de la Ficha. Acabo de probarlo y funciona para mí.

Authorization: Bearer TOKEN_STRING

Cada parte del JWT es un valor codificado base64url.

 209
Author: Mick Cullen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-12 07:43:29

Aquí hay una imagen si ayuda :)

Cartero

Actualización:

El equipo de cartero agregó "Token de portador" a la pestaña " autorización": Cartero actualizado

 109
Author: prasanthv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-24 11:31:46

Estoy agregando a esta pregunta un pequeño consejo interesante que puede ayudarlos a probar las api de JWT.

Es muy simple en realidad.

Cuando inicie sesión, en su Api (endpoint de inicio de sesión), recibirá inmediatamente su token, y como dijo @mick-cullen, tendrá que usar el JWT en su encabezado como:

Authorization: Bearer TOKEN_STRING

Ahora, si le gusta automatizar o simplemente hacer su vida más fácil, sus pruebas pueden guardar el token como un global que puede llamar a todos los demás endpoints as:

Authorization: Bearer {{jwt_token}}

En Cartero: Luego haga una variable global en postman como jwt_token = TOKEN_STRING.

En su terminal de inicio de sesión: Para que sea útil, agregue al comienzo de la pestaña Pruebas add:

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

Supongo que su api está devolviendo el token como un json en la respuesta como: {"jwt_token":"TOKEN_STRING"}, puede haber algún tipo de variación.

En la primera línea se añade la respuesta a la variable de datos. Limpie su Global Y asignar el valor.

Así que ahora tenga su token en la variable global, lo que facilita el uso de Authorization: Bearer {{jwt_token}} en todos sus endpoints.

Espero que este consejo ayude.


EDITAR
Algo para leer

Acerca de las pruebas en Postman: ejemplos de pruebas

Línea de comandos: Newman

CI: integración con Jenkins

Buena entrada de blog: master api test automation

 32
Author: moplin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-05 02:31:45

Tuve el mismo problema en Flask y después de probar las primeras 2 soluciones que son las mismas (Authorization: Bearer <token>), y obtener esto:

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

Finalmente logré resolverlo usando:

Authorization: jwt <token>

Pensé que podría ahorrar algo de tiempo a las personas que se encuentran con la misma cosa.

 6
Author: Vucko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-24 08:57:47

Aquí está cómo establecer el token automáticamente

En su solicitud de inicio de sesión/autenticación

introduzca la descripción de la imagen aquí

Luego para la página autenticada

introduzca la descripción de la imagen aquí

 3
Author: Digitlimit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-05 10:41:15

De alguna manera cartero no trabajaba para mí. Tuve que utilizar una extensión de Chrome llamado DESCANSADO que funcionó.

 0
Author: RamanSM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-01 16:58:52

Hice lo que Moplin mencionó .Pero en mi caso el servicio envía los encabezados JWT en respuesta, como un valor bajo la clave "Authorization".

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

Lo que hice fue, hacer una variable global en postman como

Key- > jwt
valor - > blahblah

En la pestaña solicitud de inicio de sesión->Pruebas, agregue

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

En otras solicitudes, seleccione la pestaña Encabezados y dé

Clave - > Autorización

Valor - >{{jwt}}

 0
Author: Yasitha Bandara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-01 15:19:10

Para las personas que están utilizando el plugin de wordpress Administrador de acceso avanzado para abrir la autenticación JWT.

El campo de Encabezado debe poner Autenticación en lugar de Autorización

introduzca la descripción de la imagen aquí

AAM lo mencionó dentro de su documentación ,

Nota! AAM no utiliza el encabezado de autorización estándar ya que se omite por la mayoría de los servidores Apache. ...


Espero que ayude a alguien! Gracias por otras respuestas me ayudó mucho también!!

 0
Author: jeffsama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-24 08:48:45