これは非常に奇妙な(そして恐らく安全性に欠ける)ため、私はこれを試してみてください。私はこれを何時間もデバッグしていましたが、なぜGithub APIがRESTfulなAPI要求にこのように作用しているのか理解できません。GitHub APIの問題 - 公開鍵を作成する
Github oAuth APIを使用してアプリケーションを認証しています。ユーザーがgithubアカウントを正常に認証すると、要求されたスコープに基づいてユーザーのaccess_tokenが取得されます...問題はありませんが、oAuthの標準動作(https://developer.github.com/v3/oauth/#web-application-flow)。
はその後、後続のすべてのAPIコールで、私はそうのようなHTTPのAuthorizationヘッダにアクセストークンを添付:
Authorization: 'token abcdefghijklmnopqrstuvwxyz123456789abcde'
アクション私はに公開鍵を追加してaccess_tokenはを実行しようとしていますhttps://developer.github.com/v3/users/keys/#create-a-public-key
2人のユーザーアカウントでこれを行うと奇妙なことが起こります。 2人のユーザーがいる場合は、「Alice and Bob」としましょう。
アリスがgithubでアプリにログインすると、access_token 'aaa'が与えられ、私のアプリはAuthorizationヘッダーの 'aaa' access_tokenを使って自分のアカウントに公開キーを追加できます。
私はアリスとしてアプリケーションからログアウトし、Bobのgithub資格情報を使ってBobとしてログインします。認証は成功し、GithubはBobにaccess_token 'bbb'を提供します。しかし、ボブのアカウントに公開鍵を追加しようとすると、彼のアカウントに公開鍵がないにもかかわらず、「キーはすでに使用中です」というエラーが表示されます。
しかし、プライベートレポジトリや組織の一覧表示など、他のAPIリクエストにBobのaccess_token 'bbb'を使用すると、GithubはBobのデータを返します。彼のアカウントに公開鍵を作成するとき、Githubは依然としてBobのaccess_token「bbb」をAliceの公開鍵に関連付けるように見えます。
アリスのアカウントからパブリックキーを削除すると、Bobとのログインに成功し、パブリックキーをアリスのものではなくBobのアカウントに追加できるため、私はこれを確認しています。
この現象は、同じブラウザで、同じコンピュータ上の2つの異なるブラウザと、同じ結果を持つ2つの別々の地理的地域にある2つの異なるコンピュータでテストしました。
私はGithubによって提供されたaccess_tokenが、アクションが実行されるべきユーザアカウントを適切に関連付けると仮定しています。特に、ほとんどのGETリクエストのように、URLにユーザ名が示されていないPOSTおよびDELETE要求がある。
私は何かが不足していると確信していますが、誰かがある程度の洞察を提供できれば、感謝します。