6

私のアプリケーションはGithubのOauthを使用しています。仮定:

  • バージョン1では、アプリは基本認証のみを必要としました(スコープ= [])
  • バージョン2では、アプリはパブリックリポジトリへのR / Wアクセスを必要としました(scope = ['public_repo'])

一部のユーザーは、アップグレード以降、まだログインしていません。

今、私は他のものよりも優れた認証機能を持ついくつかのトークンを持っています。どうすればそれらを区別できますか?言い換えると、Githubに次のように尋ねることができます:「ねえ、私はこのoauthトークンを持っています...それで何ができますか?」

4

2 に答える 2

13

GitHub APIリクエストを作成し、X-OAuth-Scopesヘッダーの値を読み取って、トークンで提供されたスコープを確認できます。/ rate_limitを使用しても、アプリのレート制限にはカウントされません。

curl -I -H 'Authorization: token <token>' https://api.github.com/rate_limit
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 18 Oct 2012 23:48:37 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Status: 200 OK
Content-Length: 61
X-GitHub-Media-Type: github.beta
X-RateLimit-Remaining: 4999
X-RateLimit-Limit: 5000
X-OAuth-Scopes: public_repo
Cache-Control: 
X-Content-Type-Options: nosniff
于 2012-10-18T23:53:25.113 に答える
0

(2014年2月):SSHキーの強化されたOAuthセキュリティ

サードパーティアプリケーションが特に読み取り専用アクセス、読み取り/書き込みアクセス、または公開SSHキーへの完全な管理者アクセスを要求できる ように、より詳細なアクセス許可を追加しました。


access-token現在(2013年10月)もスコープを返すことに注意してください。

これについては、「今後のOAuthの変更」(2013年10月、Tim Cleam-tclemによる)で詳しく説明されています。

本日より、access_token応答の一部として付与されたスコープを返します。
たとえばPOSTapplication/jsonmime-typeを使用して作成している場合は、付与されたスコープの追加フィールドが表示されます。

{
  "access_token":"e72e16c7e42f292c6912e7710c838347ae178b4a",
  "scope":"repo,gist",
  "token_type":"bearer"
  }

現在、これらのスコープはリクエストしたものと同じですが、GitHubユーザーがスコープを編集できるようにする機能セットに移行し、アプリケーションに最初にリクエストしたよりも少ないアクセスを効果的に許可します
この可能性を認識し、それに応じてアプリケーションの動作を調整する必要があります。

注意して覚えておくべきいくつかの事柄:

  • GitHub OAuthを使用してユーザーを識別するほとんどのサードパーティアプリケーションは、アプリケーションが回避できる可能性のある最小限のアクセスの要求から開始することで、採用に最も成功しています。
    スコープがない、または単にuser:email非常に正気であるようなもの。

  • ユーザーが最初に要求したよりも少ないアクセスを許可することを選択したエラーケースを処理することが重要です。
    応答で許可されたスコープaccess_tokenが表示されるようになったので、アプリケーションは、機能が低下したり、一部のアクションを実行できなくなったりすることをユーザーに警告または通信できます。

  • アプリケーションはいつでもユーザーをフローに戻して追加のアクセス許可を取得できますが、ユーザーは常に「いいえ」と言うことができることを忘れないでください。

于 2013-10-05T08:54:11.140 に答える