OAuth2 变量redirect_uri

2024-05-19

我们正在编写一个与 OAuth2 API 集成的插件。

棘手的部分是,我们无法像大多数集成中那样对重定向 URI 进行硬编码,因为客户端可以在他们控制的任何域上安装此插件(例如 Wordpress 插件),并且访问令牌需要重定向回其自定义 url。

我们看到您可以设置stateOAuth2 中也有参数。所以我们可以将重定向 URI 硬编码为http://oursite.com/callback并设置一个状态https://[CUSTOM_URL].

Then http://oursite.com/callback将额外重定向到自定义 URL,并传递访问令牌。

然而,这似乎是一个安全漏洞,因为一旦用户对应用程序进行了身份验证,其他人可能会出现并导致它使用自己的 url 重新进行身份验证state参数。然后它会很高兴地重定向到他们的错误网址并向他们传递访问令牌。

那么,人们如何在redirect_uri 可能变化的情况下设置OAuth2 集成呢?谢谢!

附:我们想到的一种解决方案是only允许state如果重定向 uri 是我们控制的 url,则使用此参数。然后我们可以创建另一个验证页面,再次提示用户:“是否允许https://customurl.com https://customurl.com访问您的帐户...”。但我们认为可能有更好的方法。


对于动态客户端地址,可能值得考虑使用基于本地主机的重定向 URI。这听起来可能违反直觉,但由于 OAuth2 是基于浏览器/httpclientlib 的协议,因此它是有效的。来自服务器授权端点的重定向是由您自己的浏览器完成的,因此 localhost 作为redirect_uri 始终能够正确解析。因此,无论您在何处部署应用程序,您仍然可以修复redirect_uri。

该解决方案也有其含义,您应该考虑架构和安全后果。基于本地主机的redirect_uri非常适合隐式授予场景(即javascript客户端),但我认为对于授权代码授予场景(即远程Web应用程序),您应该使用远程可访问的主机名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OAuth2 变量redirect_uri 的相关文章

随机推荐

  • 用于渲染 html 子集的 Django templatetag

    我有一些 html 在本例中是通过 TinyMCE 创建的 我想将其添加到页面中 但是 出于安全原因 我不想只打印用户输入的所有内容 有谁知道模板标签 最好是过滤器 只允许呈现 html 的安全子集 我意识到 Markdown 和其他人就是
  • Mercurial 合并的默认主干版本?

    当我们将 Mercurial 功能发布存储库中的更改合并到主干存储库时 我们总是会与 Maven POM 文件 pom xml 和 Mercurial hgtags 文件发生冲突 我们总是想保留主干版本 我们永远不需要功能发布存储库版本 有
  • 在网格中制作一个矩形图例,并标记行和列

    我有一个 ggplot 我将因子映射到填充和 alpha 如下所示 set seed 47 the data lt data frame value rpois 6 lambda 20 cat1 rep c A B each 3 cat2
  • 确保在 main() 之前调用静态方法

    我有一个工作类的集合 并且我需要能够使用单个工厂动态构造这些类的实例 其背后的原因是 新的工人类被频繁编写 我不想每次添加新的工人类时都必须更新每个工人类型的工厂类 目前的工作方式如下 我有一个名为WorkerImplementationL
  • 在 C# 中创建加密随机数的最快、线程安全的方法?

    请注意 在多个线程上并行生成随机数时 加密随机数生成器不是线程安全的 使用的发电机是RNGCryptoServiceProvider它似乎重复了很长一段随机位 128 位 重现此情况的代码如下所示 缺乏使用锁来保护访问RNGCryptoSe
  • html canvas动画卡顿

    谁能解释为什么提供的画布动画断断续续 我创建了一个测试存根来演示该问题 我在桌面上的 FF Chrome IE 以及 Android 上的 FF 和 Chrome 中看到了卡顿现象 口吃是由于垃圾收集造成的吗 似乎 raf 在每次调用时都会
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0
  • 如何解决 https://kubernetes-charts.storage.googleapis.com”不是有效的图表存储库

    我正在开发 helm 2 并尝试将 Tiller 部署为 pod gt helm init service account tiller 但我遇到以下错误 错误 初始化错误 看起来像 https kubernetes charts stor
  • GetFields 派生类型

    我试图反映派生类型中的字段 但它返回的是 基础类型 public class basetype string basevar public class derivedtype basetype string derivedvar 在某些函数
  • 如何防止 RealmSwift 列表中出现重复项?

    如何防止向列表中添加重复项RealmSwift 我有我的User作为领域对象 但真正的数据源是服务器 只是使用领域在本地缓存用户 当我从服务器获取当前用户数据时 我想确保存储在领域中的用户拥有来自服务器的所有播放列表 以及它们的曲目列表等
  • 如何在 sqlite 中将 2 列合并为新列

    我有一个包含 3 列的表 我必须将 2 列中的值按降序排列到一列中 A B C z 1 2 f 5 7 s 9 5 使用此示例 输出会将 B 列和 C 列中的值放入其中 如下所示 A B s 9 f 7 f 5 s 5 z 2 z 1 我当
  • “同时创建 xib 文件”按钮已禁用

    我在创建时遇到这个问题UIView s子类 创建 例如 UIViewControllers or UITableViewCells没关系 为什么会出现这种情况 I create view using cmd N and Xcode Vers
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • 如何制作 tumblr 风格的个人资料 url

    我想知道 tumblr 是如何做到这样的个人资料网址 http www username tumblr com http username tumblr com 我知道我们可以更改个人资料网址 http www website com pr
  • 在数据流模板中调用 waitUntilFinish() 后可以运行代码吗?

    我有一个批处理 Apache Beam 作业 它从 GCS 获取文件作为输入 我的目标是根据执行后管道的状态将文件移动到两个 GCS 存储桶之一 如果管道执行成功 则将文件移动到存储桶 A 否则 如果管道在执行过程中出现任何未处理的异常 则
  • 如何管理AWS ECS中docker镜像的版本?

    AWS ECS 服务指向一个任务定义 其中包含 docker 镜像的名称 包括标签 因此 当我创建新版本的 docker 映像时 我有两种可能性 将任务定义更新到新版本 然后更新服务以指向任务定义的新版本 使用一些标签指向最后一个版本 假设
  • 使用 ANTLR 为 java 源代码生成抽象语法树

    如何使用 ANTLR 从 java src 代码生成 AST 有什么帮助吗 好的 步骤如下 前往ANTLR站点 http www antlr org 并下载最新版本 下载Java g和JavaTreeParser g文件来自here htt
  • C++11 Geany 设置

    我正在学习 C 我需要在 Geany 中为 C 11 正确设置编译和构建命令 我以为我的理解是正确的 但是当使用时auto 我收到以下错误 warning auto will change meaning in C 0x please re
  • Flask 中“缺少 CSRF 令牌”,但它在模板中呈现

    问题 当我尝试登录 使用 Flask login 时 我得到Bad Request The CSRF session token is missing但令牌正在呈现 在模板中 secret key 已设置 并且我在本地运行localhost
  • OAuth2 变量redirect_uri

    我们正在编写一个与 OAuth2 API 集成的插件 棘手的部分是 我们无法像大多数集成中那样对重定向 URI 进行硬编码 因为客户端可以在他们控制的任何域上安装此插件 例如 Wordpress 插件 并且访问令牌需要重定向回其自定义 ur