Otentikasi JWT dengan WP - Approach

8

Kami menggunakan JWT ( JSON Web Token ) untuk mengautentikasi aplikasi WordPress kami dengan layanan eksternal. Aliran saat ini yang kami pikirkan adalah seperti ini:

  1. Pengguna masuk di situs induk
  2. Situs induk mengirimkan permintaan POST dengan informasi pengguna dan token JWT ke situs WordPress
  3. Situs WP menyimpan token JWT
  4. Token diperiksa untuk kedaluwarsa setiap kali pengguna mengunjungi halaman baru, dan jika token tersebut kedaluwarsa, pengguna akan diarahkan ke situs induk untuk login lagi.

Pertanyaan saya:

  1. Apakah ini pendekatan yang tepat?
  2. Bagaimana cara menyimpan token JWT? Sebuah biskuit? Atau dalam database, dengan informasi pengguna sebagai pengidentifikasi unik? Catatan: Pengguna tidak akan terdaftar di situs WP.
  3. Bagaimana saya memeriksa kedaluwarsa?

Ada plugin WP untuk JWT tetapi tidak ada dokumentasi untuk itu, maka saya tidak yakin apakah itu akan memenuhi tujuan saya.

Rutwick Gangurde
sumber
hmmm wtf apakah jwt?
Mark Kaplun
Menambahkan tautan yang relevan. Memeriksa.
Rutwick Gangurde
ok, sekarang saya tahu apa itu JWT, saya masih belum mengerti pertanyaannya dan mengapa khusus untuk wordpress. Apakah tidak ada panduan praktik terbaik untuk itu? Pokoknya plugin / pustaka rekomendasi di luar topik ....
Mark Kaplun
1
Saya tidak ingin rekomendasi plugin, saya sedang menulis kode saya sendiri. Menghapus baris terakhir yang membuat Anda berpikir begitu.
Rutwick Gangurde

Jawaban:

8

Ini muncul sebagai pemberitahuan karena upvote. Inilah cara saya menyelesaikannya.

  1. Titik akhir dikodekan dalam aplikasi yang saya harus mengotentikasi dengan menyiapkan token.
  2. Token harus dalam format yang ditentukan.
  3. Maka harus basis 64 dikodekan dan hash dienkripsi.
  4. The wp_inithandler harus digunakan untuk menangani permintaan POST dikirim oleh endpoint, untuk mengekstrak token.
  5. Kunci akan dibagikan melalui beberapa cara lain, yang digunakan untuk dekripsi.
  6. Setelah token diekstraksi, bandingkan dengan token yang dibuat secara lokal dengan informasi yang sama.
  7. Simpan dalam cookie, dan periksa di setiap akses halaman. Anda dapat kedaluwarsa setelah beberapa saat atau terus meningkatkan slice waktu pada setiap akses halaman.

Titik akhir bisa dalam bahasa apa pun. Juga ini adalah aliran umum itu, Anda dapat menggunakannya di mana saja Anda inginkan.

Rutwick Gangurde
sumber
0

Mengaktifkan Single-Sign-On di WordPress membutuhkan waktu lebih dari 18 jam untuk saya tetapi mungkin hanya perlu beberapa menit:

Pada dasarnya, Anda ingin menggunakan https://wordpress.org/plugins/wp-force-login/ dan versi modifikasi https://as.wordpress.org/plugins/jwt-authenticator/ dan kemudian membuat auth endpoint yang dilindungi di situs utama Anda yang menghasilkan JWT (JSON Web Token) dan mengarahkan kembali ke URL khusus situs WordPress Anda.

Lihat kode lengkap di sini .

Ryan
sumber