Может ли токен доступа OAuth 2.0 быть JWT?
Из того, что я могу сказать,спецификация OAuth 2.0 очень расплывчато с точки зрения того, что образуютaccess token
должен взять:
Маркер может обозначать идентификатор, используемый для извлечения информации авторизации, или может содержать информацию авторизации самодостаточным образом (то есть строку токена, состоящую из некоторых данных и подписи). Дополнительные учетные данные аутентификации, которые выходят за рамки данной спецификации, могут потребоваться для того, чтобы клиент использовал токен.
Маркер доступа обеспечивает уровень абстракции, заменяя различные конструкции авторизации (например, имя пользователя и пароль) одним токеном, понятным для сервера ресурсов. Эта абстракция позволяет выдавать маркеры доступа более ограниченно, чем разрешение на использование, используемое для их получения, а также устраняет необходимость сервера ресурсов понимать широкий спектр методов аутентификации.
Жетоны доступаможет иметь разные форматы, структурыи способы использования (например, криптографические свойства) на основе требований безопасности сервера ресурсов.Доступ к атрибутам токена и методы, используемые для доступа к защищенным ресурсамвыходят за рамки этой спецификации и определяются сопутствующими спецификациями, такими какRFC6750.
(выделение добавлено)
Связанный RFC6750 не обладает особой спецификой. Существует пример тела ответа HTTP, который показывает:
{
"access_token":"mF_9.B5f-4.1JqM",
"token_type":"Bearer",
"expires_in":3600,
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA"
}
Кажется, это указывает на то, что access_token может быть непрозрачным текстом ASCII, таким как закодированныйВеб-токен JSON (JWT)
С моей точки зрения кажется, что JWT-as-access_token обладает некоторыми желательными свойствами:
Это известная спецификация с достаточно широким распространением и клиентскими библиотеками, доступными на многих языках.
Это позволяет легко подписывать и проверять, используя проверенные криптографические библиотеки.
Поскольку он может быть декодирован в JSON, он позволит нам включать метаданные и информацию о токене в сам токен.
Мои вопросы: во-первых, допустимо ли, чтобы токен доступа был JWT? Во-вторых, если это допустимо в соответствии со спецификацией, есть ли дополнительные соображения, которые могут сделать использование JWT в качестве маркера доступа плохой идеей?