Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
¿Cómo restaurar un token caducado [AWS Cognito]?

Estoy usando AWS para mi sitio web. Después de 1 hora, el token caduca y el usuario prácticamente no puede hacer nada.

Por ahora estoy tratando de actualizar las credenciales de esta manera:

 function getTokens(session) { return { accessToken: session.getAccessToken().getJwtToken(), idToken: session.getIdToken().getJwtToken(), refreshToken: session.getRefreshToken().getToken() }; }; function getCognitoIdentityCredentials(tokens) { const loginInfo = {}; loginInfo[`cognito-idp.eu-central-1.amazonaws.com/eu-central-1_XXX`] = tokens.idToken; const params = { IdentityPoolId: AWSConfiguration.IdPoolId Logins: loginInfo }; return new AWS.CognitoIdentityCredentials(params); }; if(AWS.config.credentials.needsRefresh()) { clearInterval(messwerte_updaten); cognitoUser.refreshSession(cognitoUser.signInUserSession.refreshToken, (err, session) => { if (err) { console.log(err); } else { var tokens = getTokens(session); AWS.config.credentials = getCognitoIdentityCredentials(tokens); AWS.config.credentials.get(function (err) { if (err) { console.log(err); } else { callLambda(); } }); } }); }

la cuestión es que, después de 1 hora, el token de inicio de sesión se actualiza sin problemas, pero después de 2 horas ya no puedo actualizar el token de inicio de sesión.

También intenté usar AWS.config.credentials.get() , AWS.config.credentials.getCredentials() y AWS.config.credentials.refresh() que tampoco funciona.

Los mensajes de error que recibo son:

Faltan credenciales en la configuración

Token de inicio de sesión no válido. Ficha caducada: 1446742058 >= 1446727732

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Después de casi 2 semanas finalmente lo resolví.

Necesita el token de actualización para recibir un nuevo token de identificación. Una vez que se adquiere el token actualizado, actualice el objeto AWS.config.credentials con el nuevo token de identificación.

aquí hay un ejemplo de cómo configurar esto, ¡funciona sin problemas!

 refresh_token = session.getRefreshToken(); // you'll get session from calling cognitoUser.getSession() if (AWS.config.credentials.needsRefresh()) { cognitoUser.refreshSession(refresh_token, (err, session) => { if(err) { console.log(err); } else { AWS.config.credentials.params.Logins['cognito-idp.<YOUR-REGION>.amazonaws.com/<YOUR_USER_POOL_ID>'] = session.getIdToken().getJwtToken(); AWS.config.credentials.refresh((err)=> { if(err) { console.log(err); } else{ console.log("TOKEN SUCCESSFULLY UPDATED"); } }); } }); }
over 4 years ago · Santiago Trujillo Denunciar

0

Por lo general, se resuelve interceptando solicitudes http con lógica adicional.

 function authenticationExpiryInterceptor() { // check if token expired, if yes refresh } function authenticationHeadersInterceptor() { // include headers, or no }}

luego con el uso de la capa HttpService

 return HttpService.get(url, params, opts) { return authenticationExpiryInterceptor(...) .then((...) => authenticationHeadersInterceptor(...)) .then((...) => makeRequest(...)) }

También podría resolverse por proxy http://2ality.com/2015/10/intercepting-method-calls.html

En relación con AWS:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html

Estás interesado en:

  • obtenerPromesa()
  • actualizarPromesa()
over 4 years ago · Santiago Trujillo Denunciar

0

Así es como implementé esto:

Primero debe autorizar al usuario al servicio y otorgar permisos:

Solicitud de muestra:

Así es como implementé esto:

Primero debe autorizar al usuario al servicio y otorgar permisos:

Solicitud de muestra:

 POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token& Content-Type='application/x-www-form-urlencoded'& Authorization=Basic aSdxd892iujendek328uedj grant_type=authorization_code& client_id={your client_id} code=AUTHORIZATION_CODE& redirect_uri={your rediect uri}

Esto devolverá un Json algo como:

HTTP/1.1 200 OK Tipo de contenido: aplicación/json

 {"access_token":"eyJz9sdfsdfsdfsd", "refresh_token":"dn43ud8uj32nk2je","id_token":"dmcxd329ujdmkemkd349r", "token_type":"Bearer", "expires_in":3600}

Ahora necesita obtener un token de acceso según su alcance:

 POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token Content-Type='application/x-www-form-urlencoded'& Authorization=Basic aSdxd892iujendek328uedj grant_type=client_credentials& scope={resourceServerIdentifier1}/{scope1} {resourceServerIdentifier2}/{scope2}

Json sería:

HTTP/1.1 200 OK Tipo de contenido: aplicación/json

 {"access_token":"eyJz9sdfsdfsdfsd", "token_type":"Bearer", "expires_in":3600}

Ahora, este token de acceso solo es válido durante 3600 segundos, después de lo cual debe intercambiarlo para obtener un nuevo token de acceso. Para hacer esto,

Para obtener un nuevo token de acceso desde el token de actualización:

 POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded' Authorization=Basic aSdxd892iujendek328uedj grant_type=refresh_token& client_id={client_id} refresh_token=REFRESH_TOKEN

Respuesta:

HTTP/1.1 200 OK Tipo de contenido: aplicación/json

 {"access_token":"eyJz9sdfsdfsdfsd", "refresh_token":"dn43ud8uj32nk2je", "id_token":"dmcxd329ujdmkemkd349r","token_type":"Bearer", "expires_in":3600}

Obtienes la imagen correcta.

Si necesitas más detalles entra aquí .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda