问题标签 [doorkeeper]

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 回答
378 浏览

ruby-on-rails - 使用 Oltu 连接到 Doorkeeper

我正在尝试针对作为运行Doorkeeper的 OAuth2 提供程序运行的rails 应用程序进行身份验证。

我正在尝试修改Oltu来源的示例。我目前拥有的代码是:

当我使用原始 Facebook 凭据运行此示例时,它会将我带到允许身份验证的页面。当我使用我的 rails 应用程序时,我得到一个表单的 url:

当我在浏览器中输入这个时,我被转发到重定向 uri,然后是:

当我在提示符处输入代码时,出现以下错误:

针对 Facebook 进行身份验证时,我没有收到该错误。关于我做错了什么的任何想法?

0 投票
1 回答
1086 浏览

ruby-on-rails - 门卫限制应用范围

我有一个门卫提供商,我需要添加一些并非所有应用程序都可以使用的范围。我想将令牌可以要求的范围限制为应用程序可以访问的范围。

因此,例如,应用程序 A 是一个可以“访问”xyzabc范围的应用程序,但应用程序 B 只能“访问”范围abc

来自应用程序 B 的所有访问令牌都可能需要abc范围,但不能要求范围xyz。来自应用程序 A 的访问令牌可能具有这些范围中的任何一个(或两者)。

有什么办法可以阻止应用程序 B 请求范围xyz?或者你将如何实现这一点?

非常感谢!

0 投票
1 回答
5958 浏览

authentication - OAuth2 资源所有者密码凭证流程

OAuth2 资源所有者密码凭证流程是否只需要以下信息进行身份验证:

还是它也需要client_idand client_secret?我问,因为我想将Ember-Simple-AuthDoorkeeper一起使用。两者都实现了流程,但 Ember-Simple-Auth 没有使用client_idand client_secret,而 Doorkeeper 需要该信息才能工作。所以我认为其中之一没有正确实现 OAuth2 规范。

编辑1:

我之前也看过规范,但我想确定,在我为 Doorkeeper gem 填写错误报告之前,规范中也有这一部分:

如果客户端类型是机密的或客户端已获得客户端凭据(或分配了其他身份验证要求),则客户端必须向授权服务器进行身份验证,如第 3.2.1 节所述。

编辑 2

在查看 ember-simple-auth 的测试时,我看到它还测试请求参数client_idclient_secret. 因此,我更深入地研究了代码,并了解了如何设置 id 和 secret。

编辑 3

由于在 Ember-SimpleAuth 中进行了重大重构,Edit 2 中显示的解决方案不再起作用。但是门卫也发生了变化,现在client_idclient_secret可选的。

0 投票
0 回答
431 浏览

ruby-on-rails - 无法理解使用 Devise、RocketPants、Doorkeeper 创建 API 的方案

我正在开发网站并决定将后端(rails)和前端(angularjs)分开。一切都很顺利,直到我尝试通过 JSON 实现身份验证。我找到了大量关于如何使用设计或门卫来实现它的材料,但我不明白如何将它们组合在一起。(API 用 RocketPants 实现)

据我所知,我应该从前端发送登录信息并传递 init,取回 authtoken(步骤 1)。然后在每次通话时,我都应该发送带有其他数据的 authtoken(步骤 2)

第 1 步:Doorkeeper 重定向到登录页面。我是否应该修改控制器以使其到达控制器,该控制器将处理身份验证(通过使用warden.authenticate!)?从那一刻起,Doorkeeper 怎么知道我已经登录?(给我授权)

在第 2 步:Authtoken 是每个用户和每个应用程序的个人,它使用 API,对吗?所以我应该以某种方式指定来自哪个应用程序请求,不是吗?"

注意:后端将只是 API,所以一切都应该由 JSON 请求处理。但是我如何修改可用的应用程序呢?在 Doorkeeper 上再添加一个自定义控制器?

提前谢谢,我希望,我不是唯一一个有这样问题的人=)

0 投票
0 回答
258 浏览

ruby-on-rails - ActiveModel::ArraySerializer 和 Doorkeeper gem 交互

