servicios web: cómo extraer/descifrar el tiempo de caducidad del token web Json emitido externamente
Así que estoy trabajando con un servicio web RESTful de terceros en el que tengo que autenticarme solicitando un JWT y proporcionarlo a cualquier otra solicitud. Lo hago simplemente publicando mi nombre de usuario y contraseña y recibo un token para esto. No conozco el secreto utilizado para crear el token ni nada más además del nombre de usuario y la contraseña.
Ahora, me gustaría verificar el tiempo de vencimiento del JWT antes de reutilizarlo para solicitudes de servicios web posteriores o simplemente renovarlo. Yo kahora podría usarlo y detectar algún tipo de excepción de vencimiento, pero preferiría no hacerlo.
Intenté seguir este tutorial: [https://stormpath.com/blog/token-auth-for-java]
pero me quedo atascado en el punto en el que tengo que proporcionar la clave de firma.
¿Cómo podría hacerlo ya que no tengo el secreto que se usó para codificarlo?
Adiós: estoy trabajando con groovy y wslite en este.
------------Respuesta------------
Deberías ser capaz de tomarel cuerpo del token y decodificarlo.
La clave privada no se usa para cifrar el cuerpo de un JWT, solo se usa para generar la firma...
Entonces, en Groovy solo puedes hacer:
// A JWT from the link you gave above
String key = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vdHJ1c3R5YXBwLmNvbS8iLCJleHAiOjEzMDA4MTkzODAsInN1YiI6InVzZXJzLzg5ODM0NjIiLCJzY29wZSI6InNlbGYgYXBpL2J1eSJ9.43DXvhrwMGeLLlP4P4izjgsBB2yrpo82oiUPhADakLs'
// Just the body (middle section)
String body = key.split(/\./)[1]
// Un base64 it (using the Java 8 Base64 class)
String unencoded = new String(Base64.decoder.decode(body), 'UTF-8')
// Parse the json into a map
Map data = new groovy.json.JsonSlurper().parseText(unencoded)
// Get the expiry
long exp = data.exp
assert exp == 1300819380
Por supuesto, no hay nada que decir que el cuerpo del token tiene que contener algún tipo de tiempo de caducidad para que usted lo mire... Podría ser simplemente una identificación interna
------------Respuesta------------
Si no conoce el cifrado utilizado para codificarlo ni desea descifrar su cifrado, entoncesno puede decodificar ninguna información del token. No hay nada como 'información estándar que debe codificarse en token', no es necesario que el token contenga información cifrada, podría ser solo un UUID generado aleatoriamente almacenado en su lado en DB, entonces en ese caso no puedes decodificarlo en absoluto.
Etiquetas: jwt groovy rest web-services
Artículos relacionados:
django: forma correcta de manejar un valor NULL único
rendimiento - Python, ¿por qué mmap.move() llena la memoria?
- objetivo c - Población de campo iOS Appdelegate y creación de objetos
- java - Neo4j: eliminar relación entre 2 nodos Neo.ClientError.Statement.SyntaxError
- ubuntu - Permiso denegado para protoc en maven build en Teamcity
- servidor sql: cómo insertar datos en dos tablas diferentes al mismo tiempo, pero en Admission_Education Table tengo que ingresar más 4 valores en una sola identificación
- mocha.js - la prueba no se ejecuta - nightwatch con mocha estándar y phantomjs
- css - Diferencia entre "derecha:0px;" a "flotante:derecha;" a "margen:automático;"?
- binario: ¿mejor formato de datos que .mat v7.3 para importar de Matlab 2016 a Mathematica 11?
- rápido - "camino" animación con CABasicAnimation - Turn "x" en una marca de verificación
- winforms - Ejecutar un exe incrustado con sus dependencias C#
- phoenix framework - DateTime.now en Elixir y Ecto
- php - Cómo obtener múltiples filas de datos de mysql a través de JSON usando Volley
- ios - Swift raptureXML
- html - Cómo centrar el formulario de inicio de sesión
- sincronización: sincronización o reflejo de base de datos de Azure entre bases de datos alojadas en diferentes cuentas de Azure
- java - ¿Cómo obtener datos de la clase AsyncTask en android?
Artículos calientes
- medicina china para la bronquitis
- Diferencia entre infección de las vías respiratorias superiores y bronquitis
- ¿Qué causa la epididimitis?
- Criterios diagnósticos de cálculos renales
- ¿Qué medicamento la masturbación causa prostatitis?
- ¿Cuáles son los factores de padecer gota?
- Qué comer durante la convalecencia de una hemorragia cerebral
- que es el alzheimer
- Principales criterios diagnósticos de las bronquiectasias
- ¿Cuáles son las formas de prevenir y tratar la menstruación irregular en las mujeres?
- Síntomas de gota de ternera
- Saco gestacional de 5x4mm cuanto dura el embarazo
- La diferencia entre espinillas y espinillas de ácaros
- Por qué frotar con jengibre puede tratar la caída del cabello
- ¿Cuánto tiempo se puede vivir con insuficiencia hepática?