为什么我们必须在 OAuth 中“更改令牌凭据的临时凭据”?

2024-05-11

服务器不能只是将临时凭证“升级”为令牌凭证并保留相同的密钥和秘密吗?

然后,客户端可以在收到服务器的回调(表明临时凭证已“升级”)后立即开始进行经过身份验证的调用。

当然,如果临时凭证尚未升级(即客户端不等待回调),则经过身份验证的调用将失败。

所以问题是为什么在回调之后要对服务器进行额外的调用以将临时凭证“交换”为令牌凭证?


You could以这种方式实现 OAuth,但据我了解,将请求令牌与访问令牌分开确实提供了额外的安全层。

来自初学者指南 http://hueniverse.com/2008/10/beginners-guide-to-oauth-part-iii-security-architecture/:

OAuth包括两种Token: 请求令牌和访问令牌。每个 代币在以下方面具有非常特殊的作用: OAuth 委托工作流程。尽管 主要是 OAuth 如何进行的工件 规范的演变,两个令牌 设计提供了一些可用性和 安全功能使其成为 值得入住 规格。 OAuth 运行在两个 通道:前置通道 用于吸引用户并请求 授权,并使用反向通道 由消费者直接交互 与服务提供商。通过限制 反向通道的访问令牌, 令牌本身仍然是隐藏的 来自用户。这允许访问 具有特殊意义的代币 尺寸大于 前通道请求令牌是 请求时向用户公开 授权,并且在某些情况下需要 手动输入(移动设备 或机顶盒)。

因此,据我了解,通过将访问令牌限制为直接在消费者(您的服务)和提供者(您要访问的服务)之间的通道,您可以获得安全的访问令牌(即,攻击者没有)即使用户的计算机或用户与您的服务的网络连接受到损害。如果请求令牌只是升级,那么任何嗅探用户网络连接的人都可以轻松获取请求/访问令牌,我们希望对其保密,因为它可以用于(当然,与您的消费者令牌一起),可能用于很长一段时间,访问用户的数据。服务器到服务器的连接通常更安全。

此外,正如上面指出的,这可以让您在请求令牌实际上必须由用户输入的情况下拥有更长的密钥(因此可能非常短)。

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

