Что означают токены-носители и токены в OAuth 2?

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

token_type          ОБЯЗАТЕЛЬНЫЙ. Тип маркера, выданного, как описано в          Раздел 7.1. Значение не зависит от регистра.

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

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

Информация о заголовке Mozilla MDN

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

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

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