Doorkeeperとは
OAuth2による認証機能をアプリに追加するGemです。
インストール
- Gem
1
|
|
- db migration
1 2 3 |
|
すると、自動にroutes.rb
にuse_doorkeeper
が追加される。それから以下のルートが生成される。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
このルートを利用してアプリケーション毎認証を作ってアクセストークンなどを出したりするのもできる。
使い方
POST /oauth/authorize
で取得できるcode
を利用してPOST /oauth/token
でアクセストークンを取得。
例
1 2 3 4 5 6 7 8 |
|
- parameter
- grant_type
initializers/doorkeeper.rb
に設定したgrant_flows
- client_id
- doorkeeperで作ったアプリの
Application Id
- doorkeeperで作ったアプリの
- client_secret
- doorkeeperで作ったアプリの
Secret
- doorkeeperで作ったアプリの
- code
- 取得したコード
- redirect_uri
- doorkeeperで作ったアプリの
Callback urls
- doorkeeperで作ったアプリの
- resource_owner_id
initializers/doorkeeper.rb
に設定したresource_owner_authenticator
- grant_type
- 結果
1
|
|
こういうふうにアクセストークンが取得できる。
その他
場合によってcurl
じゃなくて他のライブラリを使うこともできる。
- Oauth2
Oauth2 gemをインストールする。それから
1 2 |
|
とすると、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
こういうresponseを取得できる。
- RestClient
RestClient gemをインストールし、
1 2 |
|
すると、
1
|
|
というresponseを取得できる。
Api連携
before_action :doorkeeper_authorize!
を使って有効TokenのみアクセスできるようにApiと連携ができる。
1 2 3 |
|
こういうふうに設定をしておく。
1 2 3 4 5 6 7 8 9 10 |
|
ユーザー情報を取得するapiを試してみると、
1 2 3 4 5 6 |
|
簡単にデータが取れる。
トークン無しでアクセスしようとしたら、
1 2 |
|
こういうふうに接続できない。
Doorkeeper gemはすごく簡単にOAuth2による認証機能を実装できる。Doorkeeperと連携してさらにApiを作ったり、ログイン機能に認証機能をつけるなどの実装も可能になる。
参考
doorkeeper
Doorkeeper gem でOauth認証できるアプリケーションを作った後の事
【Rails5】Doorkeeper gemでOAuth2.0のためのAPIを作って、rubyクライアントで呼び出す