ユーザーの GitHub ID を確認したり、ユーザーに代わって GitHub 上のデータを操作する必要があるサードパーティのアプリケーションでは、それを行うために GitHub App の認可を求められることがあります。
GitHub App を認可するときには、そのアプリケーションが信� �できること、誰がそれを開発したのか、およびプリケーションがアクセスしたい情� �の種類を確認する必要があります。
認可の際、GitHub App にアクセス許可を与えるよう求められます。
- GitHub ID を確認する
認可されると、GitHub App はパブリックな GitHub プロファイルをプログラ� で取得できるようになり、要求されたアクセス レベルに応じてプライベートな情� � (メール アドレスなど) も取得できるようになります。 - アクセスできるリソースを把握する
承認されると、GitHub App} は、アクセスできる プライベート GitHub} リソース (プライベート GitHub リポジトリ など) を プログラ� で読み取ることができます。このリソースには、GitHub App のインストールも存在します。 アプリケーションは、たとえば、リポジトリの適切なリストを表示できるように、これを使用できます。 - ユーザーに代わって操作する
アプリケーションは、GitHub 上でタスクを実行する必要があるかもしれません。 これには、issue の作成、pull request へのコメントが含まれる� �合があります。 このユーザーに代わって操作する機能は、ユーザーと GitHub App の 両方 がアクセスできる GitHub リソースに制限されます。 た� し、アプリケーションがユーザーに代わって変更を� えない� �合もあります。
GitHub App がユーザーに代わって操作するタイミング
GitHub App がユーザーに代わって操作する状況は、GitHub App の目的と、使われているコンテキストによって異なります。
たとえば、統合開発環境 (IDE) では、GitHub App を使って、IDE を通じて作成した変更を GitHub のリポジトリにプッシュ バックするために、ユーザーに代わって操作できます。 GitHub App は user-to-server 要求を通じてこれを実現します。
このように GitHub App が代行する� �合、GitHub 上では以下のような特別なアイコンが表示され、GitHub App の小さなアバターがユーザー自身のアバターの上に重なって表示されるようになっています。
GitHub App は、どこまでユーザーがアクセスできるリソースを把握して、どの程度までユーザーに代わって操作できますか?
GitHub App が、認可された後に、ユーザーがどのリソースにアクセスできるかを把握し、ユーザーに代わって操作できる範囲は、次のように制限されています。
- アプリがインストールされている組織またはリポジトリ
- アプリが要求しているアクセス許可
- GitHub リソースへのアクセス権
例を使って説明しましょう。
GitHub ユーザーの Alice は、GitHub ID を使ってサードパーティの Web アプリケーション ExampleApp にログインします。 このプロセスの間、Alice は ExampleApp が自分に代わってアクションを実行することを認可します。
た� し、ExampleApp が Alice に代わって GitHub で実行できるアクティビティは、ExampleApp がインストールされているリポジトリ、ExampleApp が要求したアクセス許可、そして Alice の GitHub リソースへのアクセス権によって制限されます。
つまり、ExampleApp が Alice に代わって Repo A というリポジトリに issue を作成するには、次のすべてに該当する必要があります。
- ExampleApp の GitHub App が、issue への書き込み権限を要求しています。
- Repo A の管理者特権を持つユーザーが、Repo A に ExampleApp の GitHub App をインストールしている必要があります。
- Alice は Repo A の読み取りアクセス許可を持っている必要があります。さまざまなアクティビティを実行するためにどのアクセス許可が必要かは、「組織のリポジトリ ロール」を参照してく� さい。