GitHub アプリ vs. OAuth アプリ:適切な GitHub 接続方法を選ぶ
Logto との連携における GitHub アプリと OAuth アプリを比較します。セキュリティ、権限管理、トークン管理の主要な違いを学び、あなたのアプリケーションに合った GitHub 認証方法を選びましょう。
GitHub 認証を Logto アプリケーションに組み込む際、選択肢は2つあります:GitHub アプリと GitHub OAuth アプリです。どちらも「GitHub でサインイン」機能を提供しますが、セキュリティ、トークン管理、API アクセスの点で根本的に異なる体験を提供します。このガイドでは、それぞれの違いを理解し、利用ケースに合った方法を選べるようサポートします。
背景:2つの GitHub 連携パス
Logto の現在のドキュメントでは、GitHub OAuth アプリ を設定してソーシャルサインインを行う手順を案内しています。これは基本的な認証ニーズに最適な、よりシンプルで分かりやすい選択肢です。しかし、GitHub アプリは GitHub 自体が推奨する最新の方法であり、強化されたセキュリティ機能やより細かな制御を提供します。
イメージしやすく言えば、OAuth アプリは「家のマスターキーを誰かに渡す」ようなものです — 認可すると広範なアクセス権を得ます。一方、GitHub アプリは「部屋ごとにアクセスコードが異なるスマートロック」のようなもので、アプリが必要とする正確な権限だけをユーザーが指定して付与できます。
一目で分かる主な違い
権限管理:広範囲 vs. 細分化
- OAuth アプリ は広範なスコープを使用します。たとえば
repoを要求するとリポジトリ全体の管理権限が付与されます。 - GitHub アプリ は必要最小限の細かな権限を選択できます(例:「Issue: 読み取り」など)。また、インストール時にユーザーがアクセスするリポジトリを個別に選択でき、一括付与の必要がありません。
トークンのセキュリティ:永続的 vs. 有効期限あり
- OAuth アプリ は、手動で取り消さない限り失効しないトークンを発行し、リフレッシュメカニズムがありません。
- GitHub アプリ は、有効期限1時間の短命トークンを発行し自動リフレッシュに対応 — 長時間動作するアプリにおいて大幅にセキュリティが向上します。
身元:ユーザー vs. ボット
- OAuth アプリ は常に認可ユーザー(例:
@octocat)として動作し、そのレート制限(1時間あたり5,000リクエスト)を共有します。 - GitHub アプリ は独立したボット ID(例:
@my-app[bot])として動作でき、使用量に応じて拡張性のあるレート制限が得られます — 自動化に最適です。
アクセス制御:一括 vs. 選択的
- OAuth アプリ は全てのアクセス可能リソースに対し一度の認可が必要です。
- GitHub アプリ はインストール時にユーザーがリポジトリを個別選択、権限変更時にウェブフック通知も受け取れるため、高い透明性と制御性を実現します。
永続性:ユーザー依存 vs. 独立
- OAuth アプリ は認可ユーザーに紐づいて動作します。権限を失ったり組織を離れた場合、アプリは動作しなくなります。
- GitHub アプリ は導入した開発者が組織を離れても機能し続けます — 自動化や連携サービスを中断せずに運用できます。
どちらを選ぶべき?
GitHub アプリも OAuth アプリも、Logto のソーシャルコネクタでシームレスに動作します。Logto の Secret Vault はどちらからのトークンも安全に保存しますが、体験には違いがあります:
OAuth アプリでの基本的なソーシャルサインイン
ユーザー認証だけが必要(GitHub でサインイン)で、後から GitHub API を叩かない場合は OAuth アプリが最も手軽です:
- 設定が簡単:ユーザーは OAuth アプリを認可し、GitHub 経由でサインインします。
- トークンは長寿命(リフレッシュなし):Logto は Secret Vault にアクセストークンを保存できますが、リフレッシュフローはなく、取り消しまで有効です。
- ユーザーの ID(メール、名前、アバター)だけ必要で、自動 API 処理を伴わない場合に最適です。
この方法を選ぶ理由:プロトタイプやサインイン/たまにプロフィールを同期する程度のアプリで、実装を早く済ませたいとき。
GitHub アプリによる強化インテグレーション
アプリケーションが継続的な GitHub API アクセスや、バックグラウンド自動化、より厳密なセキュリティを必要とする場合は GitHub アプリを選びましょう:
- 細かい権限管理やリポジトリ選択で、アクセス範囲が最小限かつ監 査しやすくなります。
- トークンは1時間程度の短命で、リフレッシュトークンを発行可能。Logto が両方のトークンを Secret Vault で管理し、ローテーションも自動化 — 再ログインなしでバックエンドが継続稼働します。
- アプリ ID(ボット)でアクションの追跡が容易、拡張性の高いレート制限で大規模自動化も信頼性が向上します。
おすすめの用途:
- ユーザーの代理で GitHub リポジトリを管理する SaaS プラットフォーム
- コードや Issue、プルリクエストを操作する AI エージェント
- 永続的な API アクセスが必要なアプリケーション
- バックグラウンド自動化を行うツール
Logto で GitHub アプリを設定する
GitHub アプリのセットアップ手順は OAuth アプリと非常に似ていますが、いくつか重要な違いがあります。OAuth アプリから GitHub アプリへの移行も最小限の作業で完了できます。
GitHub アプリの作成
-
「GitHub Settings > Developer settings > GitHub Apps」にアクセス
-
「New GitHub App」をクリック
-
各種設定:
- GitHub アプリ名: アプリの一意な識別子
- ホームページ URL: アプリのウェブサイト
- コールバック URL: Logto コネクタのコールバック URI(OAuth アプリと同じ)
- インストール時にユーザー認証(OAuth)を要求: 有効化
- ウェブフック: 必要に応じて設定
- 権限: 必要最小限の権限(例:「Issue: 読み取り」など)を選択
- ユーザー権限: ユーザー代理で動作する場合はアカウント権限を付与
-
クライアントシークレットを生成(OAuth アプリと同じ)
Logto での設定
Logto 側のコネクタ設定手順もほぼ同じです:
- GitHub アプリの Client ID を入力
- Client secret を追加
- GitHub API を利用した永続的アクセスが必要なら 「トークン保存による API アクセスの永続化」 を有効化
- 注意点 — スコープ:
- OAuth アプリ(Logto のスコープ欄にスコープ設定が必要)とは異なり、GitHub アプリは GitHub 側の設定画面で権限を指定します。
- Logto のスコープ欄は空で OK です
- リフレッシュトークンを要求(任意)
- Logto のスコープ欄に
offline_accessを追加するとリフレッシュトークン対応 - GitHub 側で自動的にリフレッシュトークンが発行され、Logto がローテーションとトークン保存を実施します
- 注意:OAuth アプリはリフレッシュトークン非対応 — アクセストークンは期限切れになりません。GitHub アプリ統合時のみこの違いに注意。
- Logto のスコープ欄に
まとめ
OAuth アプリは今も基本的な認証には有効ですが、GitHub アプリこそ GitHub 連携の今後の標準です。トークンの有効期限制御によるセキュリティ強化、細やかな権限設定、アクセス管理など、より優れた体験が得られます。
Logto ユーザーはどちらの方法もソーシャルコネクタ経由で利用可能です。選定基準は、あなたの用途次第:
- まずは OAuth アプリでシンプルに — 認証用途だけならこれで十分
- API アクセスや自動化、高度なセキュリティが必要なら GitHub アプリへ移行
さらに—Logto の Secret Vault と自動トークンリフレッシュ機能により、GitHub アプリのトークン管理も OAuth アプリ同様に簡単で、安全性も担保できます。AI コーディングアシスタントやプロジェクト管理プラットフォーム、開発者向け生産性ツールなど、Logto アプリで最適な GitHub 連携を選ぶための知識が整いました。
さあ始めましょう!Logto の GitHub コネクタ をチェックして、今日から GitHub 認証を統合しましょう。