繁体   English   中英

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

[英]Refresh JWT token from AWS Cognito in Angular 5?

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

我还假设这是我将在客户端而不是在服务器端(.net Web API)处理的事情?

目前,我的路线上有警卫人员,可以通过我的服务调用以下功能:

 loggedIn() {
    return tokenNotExpired('token');
  }

下面的作品,但问题是我必须使用我的AccessKeySecretKey

refreshToken(){

    AWS.config.update({credentials:{accessKeyId:'access_id',secretAccessKey:'secret'}, region:'us-east-2'});

    const myCreds = new AWS.CognitoIdentityCredentials({IdentityPoolId:'us-east-2:identity_pool_id},{region:'us-east-2'});

   const myConfig = new AWS.Config({credentials: myCreds, region: 'us-east-2'});



   const refreshToken = JSON.parse(localStorage.getItem('rToken'));
    const cognitoisp = new CognitoIdentityServiceProvider();

    const params = {
      AuthFlow: 'REFRESH_TOKEN',
      ClientId: 'client_id',
      UserPoolId: 'user_pool_id',
      AuthParameters: {
        'REFRESH_TOKEN': refreshToken
      }
    }

    cognitoisp.adminInitiateAuth(params,(err,data)=>{
      if(err) console.log(err,err.stack);

      else

      {
        this.token = data.AuthenticationResult.IdToken;
        localStorage.setItem('lcToken',JSON.stringify(this.token));
      }

    })
  }

您在这里有了正确的想法,一旦获得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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM