gpt4 book ai didi

oauth - 在不同域上对 API 后端进行身份验证的正确方法? (第 3 方 cookie)

转载 作者:行者123 更新时间:2023-12-05 06:46:06 26 4
gpt4 key购买 nike

我有一个分为两部分的网络应用程序。

  1. JavaScript 前端。 (myfrontend.com)
  2. API 后端 (node.js)。 (mybackend.com)

这两个部分托管在不同的域上,我需要这样,因为最终我会为相同的后端构建更多的前端(即移动网络应用程序等)

我现在进行身份验证的方式:

  1. 用户从 myfrontend.com 登录,凭据被发送 (ajax) 到 mybackend.com,在那里根据数据库检查它们。如果他们不检查,什么也不会发生,mybackend.com 会返回一个错误代码。

  2. 如果他们结帐,我会使用 express.js 的 cookie session ,mybackend.com 会使用 cookie 进行响应(针对 mybackend.com 域)。服务器将从数据库检索到的用户标识链接到 session 。

  3. 从那时起,所有对 mybackend.com 的请求都包含 cookie,后端使用 cookie 查找 session ,并使用 session 中的用户 ID 信息正确响应。

最初我遇到了一堆 CORS 问题,但在设置了所有正确的 header (如 withCredentials 等)后,在每个浏览器中一切都运行良好。

我认为这是一个非常优雅的解决方案,因为所有用户信息都在后端被严格隔离,前端永远不会收到任何用户数据,只会收到一个短暂的 cookie。

所以我有两个问题:

  1. 这是做这种事情的正确方法吗? OAuth 的实现方式与此有何不同,有哪些优势?

  2. 如果我在 chrome 中关闭第三方 cookie,它将停止工作。然而,在 safari 中关闭第三方 cookie 仍然可以正常工作。这是怎么回事?当您将“mybackend.com”ajax 到“mybackend.com”时,为什么获取“mybackend.com”的 cookie 被视为第三方 cookie?如果我使用 iframe 或其他东西可以吗?我应该为此担心吗?

最佳答案

  1. 是的,这是一个很好用的模式。我在 http://hackhall.com 中使用了相同的方法(https://github.com/azat-co/hackhall)。 OAuth 更适用于三种方式的身份验证:消费者、服务提供商和您的应用程序。OAuth 1.0 需要“oauth dance”来获取时间敏感的访问 token 。 OAuth 2.0 更容易,因为在消费者第一次获得 token 后,他们可以交换为充当密码的永久承载者。OAuth Echo 用于委托(delegate)调用/请求。

  2. 与浏览器和/或 cookie header 的严格性有关吗?

关于oauth - 在不同域上对 API 后端进行身份验证的正确方法? (第 3 方 cookie),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18515460/

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