gpt4 book ai didi

node.js - OAuth 2.0 : Allowing for Client-Side (Implicit/Javascript) Authentication in a node. js/快速 API

转载 作者:搜寻专家 更新时间:2023-11-01 00:46:10 24 4
gpt4 key购买 nike

我在 node.js(w/Express)中构建了一个 API,目前支持 OAuth 2.0 服务器端(显式)身份验证。我想允许客户端通过 javascript 库(客户端隐式身份验证)连接到应用程序。

首先,我知道我需要 enable CORS on my server .

我目前对隐式身份验证问题的理解是,我们不能要求 javascript 客户端在请求中包含第三方应用程序的 secret ,因为这会涉及将 secret 编码到 javascript 中,这会带来安全风险(公开 key )。因此,从 javascript 客户端发出的请求仅使用应用程序 token (没有 secret )进行签名。为了保证 API 端的安全性,我们必须将服务 javacsript 的域与其声称代表的第 3 方应用程序的注册域进行匹配。

换句话说,听起来这个过程在 API 端是这样工作的:

  1. 如果传入请求缺少第 3 方应用程序的“ secret ”,请检查请求 header
  2. 如果 header 确认请求是代表针对此第 3 方应用程序注册的域名发出的,则认为该应用程序已通过验证(并继续验证 access_token,如果提供的话)。

我的困惑是:

请求 header 不能被欺骗吗?我如何确定发出请求的 javascript 客户端确实驻留在它声称的域中?

最佳答案

您应该能够信任浏览器以防止客户端更改您在 header 中找到的引用信息。在这种情况下,大多数 API 都会乐于检查引荐来源网址。

这可以通过让您的服务器为客户端提供快速过期 token 来改进。 token 使用不公开的 secret 。

3rd party server asks for token using shared secret to your server
3rd party server serves token to its client
client makes request to your server providing referrer (assured by browser), and token
your server verifies both before replying

当然,如果有人使用命令行工具、浏览器扩展程序或服务器,他们将更容易在请求中发送他们想要的任何内容,但他们只有 token 过期的窗口, 如果您觉得客户端 ip 滥用服务,您可以随时禁止该 ip 地址。

关于node.js - OAuth 2.0 : Allowing for Client-Side (Implicit/Javascript) Authentication in a node. js/快速 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15368051/

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