gpt4 book ai didi

javascript - 使用 AWS cognito 和 javascript 创建登录

转载 作者:行者123 更新时间:2023-11-29 20:58:45 28 4
gpt4 key购买 nike

我正在创建一个登录页面。这个想法是获取用户名和密码,然后使用它从 AWS cognito 用户池中获取 id token 。

然后我需要将 token 存储在数据库中并将该 token 与用户名一起传输到 index.html。这是因为 index.html 需要 token 才能使用相同的 ID token 向 API 网关发出发布请求,并且它需要知道用户名以跟踪当前登录的用户。

现在 index.html 必须检查传输给它的 token 是否与数据库中的 token 匹配。

如果是并且 token 没有过期,则没有重定向,否则,index.html 重定向到 login.html。

问题是我的后端完全依赖于 Amazon Lambda 函数和 API 网关,因为我的公司不希望我使用任何后端语言。现在,我发现 lambda 函数无法设置浏览器 cookie,也无法读取浏览器 cookie。

这让我别无选择,只能使用 javascript cookie、 session 和本地存储将 token 和用户名传输到 index.html。但是,这种方法被认为是不安全的。

没有任何关于使用 Cognito 的安全登录系统的教程。

注意:任何其他安全登录系统都可以完成这项工作,但请记住,我需要将用户名和密码传递给用户池以获取 ID token ,这意味着,如果我使用任何其他登录方法,那么我现在需要通过用户名和密码都用于索引,以便索引可以向用户池发出请求以获取 ID token 并向 API 网关发出请求。

现在我的问题是,有没有一种方法可以在不影响安全性的情况下将数据从登录实际传输到索引?我能否以任何其他方式使用 lambda 来转移 token ?

请帮忙。提前致谢。

最佳答案

Now, I found that lambda functions could not set browser cookies nor read browser cookies.

我不认为这是完全正确的。

使用 Lambda Proxy Integration让您的 Lambda 函数能够了解和控制 HTTP 请求的许多方面。这包括设置和读取任意 header (包括 set-cookie)。

为了演示,您可以设置这样的函数并将 API 网关触发器(启用 Lambda 代理集成)附加到它:

exports.handler = (event, context, callback) => {
var returnobj = {
"statusCode": 200,
"headers": {
"Content-Type": "application/json", "access-control-allow-origin": "*",
"Set-Cookie": "testcook=testval; path=/; domain=xxxxxxxxxx.execute-api.us-east-1.amazonaws.com; secure; HttpOnly"
},
"body": JSON.stringify({})
};
console.log("headers", event.headers.Cookie);
callback(null, returnobj);
};

此函数返回一个 Set-Cookie header ,浏览器将尊重该 header 并将其与 future 的请求一起发送到该域。如果您在浏览器中点击两次,您将看到浏览器发送并在第二次请求时由 lambda 记录的 cookie。

DevTools image showing HttpOnly and Secure

如果您不愿意使用 Lambda 代理集成,您仍然可以通过 mapping part of your Lambda response to a header 完成此操作在 API 网关中。

关于javascript - 使用 AWS cognito 和 javascript 创建登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47828154/

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