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.
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.
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.
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 :)
Actualización:
El equipo de cartero agregó "Token de portador" a la pestaña " autorización":
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
Buena entrada de blog: master api test automation
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.
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
Luego para la página autenticada
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ó.
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}}
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
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!!
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