JWT-аутентификация с использованием WP-подхода

8

Мы используем JWT ( JSON Web Token ) для аутентификации нашего приложения WordPress с помощью внешнего сервиса. Текущий поток, о котором мы думаем, выглядит так:

  1. Пользователь входит на родительский сайт
  2. Родительский сайт отправляет запрос POST с информацией о пользователе и токеном JWT на сайт WordPress.
  3. На сайте WP хранится токен JWT
  4. Токен проверяется на срок действия каждый раз, когда пользователь посещает новую страницу, и если срок действия токена истек, он будет перенаправлен на родительский сайт для повторного входа в систему.

Мои вопросы:

  1. Это правильный подход?
  2. Как мне сохранить токен JWT? Печенье? Или в базе данных, с информацией о пользователе в качестве уникального идентификатора? Примечание: пользователи не будут зарегистрированы на сайте WP.
  3. Как проверить срок действия?

Существует плагин WP для JWT, но нет документации для него, поэтому я не уверен, что он будет служить моей цели.

Рутвик Гангурде
источник
хммм wtf это JWT?
Марк Каплун
Добавлены соответствующие ссылки. Проверьте.
Рутвик Гангурде,
Хорошо, теперь я знаю, что такое JWT. Я до сих пор не понимаю вопроса и почему он специфичен для WordPress. Нет ли лучшего руководства для этого? В любом случае рекомендации по плагину / библиотеке не по теме ....
Марк Каплун
1
Я не хочу рекомендации плагинов, я пишу свой собственный код. Удалена последняя строка, которая заставила вас так думать.
Рутвик Гангурде,

Ответы:

8

Это появилось как уведомление из-за upvote. Вот как я это решил.

  1. Конечная точка, закодированная в приложении, которое я должен аутентифицировать, подготавливает токен.
  2. Токен должен быть в указанном формате.
  3. Затем он должен быть закодирован в формате base64 и зашифрован в хеше.
  4. wp_initОбработчик должен быть использован для обработки запроса POST , отправленный в конечной точке, чтобы извлечь маркер.
  5. Ключ будет передан другим способом, используемым для расшифровки.
  6. После извлечения токена сравните его с локально сгенерированным токеном с той же информацией.
  7. Сохраните его в файле cookie и проверяйте его при каждом доступе к странице. Вы можете истечь через некоторое время или продолжать увеличивать интервал времени при каждом доступе к странице.

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

Рутвик Гангурде
источник
0

Включение единого входа в WordPress заняло у меня более 18 часов борьбы, но может занять несколько минут:

По сути, вам нужно использовать https://wordpress.org/plugins/wp-force-login/ и модифицированную версию https://as.wordpress.org/plugins/jwt-authenticator/, а затем создать аутентификацию. -защищенная конечная точка на вашем главном сайте, которая генерирует JWT (JSON Web Token) и перенаправляет обратно на специальный URL-адрес вашего сайта WordPress.

Смотрите полный код здесь .

Райан
источник