amazon-cognito - 从 AWS Cognito refresh_token 结果返回 aud
问题描述
我正在使用 AWS Cognito 对用户进行身份验证。
我使用 Kosjs 创建了一个服务器,并使用 koa-jwt 库来验证用户是否拥有有效的 id_tokens。
koa-jwt 期望 id_token 中有一个aud属性,该属性最初存在于 AWS Cognito 返回的 id_token 中。
但是当我使用刷新令牌获取新令牌时,新令牌包含client_id而不是aud。
因此,koa-jwt 不再验证 id_token。
有什么方法可以从 AWS Cognito 获得一致的结果?
这是登录后的示例 id_token:
{
"sub": "1Xfe6c44-XXXX-4cbf-9fb2-2778a1b0e5be",
"email_verified": true,
"iss": "https://cognito-idp.ap-northeast-1.amazonaws.com/ap-northeast-1_xxxOUKTJu",
"phone_number_verified": true,
"cognito:username": "oqtz@n.spamtrap.co",
"given_name": "Some1",
"aud": "xxxxf9f0lmr1q6ni2c09umdds",
"event_id": "9cf03730-xxxx-11e9-a89f-67080ff7c936",
"token_use": "id",
"auth_time": 1546931916,
"phone_number": "+16806666986",
"exp": 1546935516,
"iat": 1546931916,
"family_name": "Some2",
"email": "oqtz@n.spamtrap.co"
}
这是由 refresh_token 返回的示例 id_token:
{
"sub": "16fe6c44-xxxx-xxxx-9fb2-2778a1b0e5be",
"event_id": "9cf03730-xxxx-xxxx-a89f-67080ff7c936",
"token_use": "access",
"scope": "aws.cognito.signin.user.admin",
"auth_time": 1546931916,
"iss": "https://cognito-idp.ap-northeast-1.amazonaws.com/ap-northeast-1_xxxxxKTJu",
"exp": 1546939290,
"iat": 1546935690,
"jti": "6fab7b58-xxxx-xxxx-a339-ddb6467e2d4c",
"client_id": "xxxxx9f0lmr1q6ni2c09umdds",
"username": "oqtz@n.spamtrap.co"
}
解决方案
我还没有完全测试过刷新的东西,但是通过遵循koa-jwt 自述文件中本节底部的示例,我可以快速掌握基础知识。
const { koaJwtSecret } = require('jwks-rsa');
app.use(jwt({
secret: <any> koaJwtSecret({
jwksUri: `https://cognito-idp.${config.userPoolRegion}.amazonaws.com/${config.userPoolId}/.well-known/jwks.json`,
cache: true,
cacheMaxEntries: 5,
cacheMaxAge: 36000000 ///10 hr
})
}));
推荐阅读
- vbscript - .vbs:Word 中页眉/页脚的写保护
- javascript - 如何为每个 API 创建通用的 Nest JS API 响应格式?
- java - 在Activity类Android中调用jar文件方法
- python-3.x - 如何从熊猫的链接中提取单词
- javascript - 如何在一个元素上创建一个事件切换 HTML 类,同时从其他元素中删除它?
- optimization - SortedList 或 SortedDictionary 是通过最近的键有效存储和检索数据的最佳方式吗?
- excel - 带有彩色单元格的excel vlookup输出
- clickhouse - 选择从第一个坏值到最后一个坏值范围内的数据
- jackson - 如何在杰克逊反序列化期间忽略@class类型
- makefile - 用于触发先决条件的 Makefile 导出变量