问题标签 [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.
ruby-on-rails - 如何通过三个应用程序使用 oauth 2.0 强制单点登录
我有一个 Angular 应用程序 (A),它成功地从使用 rails 4 和 doorkeeper gem (B) 实现的 oauth2 提供程序获取访问令牌。Angular 应用程序获得访问令牌后,需要将用户重定向到另一个 Rails 应用程序 (C),而不需要用户再次使用应用程序 B 进行身份验证。
如何绕过二次认证?
App C 当前有一个 /auth/callback 路由,它从 request.env['omniauth.auth'] 中读取 oauth2 令牌
App A 向 App B 发送请求,并在 Authorization 标头中传递 oauth2 访问令牌。
App C 还向 App B 发送请求,并在 Authorization 标头中传递 oauth2 访问令牌。
我在想 App A 会使用查询字符串中的访问令牌重定向到 App C。需要修改 App C 以从查询字符串中读取令牌。有没有更好的办法?
ruby-on-rails - 删除门卫添加的样式表
我安装了门卫,我没有做任何配置,也没有在我的 application.css 中包含任何门卫样式表,但仍然列出了门卫的样式表。
application.css 的内容:
我检查了 lib/assets/stylesheets,并且 vendor/assets/stylesheets 也没有看到任何门卫 css。如何删除如下生成的门卫 css:
我试图在门卫的 GIT 页面上阅读,但未能找到解决我的问题的方法。请帮忙。
ruby-on-rails - 如何将门卫访问令牌返回为 json
我正在尝试为 iOS 应用程序创建一个登录系统,该应用程序具有由设计和门卫提供支持的 rails 后端。
我想限制网络请求的数量,所以不想从凭据中获取令牌,然后将用户详细信息作为单独的请求获取。
这是我目前的尝试:
然而,返回的是:
因此,实际的 access_token 密钥不会被传回以允许我将来进行调用。我可以看到令牌本身没有返回DoorKeeper::AccessToken.as_json
,但token.as_json(:include=> token)
仍然没有返回它。
有谁知道如何以 json 形式返回 AccessToken,包括访问令牌本身?
ruby-on-rails - rails doorkeeper 以 500 响应某些应用程序设置
我在我的 ruby on rails 应用程序上使用门卫来实现 OAuth 功能。如果没有写入生产日志文件,门卫突然无法在生产模式下为某些 Doorkeeper::Application(我有三个 Doorkeeper::Application 设置)创建令牌,但昨天它工作正常。
每次在 POST "/oauth/token" 上,门卫都会为这个 Doorkeeper::Application 返回 500 页,但为另一个页返回 201。
当我在数据库中重新创建 Doorkeeper::Application 配置而不更改参数时,门卫开始使用这条新记录正常工作。
我正在使用带有门卫 v 0.6.7 的 postgres。
这是我的宝石文件:
门卫有什么问题?
ruby-on-rails - 带有 Doorkeeper 和 Angular 的 Oauth2 密码授予类型
我有一个 Rails API,它使用 Doorkeeper 和 Oauth2 的密码授予方法。
Doorkeeper 需要client_id
和client_secret
发送到令牌请求 ( /oauth/token
),以及用户的登录详细信息和范围。
我将如何在 Angular 应用程序中执行此操作?我不喜欢存储客户端 ID 和秘密客户端的想法......
ruby-on-rails - Ruby OAuth 'doorkeeper' gem 条件
我正在使用 doorkeeper gem 来使用令牌来验证请求。
当我按照如下定义配置了 doorkeeper_for 时,需要令牌,这是好的和预期的:
doorkeeper_for :all
当我将 doorkeeper_for 的条件设置为我真正想要的条件时(允许对本地部署端点的请求没有令牌)
doorkeeper_for :all, :unless => lambda { request.url =~ /http:\/\/(localhost|127.0.0.1|0.0.0.0):8080/
或者,如果我将此条件设置为任意数量的垃圾条件:
doorkeeper_for :all, :if => lambda { true }
doorkeeper_for :all, :unless => lambda { true }
然后看门人允许所有请求在没有令牌的情况下通过,这是不好的并且不是预期的。
注意到我有一个require 'doorkeeper'
声明,并且我在我的 API 控制器中摆弄了各种包含语句,例如include Doorkeeper::Helpers::Filter
这可能与 Doorkeeper 与 Grape 一起工作的问题有关,但再次奇怪的是,它在没有条件的情况下也能正常工作。任何有关为什么会发生这种情况的见解将不胜感激!
ruby-on-rails-4 - 将参数附加到 api 控制器规范中的请求
我以以下格式向我的 API 发送请求
我的问题是如何在控制器规范中的请求中附加v参数和access_token参数?
以下是我到目前为止的示例。它都不起作用:
ruby-on-rails - 带有自定义策略门卫的 Rails 法拉第超时错误omniauth
我使用omniauth(自定义策略)/门卫发布了与这篇文章法拉第超时错误完全相同的标题,因为我只是遇到了相同且几乎完全相同的问题。我在centOS(我目前在windows上)测试了相同的代码,它工作得很好。我目前正在使用 puma,正如另一篇文章的答案所说,我正在使用以下命令运行它: rails s Puma THREADS=1
如您所见,它会创建访问令牌和所有令牌,但会返回内部服务器错误 500
这是完整的堆栈跟踪:
这是应该创建访问令牌的探索操作,但它会卡住直到超时错误
我已经遵循了 github 上的omniauth 策略教程和门卫提供者教程。正如我之前所说,它运行良好并在 centOS 中创建了一个访问令牌,但在 Windows 中我收到此错误,我什至通过本教程没有结果https://gist.github.com/fnichol/867550并且还尝试了不同的法拉第适配器,结果几乎相同。
PD:非常感谢你的帮助,对不起我的英语
ruby-on-rails - 如何在 Doorkeeper gem 的 OmniAuth 策略中传递范围参数?
根据这个门卫维基,我正在为API 用户提供 OmniAuth 策略。使用范围的门卫 wiki说,如果您的客户端应用程序正在请求授权 URI,您可以执行以下操作:
其中 public 和 write 是范围(例如,用于公共访问和写访问)。
如何传递这些范围参数?目前尚不清楚如何将它们包含在代码中。请记住,我将拥有具有不同访问级别(即角色)的用户。
编辑 - 实际代码:
客户端应用
客户端应用程序上的 Omniauth 策略代码:
每个设计 gem wiki 的 Omniauth 回调控制器:
登录链接
API应用
doorkeeper.rb - 配置文件
提供 API 数据的 API 控制器
使用 RocketPants gem 进行设置的基本 API 控制器
*用户控制器,API端