it-swarm-id.com

Apa cara yang tepat untuk mengautentikasi pengguna?

Beberapa tahun yang lalu saya menulis komponen kecil dan sangat tidak lengkap yang mengotentikasi pengguna yang datang dari luar Joomla! mis. aplikasi seluler.

Apakah ada cara yang tepat atau lebih disukai untuk menyerahkan ini?

7
Nestor Ledon

Berdasarkan komentar Anda, Anda mencari setup OAuth. Sejauh yang saya tahu, Joomla memiliki Oauth kelas dibangun pada inti, tetapi kelas-kelas ini adalah untuk memungkinkan Joomla bertindak sebagai klien (aplikasi seluler Anda adalah klien dalam kasus Anda). Mereka tidak memberi Anda opsi untuk berjalan sebagai server.

Saya baru-baru ini menggunakan paket ini untuk menyiapkan Server OAuth2 pada Kerangka Joomla: https://github.com/bshaffer/oauth2-server-php . Itu bekerja dengan sangat baik. Ini pasti akan memakan waktu beberapa hari untuk mengatur dan menjalankan semua, tetapi Anda pasti dapat mengatur ini dalam Joomla.

Ada beberapa metode berbeda untuk mengautentikasi pengguna dalam OAuth2. Pendekatan umum adalah meminta klien mengarahkan pengguna ke situs Anda untuk memasukkan informasi login mereka. Kemudian Anda mengarahkan pengguna kembali ke klien dengan kode yang diubah klien menjadi token akses.

Karena sepertinya Anda juga mengendalikan aplikasi seluler, ini tidak perlu. Anda memercayai klien (saya harap), jadi Anda bisa meminta pengguna untuk masuk ke aplikasi.

Anda kemudian akan menggunakan opsi "Resource Owner/Password Credentials" yang diuraikan di sini: http://bshaffer.github.io/oauth2-server-php-docs/overview/grant-types/ . Aplikasi seluler ini hanya mengirimkan pengguna/kata sandi yang dimasukkan ke situs Joomla Anda, dan kemudian situs Joomla mengirimkan token untuk validasi. Token dapat disimpan dan digunakan lain kali alih-alih meminta mereka masuk lagi.

Ini memberi Anda kendali pada situs Joomla untuk membatalkan token untuk memaksa pengguna seluler masuk lagi.

5
David Fritsch

Anda dapat menggunakan kode berikut:

JFactory::getApplication()->login($credentials);

dimana:

$credentials = Array('username' => string, 'password' => string);
4
csbenjamin

Anda ingin menggunakan sesuatu seperti OAuth/OAuth2. Ide saya di sini tidak benar OAuth tetapi berdasarkan pengetahuan saya tentang Joomla cara termudah.

Validasi pengguna melalui panggilan API ke komponen di Joomla untuk membuat token yang dilampirkan ke IP mereka, kemudian arahkan mereka dengan permintaan GET yang memvalidasi token itu dan membuat sesi untuk mereka. Token mudah diamankan karena bergantung pada IP untuk mengotentikasi pengguna yang sudah diautentikasi, cara terbaik adalah memastikan itu hanya dapat digunakan satu kali. Untuk panggilan API itu harus berupa SSL terenkripsi POST permintaan untuk hasil terbaik.

Jadi, kirim POST permintaan kepada Anda komponen yang berisi IP pengguna, nama pengguna dan kata sandi. Jika semuanya valid maka Anda mengirim kembali token. Anda kemudian mengarahkan pengguna ke komponen Anda yang berisi token itu ke mengatur sesi. Saya tidak tahu bagaimana API Joomla dapat digunakan untuk login seseorang, tetapi saya yakin ada sesuatu untuk itu.

Sunting: Tampaknya jawaban csbenjamin telah masuk ke API untuk masuk.

3
Jordan Ramstad