Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Otentikasi dan otorisasi menggunakan Auth0 di PHP

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Imam Firmansyah (you can also view the original English article)

Dalam artikel ini, kita akan menjelajahi layanan Auth0, yang menyediakan otentikasi dan otorisasi sebagai layanan. Auth0 memungkinkan Anda untuk mengatur otentikasi dasar dan fitur otorisasi untuk aplikasi Anda dalam waktu singkat.

Apakah Auth0?

Auth0 adalah otentikasi sebagai fasilitas layanan yang membuat implementasi fitur terkait otentikasi pada website Anda menjadi mudah. Jika Anda telah membangun aplikasi dan Anda hanya ingin meng-outsource fitur otentikasi dan otorisasi, layanan seperti Auth0 adalah sesuatu yang harus Anda pertimbangkan.

Biarkan saya meringkas dengan singkat apa yang Auth0 tawarkan:

  • SSO (Single Sign-On)
  • Otentikasi Multifaktor
  • Login tanpa kata sandi
  • Manajemen pengguna
  • dan banyak lagi

Dalam artikel ini, kita akan membahas beberapa metode single sign-on yang dapat Anda terapkan pada aplikasi website Anda untuk memanfaatkan fitur otentikasi yang disediakan oleh layanan Auth0.

Di bagian pertama artikel, kita akan menjelajahi cara menyiapkan fungsi otentikasi dasar di aplikasi web PHP pada sisi server. Di bagian kedua, Saya akan menjelaskan cara Anda dapat mengamankan API khusus Anda dengan menyiapkan OAuth otorisasi menggunakan layanan Auth0.

Integrasi Otentikasi Server-Side

Di bagian ini, kita akan membahas bagaimana Anda dapat dengan cepat mengatur otentikasi dasar untuk aplikasi web sisi server menggunakan Auth0. Sebenarnya, tim Auth0 sudah menyediakan contoh GitHub berguna yang menunjukkan contoh-contoh dasar, jadi kami akan menggunakannya daripada kita membuatnya kembali.

Sebelum melanjutkan, pastikan untuk menginstal Composer karena itu akan digunakan untuk menginstal Auth0 SDK yang menggunakan composer.json file. Juga, jika Anda ingin mengikuti contoh pada artikel ini, lanjutkan dan dapatkan akun gratis dengan Auth0.

Mengatur Proyek

Mari kita lanjutkan dan ambil tiruan dari proyek sampel.

Silakan jalankan composer install perintah untuk menginstal dependensi.

Menurut file composer.json, seharusnya sudah menginstal package vlucas/phpdotenv dan auth0/auth0-php.

Library vlucas/phpdotenv digunakan untuk menginisialisasi variabel environtment dari file .env. Dengan demikian, ini memungkinkan Anda untuk memisahkan konfigurasi dari perubahan kode di antara environtment.

Di sisi lain, package auth0/auth0-php adalah package yang akan membantu kami mengatur otorisasi dalam aplikasi kami.

Selanjutnya, mari kita mengatur konfigurasi untuk aplikasi kita pada file .env. Lanjutkan dan buat file .env dengan menyalinnya dari file .env.example.

Ini berisi nilai konfigurasi yang akan digunakan oleh library Auth0.

Anda harus dapat menemukan sebagian besar pengaturan di bawah Applications > Default App > Settings pada dasboard Auth0.  Harap dicatat bahwa saya menggunakan aplikasi default yang dibuat oleh sistem. Tentu saja, Anda dapat melanjutkan dan membuat aplikasi baru jika Anda ingin melakukannya.

AUTH0_CALLBACK_URL adalah URL aplikasi Anda di mana Auth0 akan mengalihkan pengguna setelah melakukan proses login dan logout. Nilai yang Anda tetapkan dalam bidang ini harus dikonfigurasi di Allowed Callback URLs dalam pengaturan aplikasi pada dasboard Auth0.

Anda akan menemukan tiga file utama yang mengimplementasikan sebagian besar logika autentikasi.

  • index.php : Ini adalah halaman utama yang menampilkan tombol login atau logout berdasarkan keadaan pengguna.
  • login.php : Script ini akan dimulai ketika Anda melakukan proses klik pada tombol login, dan ini akan mengarahkan pengguna ke antarmuka login Auth0 untuk melakukan proses login. Setelah masuk, mereka akan diarahkan kembali ke AUTH0_CALLBACK_URL.
  • logout.php : Script ini akan dimulai ketika Anda melakukan proses klik pada tombol logout, dan ini akan mengarahkan pengguna ke Auth0 melalui background, keluar, dan mengembalikannya ke AUTH0_CALLBACK_URL.

File Proyek Utama

Mari kita lewati setiap file dalam proyek awal dengan cepat.

Login Script

Kami akan mulai dengan file login.php.

Di awal, kami telah menyertakan autoloader yang bertanggung jawab untuk memuat Auth0 dan environment variabel dari kelas terkait. Setelah itu, kami menginisialisasi variabel konfigurasi dari file .env menggunakan fungsi getenv.

Selanjutnya, kita akan melakukan proses instantiate objek Auth0 dan memanggil method login yang mengarahkan pengguna ke Auth0 untuk melakukan proses login. Setelah login, pengguna akan diarahkan kembali ke website kami.