为什么我们必须在 OAuth 中“更改令牌凭据的临时凭据”? 的相关文章

  • WSGI 中的 httplib CannotSendRequest 错误

    我使用了两个不同的 python oauth 库和 Django 来通过 twitter 进行身份验证 该设置是在带有 WSGI 的 apache 上进行的 当我重新启动服务器时 大约 10 分钟一切正常 然后 httplib 似乎锁定了
  • 我可以查看当前登录的 Twitter 用户吗?

    他们没有通过我的网站进行 OAuth 验证 但在该浏览器上登录到 Twitter 有什么办法让我知道他们的 Twitter 用户名吗 饼干 什么 除非某些东西非常糟糕或者 Twitter 明确提供了用于此目的的 API 否则不会 至少不是通
  • Swift 2 OAuth2 LinkedIn 连接

    我将使用 Swift 2 和 Xcode 7 制作一个本机 iOS 应用程序 用户应该使用 LinkedIn 和 OAuth 2 登录 但我想知道应该如何开始设置 我对 OAuth 2 没有太多经验 有好的教程或示例应用程序吗 我看到了雷
  • Spring Boot - 使用 JWT、OAuth 以及单独的资源和身份验证服务器

    我正在尝试构建一个使用 JWT 令牌和 OAuth2 协议的 Spring 应用程序 我的身份验证服务器正在运行 感谢本教程 https medium com nydiarra secure a spring boot rest api w
  • 如何限制使用 Spring-Boot 和 OAuth2 登录特定域

    我已经使用 Spring Boot 和 Google 成功完成了 OAuth2 登录 但我想将登录限制到特定域 我们正在使用 Google Apps for Work 我认为我应该通过扩展类 OAuth2ClientAuthenticati
  • OAuth 同意屏幕未显示

    最近在我的本地开发中实现了 Google 登录 一切工作正常 除了当我选择我的 Google 帐户之一登录时 同意屏幕不会显示 它确实获得了授权 因为我可以在中看到我的网站连接到您帐户的应用程序我的帐户部分 我已经配置好了OAuth 同意屏
  • 如何允许应用程序声明“https”方案 URI? (即如何从 https URL 打开桌面应用程序?)

    目前我正在尝试为 OAuth 2 0 授权流程创建一个客户端 实际上是一个本机应用程序 并且在规范中就在这儿 https www rfc editor org rfc rfc8252 section 7 2据说有 3 种方法来处理重定向 U
  • Paypal Rest API - 来自批准 URL 的令牌生命周期

    我使用 Paypal Rest API 我的问题是 有多长token来自批准 URL 有效吗 我想将此令牌 也包含我的令牌 存储到数据库并生成带有我的令牌的链接 稍后 如果我单击此链接 将我的令牌替换为 paypal 令牌 我想重定向到 p
  • 从 Delphi 访问 TRAKT API - 承载身份验证问题

    使用 TOauth2Authenticator TRESTClient TRESTRequest TRESTResponseDataSet TRESTResponse TFDmemtable 和 TDataSource 我成功连接到 Tra
  • 如何保护 ASP.NET Web API [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想建立一个RESTful使用 ASP NET Web API 的 Web 服务 第三方开发人员将使用该服务来访问我的应用程序的数据
  • facebook /v2.1/oauth/authorize 不重定向到 /v2.1/dialog/oauth

    我尝试将 canvas app 移至 v2 1 api 因此 当用户授权该应用程序时 我发送 协议 graph facebook com v2 1 oauth authorize client id XXXX scope redirect
  • Google API OAuth 2.0 Titanium:缺少必需的参数:response_type

    我正在尝试在 Titanium 应用程序中从 Google 获取 access token 来访问 Google API 我已经注册了一个Android Oauth2 0客户端谷歌 API 控制台 https www rfc editor
  • 使用以太坊 RPC 获取代币余额?

    如何通过以太坊RPC显示代币余额 id 0 data array data jsonrpc 2 0 data id id data method eth call data params from gt 0x0 to gt 0x0 data
  • 尝试获取 Box api 令牌时凭证无效

    这是我的问题 我按照 youtube 上发布的说明进行操作 通过 2 个快速步骤获取 Box 访问令牌 使用client id and client secret由盒子提供 步骤1 获取auth code 我在 Firefox 中复制并粘贴
  • oauth2-proxy 身份验证调用在 kubernetes 集群上运行缓慢,并带有 nginx 入口的身份验证注释

    我们使用以下描述的方法在 K8S 集群上保护了一些服务的安全这一页 https kubernetes github io ingress nginx examples auth oauth external auth 具体来说 我们有 ng
  • 使用字符串路径设置嵌套数组数据[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个不寻常的用例 目标是这样的 我希望客户能够提供一个字符串 例如 cars honda civic On 使用这个字符串 我的代码将设置一个值 如下所示 data cars honda civic
  • Facebook OAuth 登录停止工作

    在我的网站中 我使用 oauth 通过 google twitter 和 facebook 登录 24 小时后 我注意到 Facebook 登录不再有效 当我尝试登录时收到以下错误消息 无法加载 URL 此 URL 的域不包含在应用程序的域
  • 身份验证中的随机数使用

    在基于摘要的身份验证中 随机数由服务器生成 然而 在基于 OAuth 的身份验证中 随机数是由客户端生成的 我想知道是否有人知道差异的原因 随机数用于使请求唯一 在没有随机数的身份验证方案中 恶意客户端可以生成一次请求并重放多次 即使计算成
  • 为移动应用程序创建 API - 身份验证和授权

    Overview 我正在寻找为我的应用程序创建一个 REST API 最初 主要目的是供移动应用程序 iPhone Android Symbian 等 使用 我一直在研究基于 Web 的 API 的身份验证和授权的不同机制 通过研究其他实现
  • 使用 Oauth2 的 EWS java api

    我想为我的应用程序使用 Oauth2 身份验证 我想使用 EWS Java api 从 O365 获取数据 是否可以 文档http blogs msdn com b exchangedev archive 2014 09 24 105108

随机推荐

  • jwt.io 上的“秘密 Base64 编码”是什么意思以及如何使用 `openssl dgst` 模拟它

    我尝试从 jwt io 获得相同的输出openssl 只要我这样做not mark 秘密base64编码 我可以把签名之前的部分 运行它 echo n pasted data from jwt io openssl dgst binary
  • 如何从网页启动 Windows 应用程序?

    我们有一个公司内部网 并且权力机构认为拥有一组代表大多数代表使用的应用程序 Outlook Excel 少数其他应用程序 的图标 链接会很好 这个想法是 如果安装了应用程序 单击链接 图标将在客户端计算机上启动该应用程序 有人曾经有过这样的
  • Android 浏览器是否在 touchStart 上锁定 DOM?

    我正在尝试构建一个包含 5 个块的菜单 用户可以在其中旋转 您可以在这里查看演示 http m iijax com menu php http m iijax com menu php 在 iPhone 上运行良好 有时有点迟缓 但这不是重
  • 用于移动 Web 应用程序的带有图表的框架

    我正在开发一个移动网络应用程序 我需要在饼图中表示一些数据 但是我没有找到任何好的框架来提供良好的选择并在移动设备上正常工作 我想知道一些框架 免费 这可以帮助我 如果您能给出一些基础示例 我会感到惊讶 我正在考虑使用 ajax 技术来显示
  • 如何在 macOS 上的 SwiftUI 中设置拖动图像

    我正在尝试更改 GridView 的默认拖放预览图像 该图像似乎包含网格中的所有可见项目 据我了解 我应该能够设置NSItemProvider previewImageHandler块来自定义所使用的图像 我似乎找不到任何关于返回自定义图像
  • DataContext.CreateDatabase() 表示文件已存在 - 但事实并非如此

    这可能是 Windows 7 问题 但调用 using var context new DataClassesDataContext if context DatabaseExists context CreateDatabase 结果出现
  • C# WPF 如何动态设置属性设置方法?

    我一直在四处寻找 但似乎找不到我要找的东西 所以我会在这里尝试一下 情况 我有 MainWindow 和 MainWindowData 类 MainWindowData 中只有使用 UpdateGUI 属性定义的公共属性 public cl
  • SQL Server、ISABOUT、加权项

    我试图弄清楚加权项在 SQL SERVER 的 ISABOUT 查询中是如何工作的 这是我目前所在的位置 每个查询返回以下行 查询 1 权重 1 初始排名 SELECT FROM CONTAINSTABLE documentParts ti
  • 如何加快列表理解速度

    以下是我的清单 col red yellow blue red green yellow pink orange brown pink brown 我的目标是消除每个列表中出现一次的项目 这是我的代码 eliminate w for w i
  • python 函数是否应该总是返回一些值?

    当我开始使用 python 编码时 一位高级开发人员建议我放置一个return True 一般为布尔值 每当函数的作用域结束时 例如 def mytest try os system convert text pdf text jpg ex
  • Haskell 类型系统的细微差别

    我一直在深入了解 haskell 类型系统的本质 并试图了解类型类的要点 我已经学到了很多东西 但我在下面的代码片段上遇到了困难 使用这些类和实例定义 class Show a gt C a where f Int gt a instanc
  • getActivity() 是什么意思?

    什么是getActivity 意思是 我在某个地方看到 他们写道MainActivity this startActionMode mActionModeCallback 代替getActivity 有人能解释一下这两行是什么意思吗 som
  • 如何在 git 中删除 subversion 远程?

    我有一个最初使用 git svn 创建的 git 存储库 现在我有一个推送到的 git 服务器 但 svn 存储库已丢失 我可以删除 svn 远程吗 如何 您可以编辑 git config文件并删除与要删除的遥控器关联的部分 您要删除的行可
  • 比较两个包含对象的数组以计算发生了什么变化?

    使用平面 JavaScript 或使用 lodash 最简单的方法是什么 希望 lodash 有一个函数 我比较以下数组并返回已更改的值 Before id 0 name Bob age 27 id 1 name Frank age 32
  • 在 while 循环中使用 getchar() 打印一条语句两次..如何?

    我有一个非常简单的程序 如下所示 int main int opt int n int flag 1 while flag printf m inside while Press c to continue n if opt getchar
  • Environment.WorkingSet 错误地报告内存使用情况

    Environment WorkingSet 错误地报告在 Windows 2003 Server 上运行的网站的内存使用情况 操作系统版本 Microsoft Windows NT 5 2 3790 Service Pack 2 NET
  • 数据包无序。得到:80 预期:0 node.js

    这是我的 非常简单 代码 var connection mysql createConnection infosDB connection connect connection query SELECT FROM action functi
  • 安装 npm 包时自动安装类型定义

    有没有办法配置npm以这样的方式 每当我安装一个包时 它都会 检查里面是否有类型定义 如果没有 请尝试安装 types PACKAGE与 save dev flag 理想情况下 我希望这能够自动发生 作为插件或其他东西 而不需要编写限制 A
  • linux下如何获取昨天和前天?

    我想在变量中获取 sysdate 1 和 sysdate 2 并回显它 我正在使用下面的查询 它将今天的日期作为输出 bin bash tm date Y d m echo tm 如何获取昨天和前天的日期 这是另一种方法 对于昨天来说 da
  • 为什么我们必须在 OAuth 中“更改令牌凭据的临时凭据”?

    服务器不能只是将临时凭证 升级 为令牌凭证并保留相同的密钥和秘密吗 然后 客户端可以在收到服务器的回调 表明临时凭证已 升级 后立即开始进行经过身份验证的调用 当然 如果临时凭证尚未升级 即客户端不等待回调 则经过身份验证的调用将失败 所以