GitHub App とは

GitHub API を用いた処理を実施させるアプリを作るための仕組み。

権限面でのメリット

GitHub API を使うための認証情報を設定する方法として、PAT や OAuth App などがある。(参考: GitHub API における認証)

しかし、PATもOAuth App も認証情報が個人のアカウントと紐づくというデメリットがある。(個人アカウントA での変更が、PATもしくはOAuth App を使用するアプリ全体の挙動に影響しうる)

そのほか権限設定の細やかさなどを含めると、以下が GitHub App を使うメリットとなりそう

  • GitHub App では個人アカウントの権限設定と切り離して運用できる
  • GitHub App は、GitHub OAuth と比較してアプリのアクセスと権限をより細かく制御できる

GitHub App の認証方法

以下の2つがある(参考: About authentication with a GitHub App)

  1. GitHub App としての認証 GitHub App の installation としての認証
  2. GitHub ユーザーとしての認証

1. GitHub App としての認証(Authentication as a GitHub App)

  • 必要なもの
    • JWT
    • installation access token

GitHub App 自体を認証する上では、JWT(Json Web Token)が必要。

アプリのインストールを認証するには、インストールアクセストークンが必要。

アプリに関連するリソースを管理するためにAPIリクエストを行う必要があるときも、アプリ自体を認証する必要がある(たとえば、インストールされているアカウントを一覧表示する必要がある場合など)

GitHub App の installation としての認証(Authentication as an app installation)

インストールとして認証するために、アプリはインストールアクセストークンを使用する。

アプリインストールとして認証すると、アプリをインストールしたユーザーまたは組織が所有するリソースにアプリがアクセスできるようになる

2. GitHub ユーザーとしての認証(Authentication on behalf of a user)

GitHub Appが、GitHub ユーザーに代わって認証を行う方式。

ユーザーアカウントに紐づいた認証情報を用いて、ユーザーとして操作を行う形となる。

ユーザーに代わってAPIリクエストを行うには、ユーザーがアプリを認証する必要がある。

認証にはUser access tokenを用いる

GitHub App の作成