HandyCafe Docs
owner it-admin

Login OAuth

HandyCafe mendukung login sosial/OAuth untuk pelanggan menggunakan Device Authorization Grant (RFC 8628). Alur ini dirancang untuk lingkungan kios dan publik di mana pelanggan tidak dapat memasukkan kredensial dengan aman di PC bersama.

Penyedia yang Didukung

Penyedia Endpoint
Google oauth2.googleapis.com
Facebook graph.facebook.com/v21.0
Apple appleid.apple.com
X (Twitter) api.x.com/2/oauth2
Discord discord.com/api/oauth2

Setiap penyedia dapat diaktifkan atau dinonaktifkan secara individual di Pengaturan > OAuth.

Alur Autentikasi

Alur otorisasi perangkat berlangsung melalui langkah berikut:

  1. Pelanggan memilih penyedia -- di layar idle klien, pelanggan mengetuk tombol penyedia (misalnya Google, Discord).
  2. Klien mengirim permintaan ke server -- klien memberi tahu server HandyCafe bahwa login OAuth telah dimulai.
  3. Server meminta kode perangkat -- server menghubungi endpoint otorisasi perangkat penyedia yang dipilih dan menerima kode perangkat, kode pengguna, dan URI verifikasi.
  4. Klien menampilkan kode -- klien menampilkan user_code dan verification_uri kepada pelanggan, biasanya dirender sebagai kode QR untuk pemindaian yang mudah.
  5. Pelanggan melakukan autentikasi di ponsel mereka -- pelanggan memindai kode QR dengan perangkat pribadi mereka (ponsel atau tablet) dan menyelesaikan autentikasi di situs web penyedia.
  6. Server melakukan polling untuk token -- server secara berkala melakukan polling ke penyedia untuk token. Status polling meliputi:
    • Tertunda -- pelanggan belum menyelesaikan autentikasi.
    • Perlambat -- polling terlalu sering; server mundur.
    • Berhasil -- autentikasi selesai; token diterima.
    • Kedaluwarsa -- kode perangkat telah kedaluwarsa sebelum autentikasi.
    • Kesalahan -- terjadi kesalahan yang tidak terduga.
  7. Server mengambil info pengguna -- saat berhasil, server menggunakan token untuk mengambil profil pelanggan dari penyedia, termasuk provider_uid, email, name, dan avatar_url.
  8. Admin menyetujui atau menolak -- permintaan login muncul di Halaman Permintaan. Admin atau kasir meninjau dan menyetujui atau menolak permintaan.
  9. Anggota dibuat atau ditautkan -- jika disetujui, akun anggota baru dibuat atau identitas OAuth ditautkan ke anggota yang ada.
  10. Sesi klien dimulai -- klien menerima konfirmasi dan sesi pelanggan dimulai.

Pertimbangan Keamanan

  • Kredensial tidak pernah menyentuh PC bersama. Pelanggan melakukan autentikasi di perangkat pribadi mereka saja. Tidak ada kata sandi atau token yang dimasukkan di mesin klien.
  • Gerbang persetujuan admin. Setiap permintaan login OAuth harus disetujui oleh admin atau kasir sebelum sesi dimulai, mencegah akses yang tidak sah.
  • Persyaratan kredit yang dapat dikonfigurasi. Opsi "izinkan login tanpa kredit" dapat diaktifkan atau dinonaktifkan, mengontrol apakah pelanggan memerlukan saldo positif untuk login melalui OAuth.

Konfigurasi

Penyedia OAuth dikonfigurasi di Pengaturan > OAuth. Setiap penyedia memerlukan kredensial klien sendiri (client ID dan client secret) yang diperoleh dari konsol pengembang penyedia. Aktifkan hanya penyedia yang ingin Anda tawarkan kepada pelanggan.