Чем JWT отличается от OAuth 2.0? - PullRequest
0 голосов
/ 20 ноября 2018

Я создал пример приложения, используя Sprint Boot, Spring security и JWT, и определил свои собственные фильтры аутентификации и авторизации. При выполнении базовой аутентификации (передача имени пользователя и пароля) я получаю токен JWT в формате xxxx.yyyy.zzzz, где xxxx - заголовок, yyyy - полезная нагрузка, а zzzz - подпись, и каждая часть кодируется с использованием кодера Base64URL. Что я не понимаю, так это то, как JWT отличается от OAuth 2.0. В OAuth 2.0 мы можем передавать 2 типа grant_types как «имя пользователя» или «учетные данные клиента», а также для передачи идентификатора клиента и секретного идентификатора, чтобы получить токены доступа и обновления.

Пожалуйста, помогите прояснить мои следующие сомнения: - 1) Является ли JWT легче OAuth 2.0, поскольку он не содержит токен обновления, а только токен доступа? 2) JWT нельзя использовать для создания автономного сервера авторизации, как мы можем сделать автономный сервер авторизации, используя аннотацию @EnableAuthorizationServer, когда речь идет об OAuth 2.0. Правильно ли мое предположение? 3) JWT не принимает идентификатор клиента / секретный клиент, а просто используется в качестве базовой аутентификации для получения токенов на предъявителя? 4) Различен ли формат маркера доступа (или канала-носителя) для OAuth2.0 и JWT?

Я видел пример, где использовались OAuth 2.0 и JWT. OAuth 2.0 должен был создать сервер авторизации, который возвращает маркер JWT только в конце, но не понимал, почему JWT использовался, если OAuth2.0 может возвращать токен сам по себе.

Спасибо

1 Ответ

0 голосов
/ 28 ноября 2018

JWT - токен на основе JSON, определенный в RFC 7519 .OAuth 2.0 - это структура авторизации, определенная в RFC 6749 .Сравнивать оба - все равно что спрашивать: «Чем глюкоза отличается от яблочного пирога?».

Однако можно объединить OAuth 2.0 и JWT, как это определено в RFC 7523 - JSON WebПрофиль токена (JWT) для аутентификации и авторизации клиента OAuth 2.0.Он стандартизирует, как использовать JWT в качестве токенов-носителей в рамках OAuth 2.0, что позволяет то, что я называю аутентификацией без сохранения состояния .

По вашим вопросам:

  1. или вы не используете JWT в качестве токенов на предъявителя, не влияет на то, хотите ли вы раздавать обновленные токены.
  2. Не уверен, получу ли я ваши вопросы.Однако использование JWT позволяет принимать децентрализованные решения об аутентификации без сохранения состояния, поскольку нет необходимости централизованно хранить состояние токена.Однако никто не мешает вам иметь автономный сервер авторизации.
  3. То, как вы хотите выполнять аутентификацию, не имеет ничего общего с JWT.Это все еще OAuth 2.0.
  4. В OAuth 2.0 токены-носители считаются непрозрачными токенами - формат значения не имеет.Если вы используете JWT в качестве токенов на предъявителя, вам необходимо следовать соответствующему RFC.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...