30分でOauth 2プロバイダー

ある日、oauth2をruby on railsプロジェクトに接続することにしたと想像してください。 現在、ほとんどのRailsアプリケーションの認証はdeviseを通過するため 、oauth2をこのgemに統合すると便利です。 幸いなことに、誰もが私たちを思いついたので、meet- devise_oauth2_providableです。 このgemを使用すると、oauth2プロバイダーの統合とテストにより、ストアに行くだけで済みます。


それでは始めましょう。 Gemfileを編集し、そこに次の行を追加します。

gem 'devise_oauth2_providable' 


通常どおり、bundleを実行します。 次に、すべてのoauthクライアントデータが保存されるクライアントラベルを作成する必要があります。 幸い、gemの開発者は、移行ペンを書く必要がないことを確認しました

 class CreateOauth2Schema < ActiveRecord::Migration def self.up Devise::Oauth2Providable::Schema.up(self) end def self.down Devise::Oauth2Providable::Schema.down(self) end end 

oauth2による認証を有効にするモデルで、次の行を追加します。

 devise :oauth2_providable, :oauth2_refresh_token_grantable, :oauth2_authorization_code_grantable 

以上です。 この問題をテストするだけです。

このために、Sinatraで書かれた既成のdevise-oauth2-provider-clientもあります

最初に、クライアントモデルでテストクライアントを作成します。

 Client.create( :name => "Sinatra Client", :redirect_uri => "http://localhost:9393/oauth/callback", :website => "http://localhost:9393/", :identifier => "120094574673767", :secret => "b54dc82476af2814e620b86776c42c0e" ) 

次に、リポジトリのクローンを作成し、アプリケーションがバンドルを使用するように要求するgemを配置します。

次に、クライアントフォルダに移動し、getメソッド「/ oauth / callback」を編集します。 そこで行を修正する必要があります

 access_token.get('/me').body 

そして、メインアプリケーションがログイン成功後に私たちに与えるページ上の熱心な「/私」。 これをテストのメインページにします。

 access_token.get('/').body 

サーバーを起動します。

 bundle exec shotgun 

Sinatraサーバーはポート9393で起動します。

http:// localhost:9393 / oauth / startページに移動し、すべてが正しく行われた場合、railアプリケーションで3000番目のポートにリダイレクトされます。そこで、Sinatra Clientアクセスを確認し、既に承認された状態に戻り、railアプリケーションのメインページが表示されます。

Source: https://habr.com/ru/post/J126753/


All Articles