Develop環境でのDoorkeeper(OAuth2)検証手順 - fjordllc/bootcamp GitHub Wiki

概要

  • BootcampアプリをOAuth2 Providerとして利用し、クライアントアプリからのログインとAPIアクセスを確認する流れをまとめました
  • 以下のPRを参考にしつつ追記&整理しています

必要なもの

  • Bootcampアプリ(OAuth Provider)
  • クライアントアプリ(doorkeeper-client)
    • doorkeeper-client をcloneして立ち上げる
    • ポートはなんでも良いがここでは3001とする
  • API確認ツール(いずれか)

セットアップ

1. クライアント準備

git clone https://github.com/MikotoMakizuru/doorkeeper-client
cd doorkeeper-client

.env を作成し、以下を設定する。

DOORKEEPER_APP_ID=""
DOORKEEPER_APP_SECRET=""
DOORKEEPER_APP_URL="http://localhost:3000"

2. OAuthアプリ作成(Bootcamp側)

FBCアプリを立ち上げ、管理者でログインし、「OAuth2 Provider」から新規アプリを作成する。

# Bootcamp
bin/rails s

管理者メニューのサイドバーからアクセス

一覧画面 > アプリケーション追加ボタンを押す

新規作成画面で入力

項目 内容
Name doorkeeper-client
Redirect URL http://localhost:3001/users/auth/doorkeeper/callback
Confidential 有効
Scopes read write
  • クライアント(doorkeeper-client)とサーバー(FBC)のScopesが不一致だとinvalid_scopeエラーになるため合わせておく
  • クライアント(doorkeeper-client)側はconfig/initializers/devise.rbを修正する
 config.omniauth :doorkeeper,
                  ENV["DOORKEEPER_APP_ID"],
                  ENV["DOORKEEPER_APP_SECRET"],
                  scope: "read write", #ここをサーバー側と合わせる
                  strategy_class: OmniAuth::Strategies::Doorkeeper

作成後、Application IDとSecretを.envに設定する。

DOORKEEPER_APP_ID="取得したApplication ID"
DOORKEEPER_APP_SECRET="取得したSecret"

3. クライアント(doorkeeper-client)側のアプリサーバーを起動

bin/rails s -p 3001

4. OAuthログイン確認

  1. http://localhost:3001 にアクセスする
  2. 「BootCampログイン」をクリックする
  1. Bootcampのログイン画面に遷移することを確認する
  2. Bootcampで任意のユーザーでログインを行う
  3. http://localhost:3001 に再度アクセスし、2.と同様に「BootCampログイン」をクリックする
  4. 認可画面で「承認」を選択する
  1. クライアント側でログイン状態になれば成功。
  2. rails consoleを起動し、User.allを実行してログインしたユーザが存在していることを確認

API検証

1. アクセストークン確認

セットアップ後、クライアント側で以下を実行する。

User.find_by(name: 'kimura').doorkeeper_access_token

2. API動作確認

  • Talend API Testerまたはcurlのどちらかで検証可能する - サンプルとしてコメントのCRUDをチェックする

コメント一覧(GET)

curl

curl -X GET "http://localhost:3000/api/comments?commentable_type=Report&commentable_id=701335546" \
  -H "Authorization: Bearer {TOKEN}"

Talend API Tester

スクリーンショット 2025-03-25 1 08 47

コメント作成(POST)

curl

curl -X POST "http://localhost:3000/api/comments?commentable_type=Report&commentable_id=701335546" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "comment": {
      "description": "sample comment"
    }
  }'

Talend API Tester

{
  "comment": {
    "description": "sample comment"
  }
}
  • 「SEND」を押下

スクリーンショット 2025-03-25 1 54 01

コメント更新(PATCH)

curl

curl -X PATCH "http://localhost:3000/api/comments/{COMMENT_ID}" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "update"
  }'

Talend API Tester

{
  "description": "update"
}
  • 「SEND」を押下

スクリーンショット 2025-03-25 1 56 02

コメント削除(DELETE)

curl

curl -X DELETE "[http://localhost:3000/api/comments/{COMMENT_ID}](http://localhost:3000/api/comments/%7BCOMMENT_ID%7D)" \
  -H "Authorization: Bearer {TOKEN}"

Talend API Tester

スクリーンショット 2025-03-25 1 57 17