※当サイトの記事には、広告・プロモーションが含まれます。

GitHubのリソースを利用するための認証はGitHub Appsで生成するトークンを利用した方が良いらしい

www.itmedia.co.jp

 中国通信機器大手のHuaweiは9月10日(現地時間)、世界初の三つ折りスマートフォンHUAWEI Mate XT」を中国国内で発表した。折りたたむとスマートフォンと同じフットプリントながら、広げると10.2インチのディスプレイが現れる。

世界初の「三つ折りスマホ」、ファーウェイが発表 約40万円から - ITmedia NEWS

 価格は、256GBモデルが1万9999元(日本円で約40万円)、512GBモデルが2万1999元(約44万円)、1TBモデルが2万3999元(約48万円)。

世界初の「三つ折りスマホ」、ファーウェイが発表 約40万円から - ITmedia NEWS

⇧ 最早、結構スペックの良いパソコンが買えてしまうお値段な気がするのだけど...

まぁ、富裕層にしか手が出せない世界ではありますな...

GitHubへの認証方法

公式のドキュメントによると、

docs.github.com

GitHub のリソースには、ブラウザ内、GitHub Desktop または別のデスクトップアプリケーション経由、API 経由、またはコマンドライン経由など、さまざまな方法でアクセスできます。 GitHub へのアクセス方法は、それぞれ異なる認証モードをサポートしています。

  • 2 要素認証を使用したユーザー名とパスワード、またはパスキー
  • Personal access token
  • SSH キー

https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/about-authentication-to-github

⇧ という説明になっており、GitHubのリソースを利用するためのGitHubの認証方法としては、

  1. ブラウザで認証する
  2. GitHub Desktop で認証する
  3. API で認証する
  4. コマンドラインで認証する

⇧ 4つの方法に大別されますと。

勿論、それぞれの認証方法で更に方法が分かれているようですが。

GitHubのリソースを利用するための認証はGitHub Appsで生成するトークンを利用した方が良いらしい

で、公式のドキュメントによると、

docs.github.com

Organization で、または他のユーザーの代わりに API を使用する場合、GitHub では、GitHub App の使用が推奨されます。 詳しくは、「GitHub アプリでの認証について」を参照してください。

https://docs.github.com/ja/rest/authentication/authenticating-to-the-rest-api?apiVersion=2022-11-28

⇧ とあり、「GitHub App」の使用を推奨しておりますと。

docs.github.com

GitHub Apps と OAuth apps について

通常、GitHub Apps が OAuth apps より優先されます。 GitHub Apps では、きめ細かいアクセス許可が使われ、アプリでアクセスできるリポジトリをより細かく制御でき、有効期間の短いトークンが使われます。 これらの特徴により、アプリの資格情報が漏洩した場合に発生する可能性のある損害を制限することで、アプリのセキュリティを強化できます。

https://docs.github.com/ja/apps/oauth-apps/building-oauth-apps/differences-between-github-apps-and-oauth-apps

⇧ なるほど。

ネット上の情報を漁った感じでは、

zenn.dev

また GitHub Apps は、パーソナルアクセストークン(personal access token)と異なり、個人アカウントに紐づかないので会社組織等で使う際の管理に向いています

GitHub Apps のトークンを使ってプライベートリポジトリにアクセスする

⇧ という感じで、個人アカウントへの依存を排除できる模様。

ちなみに、

docs.github.com

GitHubでは「トークン」は、6つの種類が用意されているらしい。

GitHub Appsの仕組み

公式のドキュメントによると、

docs.github.com

GitHub Appsについて

GitHub Apps は、GitHub の機能を拡張するツールです。 GitHub Apps を使うと、GitHub で、issue を開く、pull request にコメントする、プロジェクトを管理する、といったことを行うことができます。 また、GitHub で発生するイベントに基づいて、GitHub の外部で何かを行うこともできます。 たとえば、GitHub で issue が開かれたときに、GitHub App で Slack に投稿できます。

https://docs.github.com/ja/apps/using-github-apps/about-using-github-apps

GitHub Appsを使用する

GitHub App を使うには、ユーザーまたは Organization のアカウントにアプリをインストールする必要があります。

https://docs.github.com/ja/apps/using-github-apps/about-using-github-apps

アプリをインストールするときに、リポジトリと Organization のデータの読み取りまたは変更を行うためのアクセス許可を、アプリに付与します。 具体的なアクセス許可はアプリによって異なり、アプリで要求されているアクセス許可は、アプリをインストールする前に GitHub によって示されます。 アプリをインストールするときに、アプリがアクセスできるリポジトリも指定します。 アプリで追加の構成が必要な場合は、その構成を行うようアプリで指示されます。 詳しくは、「個人向けアカウント用に GitHub Marketplace から GitHub アプリをインストールする」、「Organization の GitHub Marketplace から GitHub アプリをインストールする」、「サード パーティからの GitHub App のインストール」および「独自の GitHub App のインストール」を参照してください。

https://docs.github.com/ja/apps/using-github-apps/about-using-github-apps

⇧ とあるのだけど、上記で言っている「アプリ」が何なのかがよく分からない...

公式のドキュメントでは、見当たらないのですが、

zenn.dev

⇧ 上記サイト様によりますと、上図のような仕組みになる模様。

GitHub Appsによる認証方法は3つあるらしい

で、公式のドキュメントを見た感じでは、

docs.github.com

GitHub アプリでの認証について

GitHub App を使うと、アプリ自体またはアプリのインストールとしてアプリを認証するか、ユーザーの代わりにアプリを認証することができます。

https://docs.github.com/ja/apps/creating-github-apps/authenticating-with-a-github-app/about-authentication-with-a-github-app

⇧ とあり、

  1. アプリとして認証する
  2. インストールとして認証する
  3. ユーザーに代わって認証する

の3つの認証方法が用意されているらしい。

docs.github.com

⇧ 英語版のドキュメントを参考にすると、

  1. アプリとして認証する
    Authentication as a GitHub App
  2. インストールとして認証する
    Authentication as an app installation
  3. ユーザーに代わって認証する
    Authentication on behalf of a user

となりますと。

英語版のドキュメントの説明を読んだ感じでは、

Authentication as a GitHub App

To authenticate as itself, your app will use a JSON Web Token (JWT). Your app should authenticate as itself when it needs to generate an installation access token. An installation access token is required to authenticate as an app installation. Your app should also authenticate as itself when it needs to make API requests to manage resources related to the app.

https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/about-authentication-with-a-github-app

⇧「installation access token(GitHub App インストール アクセストークン)」を生成するには、「1. アプリとして認証する」必要があるっぽいので、「2. インストールとして認証する」は、「1. アプリとして認証する」に依存しているってことなんかね?

説明が分かり辛いんだわ...

何となく、

zenn.dev

toripiyo.hatenablog.com

⇧「GitHub App インストール アクセストークン」を利用する感じの情報が多いので、「2. インストールして認証する」方法で実現していく感じになるんかね?

何と言うか、公式のドキュメントで、

  1. アプリとして認証する
    Authentication as a GitHub App
  2. インストールとして認証する
    Authentication as an app installation
  3. ユーザーに代わって認証する
    Authentication on behalf of a user

それぞれの認証方法について、シーケンス図を公開して欲しいところですな...

毎度モヤモヤ感が半端ない…

今回はこのへんで。