2011-05-08 2 views
111

Я пытаюсь реализовать поток Resource Owner & Password Credentials из спецификации OAuth 2. У меня возникли проблемы с пониманием значения token_type, которое отправляется обратно с допустимым ответом. В спецификации все примеры показывают "token_type":"example", но говорит, что это должно бытьЧто означают токены и токены в OAuth 2?

token_type ТРЕБУЕТСЯ. Тип маркера, выданного, как описано в Section 7.1. Значение не зависит от регистра.

Может кто-нибудь объяснить это мне?

ответ

28

Любой может определить «token_type» как расширение OAuth 2.0, но в настоящее время тип токена «предъявителя» является наиболее распространенным.

https://tools.ietf.org/html/rfc6750

В основном это то, что с помощью Facebook. Однако их реализация немного отстает от последней спецификации.

Если вы хотите быть более безопасным, чем Facebook (или как безопасно, как OAuth 1.0, который имеет «подпись»), вы можете использовать маркерный тип «mac».

Однако это будет трудно, так как спецификация mac все еще быстро меняется.

https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05

129

token_type является параметром в маркер доступа генерирует вызов к серверу авторизации, который по существу представляет, каким образом access_token будет создан и представлен для звонков доступа к ресурсам. Вы предоставляете token_type в вызове генерации токена доступа на сервер авторизации.

Если вы даете Bearer (по умолчанию на большинстве реализации), access_token генерируется и отправляется обратно к вам. Носитель можно просто понять как «дать доступ к носителю этого знака». Один действительный токен и вопрос не задан. С другой стороны, если вы выбираете Mac и sign_type (по умолчанию hmac-sha-1 на большинстве реализации), маркер доступа формируется и хранится в секрете в Key Manager в качестве атрибута, и зашифрованный секрет отправляется обратно в access_token

Да, вы можете используйте свою собственную реализацию token_type, но это может не иметь особого смысла, поскольку разработчикам необходимо будет следовать вашему процессу, а не стандартным реализациям OAuth.

+12

Я нахожу «предоставить доступ к носителю этого знака», что упрощает его понимание. Это эквивалент выдачи чека «Дайте деньги на предъявителя чека». – NVM

+0

@NVM Спасибо за предложение, это, безусловно, имеет смысл. Я обновил то же самое. –

2

Mozilla MDN Header Information

Bearer Токен
Маркер безопасности с тем свойством, что любая сторона, во владении лексемы (а «носителем») может использовать маркер в любом случае, что любая другая сторона, во владении она может. Использование токена-носителя не требует наличия носителя для доказательства наличия криптографического ключевого материала (доказательство владения).

Идентификатор маркера носителя или токен обновления создается для вас сервером аутентификации. Когда пользователь аутентифицирует ваше приложение (клиент), сервер аутентификации затем отправляется и генерирует для вашего токена-носителя (токен обновления), который затем можно использовать для получения токена доступа.

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

Смежные вопросы