Magento 2 rest API - Bagaimana Mengelola Siklus Otentikasi API pada Aplikasi Perangkat Seluler?


9

Di Magento [2.2.4] API web ketika saya memberikan nama pengguna dan kata sandi maka menghasilkan token untuk pelanggan tertentu (Yang hanya berlaku selama 1 jam - itu dapat dikonfigurasi dari admin Magento)

http://magento.host/index.php/rest/V1/integration/customer/token?username=test.user@test.com&password=test@123

yang mengembalikan token.

Setelah membuat token, saat kami meneruskan token itu di header.

Otorisasi :: Pembawa * Nilai Token *

http://magento.host/index.php/rest/V1/customers/me

Yang mengembalikan detail pelanggan.

Kasus di atas saya jelaskan bekerja dengan baik untuk webAPI di magento2 yang saya uji di POSTMAN .

Sekarang masalahnya adalah,

Setiap jam regenerasi token dan setelah itu login lagi setiap jam tidak logis untuk Aplikasi Seluler.

Lalu bagaimana Magento mengelola data login dan otentikasi pengguna dalam aplikasi Seluler, jika dikembangkan API Sesuai Kontrak Layanan

  • Berapa lama saya harus memungkinkan saya akses token untuk eksis sebelum kadaluarsa di Mobile Application?
    • Saya tidak ingin memaksa pengguna untuk mengautentikasi ulang setiap jam di Aplikasi Seluler.
    • Cara mengelola siklus hidup token OAuth2 API dengan benar untuk Aplikasi Seluler.

Membuat perubahan di Token Akses jam seumur hidup tidak akan menjadi solusi logis, Karena Aplikasi dan web harus memiliki jam Token seumur hidup yang berbeda

masukkan deskripsi gambar di sini


Sudahkah Anda mencoba memperpanjang token seumur hidup dari store-> konfigurasi-> layanan-> OAuth-> Pelanggan Token Seumur Hidup (Jam) -?
Manthan Dave

Tidak, memeriksanya dengan membuat nilai kosong dari Token Lifetime (Hours) Pelanggan - yang akan menonaktifkan fitur jika nilainya kosong. Jadi mungkin berhasil.
Aditya Shah

Itu tidak akan terjadi karena ketika kita mengosongkan nilai Pelanggan Token Seumur Hidup maka itu akan menumbuhkan token setiap permintaan dan bahwa semua data tidak akan kedaluwarsa (setiap data permintaan) dan itu akan disimpan dalam oauth_token
Aditya Shah

Jika Anda memiliki akses ke kode toko yang Anda sambungkan atau Anda dapat menulis modul magento untuk aplikasi Anda, salah satu solusinya adalah memperbarui tanggal token yang valid pada setiap permintaan ketika token pelanggan digunakan, sama seperti sesi dilakukan. Kemudian sampai aplikasi Anda melakukan permintaan apa pun dalam token pelanggan seumur hidup tidak akan dipaksa untuk mengesahkan ulang.
Zefiryn

tetapi berdasarkan pada bendera mana kami menganggap bahwa token pelanggan digunakan.
Aditya Shah

Jawaban:


3

Untuk memeriksa token pelanggan yang valid, Magento memeriksa dua kriteria

  1. Token dibatalkan (Itu terjadi saat pengguna keluar): dicabut disimpan sebagai 1 di tabel oauth_token
  2. Token sebenarnya ada dalam oauth_tokentabel

Magento menjalankan cron untuk menghapus token yang kedaluwarsa (sesuai masa pakai dalam pengaturan admin) dari tabel ( vendor\magento\module-integration\Cron\CleanExpiredTokens.php)

Solusi yang mungkin

  1. Tingkatkan Token seumur hidup dari admin
  2. Timpa cron yang disebutkan di atas untuk hanya menghapus token yang dicabut yaitu token pelanggan yang keluar

Semoga ini menjawab pertanyaan Anda


Saya merasa Anda berbicara tentang peran pengguna? seperti admin ... juga tolong terima jawabannya
Vishwas Bhatnagar

Tidak, saya berbicara tentang otentikasi M2 yang digunakan dalam aplikasi seluler di back-end, Karena setiap jam regenerasi token dan setelah itu login lagi setiap jam tidak logis untuk Aplikasi Seluler. Seharusnya hanya mengotentikasi sekali dan ketika pengguna mengubah kata sandi (aktivitas seperti itu)
Aditya Shah

saya pikir saya telah menyarankan solusi untuk itu dalam jawaban saya di atas kami menggunakan solusi yang sama dan bekerja dengan sempurna untuk kami
Vishwas Bhatnagar

1
Terima kasih sobat!! Saya banyak mencari tetapi tidak menemukan solusi kecuali milik Anda :)
Aditya Shah
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.