1. はじめに
この記事は、Docker Composeで構築したローカルのOutline環境に、Googleアカウントを利用したログイン機能(OAuth 2.0)を実装するまでの一連の手順をまとめたものです。
前提条件:
- ローカルHTTPS環境が構築済みであること。
第2回、第3回の環境構築編はこちら。
【OSSでWiki構築】第2回(環境構築編)
【OSSでWiki構築】第3回(環境構築編 トラブルシューティング)
ステップ1: Google Cloud Platformでの認証情報作成
まず、Google APIを利用して、私たちのOutlineアプリ専用の「クライアントID」と「クライアントシークレット」を発行します。
1-1. プロジェクトの作成
- GoogleアカウントでGoogle Cloud Platformコンソールにログインします。
- 新しいプロジェクトを作成します。(例:
Outline Wiki Project)
1-2. OAuth同意画面の設定
- 左側のメニューから「APIとサービス」 > 「OAuth同意画面」を選択します。
- 以下の情報を入力します。
- アプリ名:
Outline Wiki - ユーザーサポートメール: あなたのメールアドレス
- 対象: 「外部」を選択
- デベロッパーの連絡先情報: あなたのメールアドレス
- アプリ名:
- 「保存して次へ」をクリックし、「スコープ」「テストユーザー」の画面は何もせず次に進みます。
- 「テストユーザー」の画面で、
+ ADD USERSをクリックし、このOutlineにログインを許可したいGoogleアカウントのメールアドレス(まずは自分自身のアカウント)を追加します。
1-3. OAuthクライアントIDの発行
- 左側のメニューから「APIとサービス」 > 「認証情報」を選択します。
- 「+ 認証情報を作成」をクリックし、「OAuthクライアントID」を選択します。
- 以下の通り設定します。
- アプリケーションの種類: ウェブ アプリケーション
- 名前:
Outline Web Client - 承認済みのリダイレクトURI:
+ URIを追加をクリックし、以下のURIを入力します。https://localhost/auth/oidc.callback
- 「作成」ボタンをクリックします。
- 表示された「JSONをダウンロード」ボタンから設定ファイルをダウンロードし、ファイルを開きます。
- ファイルの中から
"client_id"と"client_secret"の値をコピーして、安全な場所に保管しておきます。
ステップ2: Docker Composeの設定更新
次に、取得した認証情報をdocker-compose.ymlに設定し、OutlineにGoogle認証を有効化させます。
2-1. docker-compose.ymlの編集
outlineサービスのenvironmentセクションに、OIDC_で始まるGoogle認証用の設定を追記します。
# ... (caddy, db, redisサービスは変更なし) ...
outline:
image: outlinewiki/outline:latest
restart: unless-stopped
depends_on:
- db
- redis
environment:
# --- 既存の設定 ---
SECRET_KEY: 'あなたが生成したキー'
UTILS_SECRET: 'あなたが生成したもう一つのキー'
URL: 'https://localhost'
DATABASE_URL: 'postgres://outline:StrongPassword@db:5432/outline'
REDIS_URL: 'redis://redis:6379'
PGSSLMODE: 'disable'
# ----- ここから下がGoogle認証用の設定 -----
# Google Cloudから取得した「クライアントID」をここに貼り付け
OIDC_CLIENT_ID: 'ここにクライアントIDを貼り付け'
# Google Cloudから取得した「クライアントシークレット」をここに貼り付け
OIDC_CLIENT_SECRET: 'ここにクライアントシークレットを貼り付け'
# Google認証のエンドポイント(このまま変更しない)
OIDC_AUTH_URI: 'https://accounts.google.com/o/oauth2/v2/auth'
OIDC_TOKEN_URI: 'https://oauth2.googleapis.com/token'
OIDC_USERINFO_URI: 'https://openidconnect.googleapis.com/v1/userinfo'
# ログイン画面に表示されるボタンの名前
OIDC_DISPLAY_NAME: 'Google'
2-2. コンテナの再起動
設定ファイルを保存したら、ターミナルで以下のコマンドを実行し、設定を反映させます。
docker compose down
docker compose up -d
ステップ3: 動作確認
最後に、実際にGoogleアカウントでログインできるかを確認します。
- Webブラウザで
https://localhostにアクセスします。 - 「保護されていない通信」などの警告が表示されたら、「詳細設定」などをクリックし、アクセスを許可します。
- Outlineのログイン画面に「Continue with Google」というボタンが表示されていることを確認します。
- ボタンをクリックし、「テストユーザー」として登録したGoogleアカウントでログインします。
- Outlineのワークスペース作成画面、またはメイン画面が表示されれば、設定は成功です!
まとめ
以上の手順で、ローカルのOutline環境に、Googleを利用した安全な認証基盤を確立することができました。redirect_uriの設定など、OAuth認証の基本的な流れを学ぶことができました。