所以我正在尝试使用rails 4和ruby 2.0.0 ActiveModelSerializer gem(0.8.1)和Doorkeeper gem(实际上是fork(https://github.com/simonbnrd/doorkeeper)来构建rails API应用程序使用这个游戏mongoid 4,但我不认为是这样)。当我启动我的应用程序并使用 ActiveModel::ArraySerializer 创建新对象然后尝试将其呈现为 json - 一切正常。但是,如果我在调用方法(来自 Doorkeeper gem)之后执行相同的操作序列,Doorkeeper::TokensController.create 渲染到 json 应用程序突然返回字符串。试图调查这个问题我找不到 to_json 方法的源代码位置。

这返回

在门卫打电话之前

0 投票
4 回答
10847 浏览

ruby-on-rails - 使用凭据创建新用户,然后在 API 中使用 Doorkeeper 为该用户获取令牌

我正在构建一个受 Doorkeeper 保护的 API。

如果我在后端手动创建用户(带密码),然后将以下内容发布到oauth/token,Doorkeeper 成功为用户生成访问令牌并返回它:

但是,我正试图弄清楚如何进行注册流程。

就创建用户和密码而言,我很高兴开始users/create工作,但我不确定下一步如何生成 Doorkeeper::AccessToken 并将其返回给客户端。理想情况下,在 user#create 操作中创建用户后,我会oauth/token使用用户名和密码重定向到 POST to ,但我知道您无法重定向到 POST。

我对 Doorkeeper 源代码进行了挖掘,但对所有这些聪明的中间件有点迷失了。非常感谢您对此的任何建议!

0 投票
2 回答
4894 浏览

ruby-on-rails - 门卫撤销令牌

我正在我的应用程序中实现 OAuth 2,并且我已经拥有登录/刷新令牌,但是我在注销时遇到了一些麻烦。

我有这组由 Doorkeeper 生成的路由:

我想要做的是撤销服务器中的令牌,所以我认为我必须调用的服务是“删除/授权”对吗?但我尝试了很多不同的方式来使用这些服务,我只发现错误。

顺便说一句,我不知道撤销服务器中的令牌还是只从应用程序中删除它是否正确?

PS:我在 iOS 7 中为我的客户端使用 AFNetworking 2。

0 投票
1 回答
2938 浏览

ruby-on-rails - Doorkeeper /oauth/token - 空白响应

我在 AngularJS 中有一个前端,在 RoR 中有一个带有 Devise + Doorkeeper + RocketPants 的后端。现在我有正常工作的 CORS,我可以成功地从我的 API 获得 json 响应(如果我关闭门卫保护)。但现在我正在尝试实现用户密码凭证流程:

关于门卫:

在 angularjs (src: nils-blum ) 上:

注意:Nils 的方法使用有效负载作为带有参数的对象,而不是字符串。就我而言,它给了我带有有效负载的 POST,而不是带有 FORM 参数,因此无法正常工作。

当我输入错误的用户/密码时,rails 日志显示:

Chrome 开发工具将此请求显示为已取消。Firebug 显示 302 Found 状态的空响应。当我从 chrome REST App执行相同的 POST 时,UPD: server 执行相同的操作,我得到 302 Found 然后它被重定向到设计的登录页面。

此外,如果我输入正确的用户/密码,firefox 会显示 200 OK 的空响应,REST 会收到带有访问令牌的正确 json,chrome 会显示取消响应并抛出 CORS 错误:

服务器日志:

我怎样才能使这项工作?如果电子邮件/密码正确,我需要 POST /oauth/token 来处理身份验证并使用 access_token 进行响应。任何帮助表示赞赏,我厌倦了被困在这个问题上)

0 投票
1 回答
1152 浏览

ruby-on-rails - resource_owner_id 未填充

我正在尝试使用 Doorkeeper gem 来保护我的 API。

我的代码如下所示:

初始化程序/doorkeeper.rb

以下是我用来连接我的 API 的命令:

... 和 ...

哪个工作正常,但我的问题是,返回的 Token 对象有一个空resource_owner_id参数(在创建令牌时,此列未填充到数据库中)。你知道我在做什么错吗?我一直在关注这些教程:

0 投票
1 回答
442 浏览

google-chrome - Chrome 扩展中的 OAuth 在最近的 Chrome 版本中被破坏

我们的 Chrome 扩展程序已经完美运行了几个月,但最近由于 oauth 失败而中断。我们正在使用我们自己的 oauth 端点(通过门卫)。这种行为很疯狂——当你点击扩展按钮时,整个窗口会被最小化,当你把它带回前台并接受 oauth 提示时,扩展弹出窗口会在屏幕上冻结,即使你切换选项卡也会停留在那里。它不进行身份验证,并且对端点的后续调用在查询字符串中具有“access_token=undefined”。关闭整个选项卡是摆脱冻结窗口的唯一方法。

扩展 ouath 来自https://github.com/borismus/oauth2-extensions。我在最近版本的 Chrome 中读到过类似的问题,原因是对清单的不同要求——我们的问题如下。如果我完全删除身份验证,扩展程序工作正常。

几天来我一直在反对这个问题,非常感谢任何帮助。

更新:popup.html 包含一个名为 tracker.js 的文件,其中包含以下代码。根据我在下面的评论,删除它可以解决冻结问题。