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)
- GitHub App としての認証 GitHub App の installation としての認証
- 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を用いる