从Angular 5中的AWS Cognito刷新JWT令牌?

时间:2018-02-14 16:13:55

标签: angular aws-cognito

我通过aws sdk cognito .net sdk在亚马逊认知中创建用户。当用户登录时,他们会返回3个令牌(IdToken,AccessToken和RefreshToken)。 IdToken有效期为1小时。目前,当令牌过期时,用户被重定向到登录页面。我想要做的是在收到403返回时发送RefreshToken,但我不确定如何在角度应用程序中执行此操作?

我也假设这是我在客户端而不是在服务器端(.net web api)处理的东西?

我目前在我的路线上有警卫从我的服务中调用以下功能:

sprintf("&#x%X;", ord($1))

以下有效,但问题是我必须使用s/([^\x09\x0A\x0D\x20-\x21\x23-\x25\x28-\x3B\x3D\x3F-\x7E])/ sprintf("&#x%X;", ord($1)) /eg; loggedIn() { return tokenNotExpired('token'); }

AccessKey

1 个答案:

答案 0 :(得分:5)

你有正确的想法,一旦你获得4xx状态,你可以使用刷新令牌来获得一组新的令牌。 JavaScript中的代码如下:

const AWS = require('aws-sdk')
const cognitoisp = new AWS.CognitoIdentityServiceProvider();

var params = {
  AuthFlow: 'REFRESH_TOKEN',
  ClientId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  UserPoolId: 'region_xxxxxxxx',
  AuthParameters: {
    'REFRESH_TOKEN': 'xxxxxxxxxxxxxxxxxxxxx'
  }
}

cognitoisp.adminInitiateAuth(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

DOCS:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html#adminInitiateAuth-property