Что такое токены на предъявителя и token_type в OAuth 2?

141

Я пытаюсь реализовать поток учетных данных владельца ресурса и пароля из спецификации OAuth 2. Мне трудно понять token_typeзначение, которое возвращается с действительным ответом. В спецификации показаны все примеры, "token_type":"example"но сказано, что это должно быть

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

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

Мика
источник

Ответы:

159

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

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

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

Абхишек Тьяги
источник
28
Я считаю, что "предоставить доступ владельцу этого токена" упрощает понимание. Это эквивалент выдачи чека «отдать деньги предъявителю чека».
NVM
@NVM Спасибо за предложение, это, безусловно, имеет смысл. Я так же обновил.
Abhishek
33

Любой может определить "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

нов матаке
источник
15

Из RFC 6750, раздел 1.2 :

Жетон на предъявителя

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

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

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

См. Также: Информация заголовка Mozilla MDN .

user8307736
источник