Anda dapat melakukan proses login menggunakan akun sosial media seperti Facebook, Google dan sejenisnya, atau membuat akun baru saat masuk. Dalam kedua kasus tersebut, Auth0 akan membuat data untuk pengguna baru di akhir proses. Anda dapat mengaktifkan berbagai macam cara login melalui sosial media di dalam Connections > Social pada dashboard Auth0. Selain itu, Anda dapat memeriksa daftar pengguna yang masuk menggunakan Auth0 melalui dasboard Auth0 di bawah tautan Pengguna (Users).

Logout Script

Selanjutnya, mari dengan cepat kita lihat file logout.php.

Ini bekerja hampir sama dengan file login.php, akan tetapi hanya akan dipanggil ketika pengguna melakukan proses log out. Method logout ini akan di panggil untuk mengakhiri session pengguna dalam aplikasi Anda. Setelah itu, pengguna akan dialihkan menuju Auth0 sehingga service akan diberitahu tentang aktivitas logout dari pengguna. Terakhir, pengguna akan diarahkan kembali menuju aplikasi Anda.

File Index

Akhirnya, mari kita lihat file index.php, yang merupakan titik masuk dari aplikasi kita.

Di sini, kami telah menggunakan method getUser dari objek $auth0 untuk melihat apakah ada session yang aktif. Jika tidak ada session yang aktif, kami akan menampilkan tautan Sign In, yang membawa pengguna menuju login.php dan memulai alur dari proses login.  Di sisi lain, kami akan menyapa pengguna dan menampilkan tautan Logout jika pengguna sudah berhasil masuk.

Jadi itu adalah implementasi dasar dari aliran otentikasi untuk sisi server aplikasi.

Amankan API Khusus Anda Dengan OAuth2

Pada bagian ini, kita akan melihat bagaimana Anda dapat mengamankan API khusus Anda dengan menerapkan alur perizinan melalui kode otorisasi OAuth2. Saya harap Anda terbiasa dengan aliran standar perizinan melalui kode otorisasi karena kami tidak akan membahas detailnya. Lihat beberapa postingan kami yang lainnya di sini pada Envato Tuts+ jika Anda ingin memahami OAuth2 dengan Cepat.

Sebaliknya, kami akan langsung menyelami penerapan yang sebenarnya. Lanjutkan dan buat file auth_code_grant_example.php dengan konten berikut.

Mari kita lihat bagaimana kode ini bekerja!

Memulai Arus Otorisasi

Pertama, kami menyiapkan tautan yang mengirim pengguna menuju server Auth0 untuk memulai aliran otorisasi.

Silahkan ganti {AUDIENCE}, {CLIENT_ID}, dan {CALLBACK_URL} dengan nilai yang sesuai dengan aplikasi Anda. Parameter {AUDIENCE} harus diganti dengan bagian nilai Identifier yang ditemukan di dalam APIs > {YOUR API APPLICATION} > Settings pada dashboard Auth0.

{SOME_RANDOM_STRING} harus diganti dengan nilai unik yang sulit ditebak. String ini digunakan untuk mencegah serangan CSRF. Juga, pastikan untuk mengganti {AUTH0_DOMAIN} dengan nama domain Anda, seperti yang telah kita bahas sebelumnya.

Mendapatkan Akses Token

Saat pengguna melakukan proses klik pada tautan Sign In, mereka akan diarahkan menuju server Auth0 untuk autentikasi. Setelah otentikasi, mereka akan diminta untuk mengotorisasi akses aplikasi ke profil Anda.  Setelah otorisasi, pengguna akan diarahkan kembali menuju aplikasi Anda dengan code sebagai parameter $_GET.

Selanjutnya, kita dapat menukarkan code ini untuk mendapatkan akses token.

Seperti yang Anda lihat, dibutuhkan satu panggilan CURL untuk mengambil akses token. 

Memanggil Endpoint API Khusus Anda

Setelah Anda memiliki akses token, Anda dapat memanggil endpoint API khusus Anda dengan menyertakannya di header.

Melindungi API Endpoint Auth0

Nama fiktif sumber API file adalah demo_api_server.php mungkin terlihat seperti ini:

Mari dengan cepat kita lalui bagian penting dari kode ini.

Memvalidasi Akses Token 

Merupakan tanggung jawab Anda untuk memvalidasi akses token masuk sebelum Anda memberikan akses ke sumber yang dilindungi. Dan itulah yang kami lakukan pada snippet berikut. Kami telah menggunakan utilitas class JWTVerifier untuk memvalidasi akses token.

{SIGNING_ALGORITHM} harus diganti dengan nilai Signing Algorithm yang ditemukan di dalam APIs > {YOUR API APPLICATION} > Settings.

Jadi, itulah cara Anda melindungi API khusus jika Anda ingin menggunakan aliran OAuth2 pada layanan Auth0.

Kesimpulan

Hari ini, kita telah melewati layanan Auth0, yang menyediakan otentikasi dan otorisasi sebagai layanan. Setelah memperkenalkan layanan Auth0, kita telah melalui beberapa contoh praktis untuk menunjukkan bagaimana Anda dapat mengintegrasikannya dengan aplikasi PHP Anda.

Jangan ragu untuk mengirim saran dan pertanyaan Anda menggunakan kolom komentar di bawah ini!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.