gpt4 book ai didi

node.js - Cognito - 检查 idToken 的有效性

转载 作者:行者123 更新时间:2023-12-02 17:00:13 26 4
gpt4 key购买 nike

我在 Node.js 中有一个后端 API,可从查询参数中检索 Amazon Cognito ID token 。我需要检查此 token 是否有效。有什么方法可以使用 aws-sdkamazon-cognito-identity-js SDK 来检查吗?

最佳答案

我为此苦苦挣扎了几天,我刚刚找到了如何做到这一点,这是一个可以为您进行验证的完整功能,您需要提供的只是与您之前创建的认知池相关的 userPoolId 和 pool_region然后您可以通过将 token 作为参数发送到任何您想要的地方调用此函数,如果 token 是否有效,您将在控制台上获得结果,这是实现它的方法:

  1. 创建一个名为 tokenValidation.js 的文件(例如)
  2. 将此代码粘贴到其中:

// Cognito data

const userPoolId = "###########"; // Cognito user pool id here
const pool_region = '#########'; // Region where your cognito user pool is created

const jwt = require('jsonwebtoken');
const jwkToPem = require('jwk-to-pem');
const request = require('request');


// Token verification function
const ValidateToken = (token) => {
console.log('Validating the token...')
request({
url: `https://cognito-idp.${pool_region}.amazonaws.com/${userPoolId}/.well-known/jwks.json`,
json: true
}, (error, response, body) => {
console.log('validation token..')
if (!error && response.statusCode === 200) {
pems = {};
var keys = body['keys'];
for(var i = 0; i < keys.length; i++) {
//Convert each key to PEM
var key_id = keys[i].kid;
var modulus = keys[i].n;
var exponent = keys[i].e;
var key_type = keys[i].kty;
var jwk = { kty: key_type, n: modulus, e: exponent};
var pem = jwkToPem(jwk);
pems[key_id] = pem;
}
//validate the token
var decodedJwt = jwt.decode(token, {complete: true});
if (!decodedJwt) {
console.log("Not a valid JWT token");
return;
}

var kid = decodedJwt.header.kid;
var pem = pems[kid];
if (!pem) {
console.log('Invalid token');
return;
}

jwt.verify(token, pem, function(err, payload) {
if(err) {
console.log("Invalid Token.");
} else {
console.log("Valid Token.");
console.log(payload);
}
});
} else {
console.log(error)
console.log("Error! Unable to download JWKs");
}
});
}

// Exporting it to call it anywere you want
exports.ValidateToken = ValidateToken

  1. 在您需要时像这样导入它:const validateToken = require('./tokenValidation')

  2. 最后这样调用它:validateToken.ValidateToken(result.getAccessToken().getJwtToken())

我知道这是一个老问题,但我真的希望这对以后的其他人有所帮助。

关于node.js - Cognito - 检查 idToken 的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54495039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com