Определить области авторизации для данного токена Github

В моем приложении используется Github Oauth. Предположим, что:

  • в версии 1 приложению требовалась только базовая авторизация (scopes = [])
  • в версии 2 приложению требовался доступ для чтения и записи к общедоступным репозиториям (scope = ['public_repo'])

Некоторые пользователи еще не вошли в систему после обновления.

Теперь у меня есть токены с большими возможностями авторизации, чем у других. Как мне их отличить? Другими словами, как я могу спросить Github: «Эй, у меня есть этот токен oauth… что я могу с ним сделать?»


person Tony Lâmpada    schedule 17.10.2012    source источник


Ответы (2)


Вы можете сделать любой запрос API GitHub и прочитать значение заголовка 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
person pengwynn    schedule 18.10.2012
comment
Спасибо, проверю и сообщу - person Tony Lâmpada; 20.10.2012
comment
Вот пример того, как это сделать в Ruby robert-reiz.com/2013/05/08/ - person Robert Reiz; 08.05.2013

(февраль 2014 г.): повышенная безопасность OAuth для ключей SSH.

Мы только что добавили более подробные разрешения, поэтому сторонние приложения могут специально запрашивать доступ только для чтения, доступ для чтения/записи или полный доступ администратора к вашему общедоступному SSH. ключи.


Обратите внимание, что access-token сейчас (октябрь 2013 г.) также возвращает область действия.

Это подробно описано в разделе "Грядущие изменения OAuth" ( Октябрь 2013 г., Тим Клим — tclem):

Начиная с сегодняшнего дня, мы возвращаем предоставленные области как часть ответа access_token.
Например, если вы создаете POST с MIME-типом application/json, вы увидите дополнительное поле для предоставленных областей.

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

Прямо сейчас эти области будут идентичны тем, что вы просили, но мы движемся к набору функций, который позволит пользователям GitHub редактировать свои области, фактически предоставляя вашему приложению меньший доступ, чем вы изначально запрашивали.< br> Вы должны знать об этой возможности и соответствующим образом настроить поведение своего приложения.

Некоторые вещи, на которые следует обратить внимание и помнить:

  • Большинство сторонних приложений, использующих GitHub OAuth для идентификации пользователей, достигают наибольшего успеха, начиная с запроса на минимальный доступ, который приложение может сойти с рук.
    Что-то вроде отсутствия областей действия или просто user:email очень разумно.

  • Важно обрабатывать случаи ошибок, когда пользователи решают предоставить вам меньший доступ, чем вы изначально запрашивали.
    Теперь, когда мы отображаем предоставленные области в ответе access_token, приложения могут предупреждать или иным образом сообщать своим пользователям, что они будут увидеть ограниченную функциональность или быть не в состоянии выполнять некоторые действия.

  • Приложения всегда могут снова отправить пользователей обратно в поток, чтобы получить дополнительное разрешение, но не забывайте, что пользователи всегда могут сказать «нет».

person VonC    schedule 05.10.2013