gpt4 book ai didi

javascript - 如何仅给定 Cognito 用户和具有完全 AWS 权限的安全服务器(安全后端服务器到服务器身份验证)来验证 Cognito 用户

转载 作者:行者123 更新时间:2023-11-30 06:15:14 25 4
gpt4 key购买 nike

TL;DR:我想从另一台服务器向我自己的后端 API 发出经过认知身份验证的请求。

我有一个 node.js 后端 API(由 claudia-js 配置并部署为 AWS lambda,由 AWS API 网关连接并由 Cognito 保护)

我的 React 前端可以毫无问题地向我的后端发出请求;我只是使用 React Amplify 以常规流程登录用户,获取 token ,然后向 API 网关发出 HTTPS 请求。

我有另一台服务器(AWS elasticbeanstalk,基本用户名-密码身份验证)托管微服务,连接到用户可以通过后端 API 访问的调度系统(agenda-js)。 问题:我们需要能够以其他方式进行交流。

作业使用 userID 保存到数据库(我们只使用 cognito sub 作为我们的 userID,它使事情保持一致)。一项工作需要代表我们的用户按计划(比如说每月一次)联系后端 API。这需要以认知用户身份进行身份验证,仅给出认知用户 ID,获取 token 并以编程方式向后端 API 发出 REST/HTTP 请求。

完成:

  • 将作业处理器服务器作为应用程序客户端添加到我的 Cognito 用户池

  • 使用我自己的凭据(硬编码用户名/密码)编写可以针对认知用户池进行身份验证的作业处理器

  • 使用上述步骤中的 token 将安全http请求写入后端api

作业处理器代码:

// auth and cognito params  
const params = {
AuthFlow: 'ADMIN_NO_SRP_AUTH',
ClientId: 'xxxxxxxxxxxxxxxxxxxxxxx',
UserPoolId: 'XX-XXXX-X_XXXXXXXXX',
AuthParameters: {
USERNAME: 'my-username',
PASSWORD: 'my-pwd',
},
};

cognitoidentityserviceprovider.adminInitiateAuth(params, (err, data) => {
if (err) console.log(err);
const token = data.AuthenticationResult.IdToken;

// HTTP opts to call my backend api
const options = {
method: 'GET',
url: 'https://my.api.url/tasks/action',
headers: {
Authorization: `Bearer ${token}`,
},
json: true,
};

// Call my backend api
rp(options, (error, response, body) => {
if (error) throw new Error(error);

console.log(body);
});
});

上面的代码完美运行,我能够以用户身份(在本例中是我自己)调用我自己的 API,但我希望能够以 any 身份使用此脚本调用 API用户,通过为 cognito auth API 提供 cognito 用户 ID、AWS key 、IAM Angular 色或 .env var 中需要的任何内容。我只是不知道如何实现这一目标!时间差

最佳答案

对于任何阅读者:我放弃了这种方法,而是使用 IAM 身份验证和 api 网关 sdk 客户端授权客户端服务器。用户信息(非敏感)在http body中发送

关于javascript - 如何仅给定 Cognito 用户和具有完全 AWS 权限的安全服务器(安全后端服务器到服务器身份验证)来验证 Cognito 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56565197/

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