问题标签 [oauth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5539 浏览

c# - 如何使用 oAuth 令牌

我正在使用库来获取“oAuth_token”和“oAuth_token_secret”。

如果我向 REST Web 服务发出请求,如何利用这两个密钥来验证身份验证?

0 投票
2 回答
2006 浏览

asp.net - 如何调试访问 OAuth 安全 API 的 ASP.Net 应用程序?

我知道必须有一个明显的解决方案来解决这个问题,但我很想念它,所以我非常感谢有人启发我,所以我不会转动我的轮子......

我正在编写一个 ASP.Net 应用程序,它将与服务 API(特别是 Evernote)进行交互。Evernote 需要 OAuth 以确保安全,在我实际与需要获取令牌的对象交互之前。

工作流程是这样的(像其他人一样向自己解释!):

  1. 使用我的开发 api 密钥和密钥以及其他一些 OAuth 内容构建一个 url,将其发送到 Evernote 以请求访问令牌。
  2. 将 url 作为请求发送到 Evernote,并从响应中提取新的访问令牌
  3. 使用访问令牌构建另一个 url 以请求用户的身份验证令牌。此 url 转到用户必须与之交互才能登录的页面(如果他们尚未登录),然后授权我的应用程序访问他们的帐户。我构建的 url 的最后一个参数是一个回调 url,它将从 Evernote 的服务器中调用。
  4. 如果一切顺利,Evernote 将请求回调 url 并包含新的身份验证令牌作为参数。
  5. 一旦我的服务器收到带有嵌入令牌的回调,我就可以使用它,以便我的应用程序可以与用户在后续请求中的注释进行交互。

问题是我在本地机器上编写这个应用程序,而不是公共域下的 ISP。所以我的回调是本地主机服务器。当然,localhost 是相对的,所以 Evernote 无法解析我的回调……我无法同时接收到身份验证令牌并进行调试。

必须有解决这个问题的方法,因为这种身份验证模型不是 Evernote 独有的(从长远来看……Flickr 使用它,就像许多其他服务一样)。那么有人可以告诉我如何设置,以便我可以获得身份验证令牌并仍然能够在我的本地机器上进行调试吗?

非常感谢您的帮助!

0 投票
12 回答
149844 浏览

web-services - 如何验证 Google 身份验证 API 访问令牌?

如何验证 Google 身份验证访问令牌?

我需要以某种方式查询 Google 并询问:[给定访问令牌] 对 [example@example.com] Google 帐户有效吗?

精简版

很明显,通过Google Authentication Api :: OAuth Authentication for Web Applications提供的访问令牌如何用于从一系列 Google 服务请求数据。目前尚不清楚如何检查给定的访问令牌是否对给定的 Google 帐户有效。我想知道怎么做。

长版

我正在开发一个使用基于令牌的身份验证的 API。在提供有效的用户名+密码或提供来自N个可验证服务中的任何一个的第三方令牌时,将返回一个令牌。

其中一项第三方服务将是 Google,它允许用户使用他们的 Google 帐户对我的服务进行身份验证。稍后将扩展到包括 Yahoo 帐户、受信任的 OpenID 提供商等。

基于 Google 的访问的示意图示例:

替代文字

“API”实体在我的完全控制之下。“公共界面”实体是任何基于 Web 或桌面的应用程序。一些公共接口在我的控制之下,其他的不会,还有一些我可能永远都不知道。

因此,我不能信任在第 3 步中提供给 API 的令牌。这将与相应的 Google 帐户电子邮件地址一起提供。

我需要以某种方式查询 Google 并询问:此访问令牌对 example@example.com 有效吗?

在这种情况下,example@example.com 是 Google 帐户的唯一标识符 - 某人用于登录其 Google 帐户的电子邮件地址。这不能被假定为 Gmail 地址 - 有人可以拥有 Google 帐户而没有 Gmail 帐户。

Google 文档清楚地说明了如何使用访问令牌从许多 Google 服务中检索数据。似乎没有任何说明如何首先检查给定的访问令牌是否有效。

更新 令牌对 N 个 Google 服务有效。我无法针对 Google 服务尝试使用令牌来验证它,因为我不知道给定用户实际使用的所有 Google 服务的哪个子集。

此外,我永远不会使用 Google 身份验证访问令牌来访问任何 Google 服务,只是作为一种验证假定的 Google 用户实际上是他们所说的人的手段。如果有另一种方法可以做到这一点,我很乐意尝试。

0 投票
5 回答
2034 浏览

php - 你如何管理 api 密钥

我正在考虑构建一个 API,并且正在考虑使用 oauth 来管理对 api 的访问,但我正在做的更多的是一个 b2b 系统,它允许企业访问数据以将其合并到他们的站点中。一开始我不会有任何b2c。

所以 oauth 对我来说似乎不是正确的工具,我一直在寻找有关构建基于密钥的系统的资源,但没有遇到任何问题。

那里已经有东西了吗?最好只创建一些用户提交的数据的哈希或类似的东西?

0 投票
6 回答
109642 浏览

rest - REST 身份验证方案的安全性

背景:

我正在为 REST Web 服务设计身份验证方案。这并不“真的”需要安全(它更像是一个个人项目),但我想让它尽可能安全,就像锻炼/学习体验一样。我不想使用 SSL,因为我不想要麻烦,而且主要是设置它的费用。

这些 SO 问题对我开始特别有用:

我正在考虑使用简化版本的Amazon S3 身份验证(我喜欢OAuth,但它似乎对我的需求来说太复杂了)。我将服务器提供的随机生成的nonce添加到请求中,以防止重放攻击。

要解决这个问题:

S3 和 OAuth 都依赖于对请求 URL 以及一些选定的标头进行签名。他们都没有为 POST 或 PUT 请求签署请求正文。这是否容易受到中间人攻击,它保留 url 和 headers 并用攻击者想要的任何数据替换请求正文?

似乎我可以通过在签名的字符串中包含请求正文的哈希来防止这种情况。这安全吗?

0 投票
2 回答
5971 浏览

oauth - OAuth 可以与手机应用程序一起使用吗?

我们可以在没有可用浏览器的手机上的应用程序中使用 OAuth 吗?

如果没有浏览器,用户是否仍然可以批准令牌请求(以便消费者可以继续从服务提供者那里获取受保护的资源)?

0 投票
7 回答
19041 浏览

python - 如何在本地针对 OAuth 进行开发?

我正在构建一个需要与 OAuth 服务提供者通信的 Python 应用程序。SP 要求我指定回调 URL。指定 localhost 显然是行不通的。我无法设置面向公众的服务器。除了支付服务器/托管费用之外还有什么想法吗?这甚至可能吗?

0 投票
6 回答
12775 浏览

python - 在 Twitter OAuth POST 请求上获取 401

我正在尝试使用 Twitter OAuth,但我的POST请求因401( Invalid OAuth Request) 错误而失败。

例如,如果我想发布一个新的状态更新,我将发送一个 HTTPPOST请求,https://twitter.com/statuses/update.json并带有以下参数 -

我的GET要求一切正常。我可以在邮件列表中看到很多人都遇到过相同的问题,但我在任何地方都找不到解决方案。

我正在使用oauth.pyPython 库。

0 投票
4 回答
23411 浏览

authentication - 使用 OAuth 进行服务器到服务器身份验证?

我目前正在努力指定我公司的新合作伙伴/公共 API,这将是一个面向资源的 RESTful Web 服务。目前缺少的一块拼图是身份验证/授权。

要求是:

  1. 最初它必须适用于服务器到服务器的环境,例如,服务器应用程序必须能够识别自己,以便我们知道谁在调用 API。
  2. 将来,我们希望允许它模拟用户帐户,因此除了被识别的服务器之外,它还将拥有一个在有限时间内代表用户帐户的令牌。

OAuth 似乎非常适合 (2) 的工作流程,即获取令牌、重定向到用户输入其凭据以对其进行授权的网站,然后使用该令牌来识别/验证应用程序和用户。

但是,根据我的阅读,我不知道它是否适合 (1) - 即是否有任何方法可以使用 OAuth来识别调用应用程序而无需有效的用户特定令牌,因此不需要被重定向到一个网页让他们输入他们的凭据?

0 投票
1 回答
361 浏览

binary - oauth 指南中的“8 位数组”是什么意思?

oauth 的初学者指南说:

二进制数据不直接由 OAuth 规范处理,而是假定存储在非 UTF-8 编码的 8 位数组中。

我不明白这是什么意思?如何将二进制存储在 8 位数组中?关于位数组的维基百科文章对我没有帮助。