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アプリケーションのメインページが表示されます。



All Articles