web-dev-qa-db-ja.com

GitHub OAuth2トークン:アクセスを制限して単一のプライベートリポジトリを読み取る方法

使用事例:

  1. コマンドラインアプリケーション(サードパーティのマシンに展開されます)は、GitHub API(v3)を介して組織に属するプライベートリポジトリのtarballコピーをダウンロードできる必要があります

  2. アプリケーションは、この1つのプライベートリポジトリにのみアクセスでき、読み取り専用権限を持つ他のリポジトリにはアクセスできません。

(1)githubアカウントにclient_id/secretを登録した後、アプリケーションの承認を作成することで達成できました。ただし、承認によって返されたトークンはレポへの読み取り専用アクセスを許可せず、1つのレポに制限されていないようです(たとえば、トークンを使用してこのレポと組織に属する他のレポを変更する可能性があります)。

適切なスコープを介してアクセスを制限することは可能ですか? APIドキュメントに関連するものは何もありません( https://developer.github.com/v3/oauth/#scopes )。

45
Bounce2thaOunce

Github OAuthトークンをそのように制限できるとは思わない。 OAuthのgithubドキュメント と言う

OAuthを使用したGit over HTTPは、一部のタイプのアプリケーションの摩擦を軽減しますが、キーのデプロイとは異なり、OAuthトークンはユーザーがアクセスできるリポジトリに対して機能します。

そのため、アクティビティのtypesの観点からトークンのスコープを制限できますが、リポジトリのサブセットに制限することはできません。

キーのデプロイ は単一のリポジトリに制限できますが、書き込みアクセスは許可されます。

明らかな戦術(トーマスによる言及)は、アプリケーションを表すダミーアカウントを作成することです。 OAuthの目標を考えると、これはどのような場合でもより良いワークフローかもしれません。実際にユーザーであるかのように、アプリが持つ許可を簡単に変更できます。

Githubは、この戦略を明示的に言及/承認し、 machine users と呼んでいます。

30
starwed