問題タブ [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 - ドアキーパーは、認可サーバーからリソースサーバーを分離します
Doorkeeperを使用して ruby on rails で ouath 2.0 システムを構築しています。私のリソース サーバーは doorkeeper_for メソッドで保護されており、承認サーバーとは別のものであり、暗黙的な許可フローを使用しています。したがって、認証サーバーからアクセストークンを取得し、次の方法でリソースサーバーにリクエストを送信します: localhsot:3000/pages?access_token=XXXX しかし、リソースサーバーがアクセストークンを読み取ると、そのトークンを検索しようとします認証サーバーデータベースではなく、独自のデータベースであるため、401 Unautorized エラーが発生します。どうすればこれを解決できますか?
ruby-on-rails - Facebook認証後のドアキーパーによる認証
ユーザーがモバイルアプリを介してFacebookで認証した後、通常のドアキーパーoauth2フローを実装するにはどうすればよいですか?
PS私はドアキーパーgemを使用して、モバイルアプリ用のoauth2プロバイダーを実装しています。リソース所有者のパスワード資格情報フローを使用して、ユーザーのユーザー名とパスワードによる認証を実装します。
したがって、ユーザーが最初にモバイルアプリを介して facebook を介して認証する場合、facebook アクセストークンを使用してドアキーパーを介してユーザーを認証するにはどうすればよいですか? したがって、この場合、ユーザー名/パスワードは存在しません (ドアキーパーはパラメーターが見つからないというエラーをスローします)。
このフローを実装する正しい方法は何ですか。
このフローを実装する正しいアプローチは何ですか? 正しい方向へのいくつかのガイダンスは非常に高く評価されています。
ruby-on-rails - OAuth2 プロバイダーである Mongoid ORM で Rails 4 API を作成するには?
Rails 4 API をOAuth2 Providerにすることで保護しようとしています。
Rails 4 で動作するように、gem Mongoid '4.0.0' (Git Repo の master ブランチから) を追加しました。
ここで、Doorkeeper gem を使用して API を OAuth2 プロバイダーにしたいと考えています。Doorkeeper は Mongoid 4 をサポートしていないと思います (出典: https://github.com/applicake/doorkeeper/issues/224 )
さらに、Mongoid 3.1.2 は Rails 4 では機能しないため、使用できません。
gem 'oauth-plugin' は、インジェクトされるボイラープレート コードが多すぎるため、使用しないほうがよいと思います。
提案してください、それを機能させるために私にできることはありますか?
前もって感謝します!:-)
ruby-on-rails - 不明なバリデータ: Rails デプロイ中の 'RedirectUriValidator'
サーバーに問題があったため、交換用の VM が起動され、新しい VM (Ubuntu 12.04) にコピーされた多くのアイテムが起動されました。
サーバーに cap deploy を実行していますが、 rake db:migrate ステップまではすべてうまくいきます。
** [out :: 63.247.75.161] レーキが中止されました! ** [アウト :: 63.247.75.161] 不明なバリデータ: 'RedirectUriValidator' ** [アウト :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activemodel-3.2.14 /lib/active_model/validations/validates.rb:96:in rescue in block in validates'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activemodel-3.2.14/lib/active_model/validations/validates.rb:93:in
block in validates' ** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activemodel-3.2 .14/lib/active_model/validations/validates.rb:90:in each'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activemodel-3.2.14/lib/active_model/validations/validates.rb:90:in
validates' ** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/doorkeeper-0.6 .7/lib/doorkeeper/models/application.rb:10:in <class:Application>'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/doorkeeper-0.6.7/lib/doorkeeper/models/application.rb:2:in
' ** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/doorkeeper-0.6. 7/lib/ドアキーパー/models/application.rb:1:in<top (required)>'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in
require' ** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in block in require'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:236:in
load_dependency' ** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in require'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/doorkeeper-0.6.7/lib/doorkeeper/config.rb:24:in
enable_orm' ** [アウト :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/doorkeeper-0.6.7/lib/doorkeeper/config.rb:10:in configure'
** [out :: 63.247.75.161] /var/www/test/releases/20131011015404/config/initializers/doorkeeper.rb:2:in
' ** [アウト: : 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:245:in load'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:245:in
block in load' ** [out : : 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:236:inload_dependency'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:245:in
load' ** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/engine.rb:593:in block (2 levels) in <class:Engine>'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/engine.rb:592:in
each' ** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/engine.rb:592:in block in <class:Engine>'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/initializable.rb:30:in
instance_exec' ** [出力 :: 63.247.75.161] ** [出力 :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/initializable.rb :30: in run'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/initializable.rb:55:in
block in run_initializers' ** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/initializable.rb :54:in each'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/initializable.rb:54:in
run_initializers' ** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/application.rb:136 :のinitialize!'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/railtie/configurable.rb:30:in
method_missing' ** [out :: 63.247.75.161] /var/www/test/releases/20131011015404/config/environment.rb:5:in <top (required)>'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in
require' ** [out :: 63.247.75.161] /var/www/test /shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in block in require'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:236:in
load_dependency' ** [out :: 63.247.75.161] /var/www/test/shared /bundle/ruby/1.9.1/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:require_environment でrequire'
** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/application.rb:103:in
!」** [out :: 63.247.75.161] /var/www/test/shared/bundle/ruby/1.9.1/gems/railties-3.2.14/lib/rails/application.rb:305:in `block (2レベル) in initialize_tasks' ** [out :: 63.247.75.161] Tasks: TOP => db:migrate => environment ** [out :: 63.247.75.161] ( --trace でタスクを実行して完全なトレースを参照)
私はいくつかの種類のドアキーパーと、Ruby 1.9.2 と 1.9.3 の両方を試しました。
なぜこれが突然壊れたのかわかりません。前回のデプロイ以降、アプリケーションに多くの変更を加えましたが、ドアキーパーの実装に関しては何もしていません。
ruby-on-rails - Doorkeeper を使用した Rails のカスタム 401 ページ
ほとんどのコントローラーで認証を要求する Doorkeeper を使用する Rails 4 アプリケーションがあります。それらの制限されたルートの 1 つに行くと、空白のページが表示されます。私は自分の端末で気づき、プーマは言います:
#Proc:0x007fd650803350@/.../doorkeeper-0.7.2/lib/doorkeeper/helpers/filter.rb:8 として停止したフィルター チェーン レンダリングまたはリダイレクト完了 401 Unauthorized in 1ms (ActiveRecord: 0.0ms)
このような 401 Unauthorized エラーをキャッチして、カスタム ページを表示するにはどうすればよいですか? 私の目標は、空白の白いページを表示するのではなく、認証方法に関するメッセージを含む JSON 応答をレンダリングすることです。
ruby-on-rails - rspec_api_documentation を使用して Doorkeep トークンをスタブ化する
rspec_api_documentationを使用して Rails 4 で API を構築していますが、非常に感銘を受けました。エンドポイントを保護するために DoorKeeper を使用することを選択したので、これをすべてコンソールから正常にテストし、機能させることができました。
私が今苦労しているのは、それをどのように特定し、トークンをスタブするかです。
DoorKeeper のドキュメントでは、次の使用が推奨されています。
ただし、rspec_api_documentation に沿って受け入れテストを作成しました。これはprojects_spec.rb
私が書いたものです:
テストを実行すると、次のようになります。
これは明らかにコントローラーの仕様ではないためだと思いますが、前述したように、API をテストするこの rspec_api_documentation の方法に固執したいと思います。
きっと誰かがこれをしなければならなかったのですか?トークンをスタブする別の方法はありますか?
前もって感謝します。
javascript - シークレットを送信せずに、クライアント側アプリケーションから Doorkeeper を使用した認証
認証のために Ruby on Rails API アプリで Doorkeeper を使用しようとしています。クライアント側の AngularJS アプリから、アクセス トークンを取得したいと考えています。現在、これには /oauth/authorize への GET リクエストが含まれており、これによりコードが提供されます。次に、そのコードを client_id とシークレットと共に /oauth/token に POST します。クライアント ID とシークレットは JavaScript ファイルにプレーンテキストで保存されているため、クライアント側アプリから送信する必要はありません。ではなくがであるこのフローをたどりたいのですが、Doorkeeper でそれを行う方法がわかりません。彼らの wiki の例はすべて、クライアント ID とシークレットを /oauth/token に POST することを伴うようです。response_type
token
code
Doorkeeper はこれに適した gem ですか? クライアント側からサーバーにシークレットが渡されないクライアント側アプリから Google OAuth2 を実行するにはどうすればよいですか?
編集:私が欲しいのは、 Doorkeeper がサポートするImplicit Grant のようです。Railsアプリでそれを行う方法を見つけなければなりません...
ruby-on-rails - Rails 3.1 でのドアキーパーのルーティングの問題
ドアキーパー ( https://github.com/applicake/doorkeeper/ ) を使用して単純な OAuth プロバイダーをセットアップしようとしていますが、ルートの名前を変更するのに深刻な問題があります。
事前にロールされている「/oauth」ルートではなく、「/oauth2/v1」としてベース ドアキーパー ルートを設定しようとしています。
wiki ( https://github.com/applicake/doorkeeper/wiki/Customizing-routes ) を読むと、変更するだけでよいようです
に
または、名前空間 use_doorkeeper を「oauth2」に変更してから、「v1」のスコープを提供します。残念ながら、何も機能しません。ドアキーパーに他のスコープをまったく使用させることができません。
Railsはroutes.rbでその種の構造を使用しなくなったため、wiki自体はかなり古くなっているようです。そのため、実際に変更しようとしているコードは次のようになります。
しかし、繰り返しになりますが、スコープを変更できるものは何もないようです。
これは rake ルートの出力です:
use_doorkeeper の :scope パラメータが無視されているようです。
この時点でのヒントは大歓迎です。