问题标签 [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 投票
0 回答
464 浏览

ruby-on-rails - 根据用户角色使用设计设置不同的自定义提供程序 oauth 范围

根据 doorkeeper docs,我正在为API 用户提供 OmniAuth 策略。这是为了允许客户端应用程序的某些用户在 APi 上写入/编辑权限。使用范围的门卫 wiki说,如果您的客户端应用程序正在请求授权 URI,您可以执行以下操作:

其中 public 和 write 是范围(例如,用于公共访问和写访问)。

看起来这样做的方法是在 OmniauthCallbacksController 下面的设置方法中

在 setup 方法期间,request.env 可以看起来像这样,它正确传递了 scope 参数(注意:我通过命令行调试器添加了下面的“scope”参数)

但我希望能够做到这样的事情:

但是目前 Devise 没有定义 current_user (而且我在任何地方都看不到用户 ID)......关于如何在授权过程中的某个时刻找出用户的任何想法,以便我可以将正确的范围传递给 API ?

0 投票
1 回答
1159 浏览

angularjs - RestangularProvider.setDefaultHeaders 与 $http.defaults.headers.common['Authorization']

RestangularProvider.setDefaultHeaders$http.defaults.headers.common['Authorization']设置器之间真的有什么区别吗?

我有一个 AngularJS 应用程序,它与使用https://github.com/doorkeeper-gem/doorkeeper的 Rails 应用程序通信。当用户登录时,我正在设置 Athorization 标题。有什么理由选择一个而不是另一个?:-)

——马丁

0 投票
1 回答
1663 浏览

ruby-on-rails - 如何在门卫(oauth2)中进行仅限应用程序的身份验证

Twitter 对其 api 进行了仅限应用程序的身份验证:https ://dev.twitter.com/docs/auth/application-only-auth

Twitter 为应用程序提供了代表应用程序本身(而不是代表特定用户)发出经过身份验证的请求的能力

我想对 Rails 中的门卫做同样的事情,但我不知道该怎么做。似乎只能通过回调 url 对用户进行身份验证,但是如何使用应用程序上下文访问我的 API(仅通过使用应用程序 ID 和应用程序密钥)

我的第一个想法是使用应用程序的 ID 和密码进行密码凭据登录,以获得属于应用程序的访问令牌。这是一个坏主意吗?从安全的角度来看,它安全吗?我想知道,因为应用程序的秘密在数据库中保存为纯文本,这对于用户身份验证来说是不行的。

0 投票
0 回答
1762 浏览

ruby-on-rails - 在没有其他 gem 的情况下配置门卫的 resource_owner_authenticator

我目前正在向 Rails 教程中的示例应用程序添加一个 RESTful API,并且我正在尝试使用门卫来保护它,而无需其他宝石,如设计或许可。我希望门卫根据现有会话对用户进行身份验证。当前的会话实现remember_token在浏览器 cookie 中保留 a(在登录时分配)并将散列令牌存储在 User 模型中。

current_user在模块中有一个方法SessionsHelper(app/helpers/sessions_helper.rb),它也包含在 ApplicationController 中:

这是resource_owner_authenticator(其他失败的实现被注释掉):

这是来自一个 GET 请求的错误:

首先,我想知道是否可以在没有设计或许可的情况下进行身份验证,即使可以,是否可取。其次,我不确定究竟有什么可用的Doorkeeper.configure- 是current_user?是饼干吗?如果有人能看到我在这里做错了什么,谢谢。我正在使用 Rails 4 和 Doorkeeper 1.4.0。

0 投票
0 回答
1565 浏览

ruby-on-rails - 授权我的 Rails 应用程序后出现 invalid_client oauth2 错误

我正在尝试使用 Rails 4.1 对 Oauth2 提供程序进行身份验证。在被重定向到授权/拒绝提示并单击授权后,我被重定向到我的回调 url 并遇到以下错误:

该错误是由 oauth2 gem 引发的,并且在开发过程中它永远不会到达我的 /auth/failure 端点。我的 routes.rb 如下

我的会话控制器只是一个骨架,但它永远不会像我之前所说的那样到达那里:

我确定我使用的 ID 和密钥有效(它们使用此工具https://www.runscope.com/oauth2_tool工作)。我使用由 Oauth 提供者实施的以下策略:

我怀疑它没有发送正确的 access_token 请求,但我还没有设法诊断它。任何帮助,将不胜感激。

0 投票
1 回答
649 浏览

ruby-on-rails - 使用 AngularJS 访问 API 时,Rails 请求内容类型似乎不正确

我有一个简单的 Rails 4.1.4 应用程序,我正在尝试将单独主机上的 AngularJS 应用程序连接到它的 API。虽然我访问它没有问题,但 Rails 似乎认为请求是 HTML 并忽略 Content-Type: 'application/json'

在我的 NG 应用程序中,我尝试了多种标头组合,包括:

NG 端的响应看起来不错,尽管在我的位置控制器中只有这个,但它用 JSON 响应:

我还设置(并测试未设置)cors 标题。

我在某处读到,如果其中有正斜杠,Rails 将不会读取内容类型标题...

虽然这似乎不会导致很多问题,但我确实认为它会干扰作为应用程序一部分的 Doorkeeper。

0 投票
1 回答
1071 浏览

ruby-on-rails - 通过 POST 撤销 Rails Doorkeeper 令牌

我们知道,如果我们为门卫使用资源所有者密码凭证流,则为 POST 生成的 JSON 参数基于此处的 URL :

我想通过 POST 对 /oauth/revoke 执行令牌撤销;因此,我需要哪些参数才能通过 JSON 执行 POST?

谢谢!

0 投票
2 回答
1602 浏览

ruby-on-rails - 对门卫重定向 URI 的通配符支持

我有一个使用 Oauth 2.0 的 Ruby on Rails 应用程序,使用 doorkeeper gem (1.3.0) 实现。

我正在尝试设置通配符重定向 uri(例如,http://*.mydomain.com/redirected)。然而,这似乎是不可能的。在 doorkeeper-mounted route /oauth/applications,如果我输入通配符 url 它会说Must be a valid uri.

是否有配置或方法来修补门卫以获得此功能?我需要 * 通配符在注册新应用程序期间通过验证,并且需要它在客户端授权端点上工作。

0 投票
1 回答
364 浏览

ruby-on-rails - 扩展 Doorkeeper TokenResponse 类

我需要扩展Doorkeeper::OAuth::TokenResponse类,因为我想向返回的数据添加一些东西。默认情况下,该类创建一个返回体,如下所示:

我想保留它并添加一个新字段:

我可以在没有猴子修补TokenResponse课程的情况下做到这一点吗?如果没有,我可以做些什么来改进我当前的实现(为了更好地兼容新版本的 Doorkeeper 等)?这是我当前的实现:

我确实对该功能进行了测试,所以我会知道升级 Doorkeeper gem 是否会破坏它。

0 投票
2 回答
3435 浏览

ruby-on-rails - 多个模型的 Doorkeeper 资源所有者凭证流

我遇到的问题是我正在使用门卫资源所有者凭据流来验证来自 iOS 应用程序的用户。我的项目有两个独立的用户模型(我们称它们为用户和管理员)。我的代码如下所示:

它可以工作,但我该如何检查管理员呢?换句话说,我不知道登录的人是用户还是管理员 - 我如何检查两者?