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

Menyiapkan Server OAuth2 Menggunakan Passport di Laravel

by
Difficulty:IntermediateLength:MediumLanguages:

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

Dalam artikel ini, kita akan mengeksplorasi bagaimana anda dapat menyiapkan server OAuth2 lengkap di Laravel menggunakan Passport library Laravel. Kita akan membahas konfigurasi server yang diperlukan bersama dengan contoh nyata untuk menunjukkan bagaimana anda dapat menggunakan OAuth2 API.

Saya berasumsi bahwa anda memahami konsep dasar OAuth2 dan alurnya saat kita akan mendiskusikannya dalam konteks Laravel. Sebenarnya, Passport library Laravel membuat anda cukup mudah untuk menyiapkan server OAuth2 dengan cepat di aplikasi anda. Dengan demikian, aplikasi pihak ketiga lainnya dapat menggunakan API yang disediakan oleh aplikasi anda.

Di bagian pertama artikel, kita akan memasang dan mengonfigurasi pustaka yang diperlukan, dan paruh kedua membahas cara menyiapkan sumber daya demo di aplikasi anda dan menggunakannya dari aplikasi pihak ketiga.

Konfigurasi Server

Di bagian ini, kita akan menginstal dependensi yang diperlukan untuk membuat library Passport dengan Laravel. Setelah instalasi, ada sedikit konfigurasi yang harus kita lalui sehingga Laravel dapat mendeteksi Passport library.

Mari kita lanjutkan dan install Passport library menggunakan composer.

Hal itu cukup banyak untuk instalasi Passport library yang bersangkutan. Sekarang mari kita pastikan Laravel tahu tentang ini.

Dengan menggunakan Laravel, anda mungkin menyadari konsep service provider yang memungkinkan anda untuk mengonfigurasi layanan dalam aplikasi anda. Jadi, kapan pun anda ingin mengaktifkan layanan baru di aplikasi Laravel anda, anda hanya perlu menambahkan entri service provider terkait di config/app.php.

Jika Anda belum mengetahui Laravel service provider, saya akan sangat menyarankan Anda melakukan sesuatu untuk diri Anda sendiri melalui artikel pengantar ini yang menjelaskan dasar-dasar service provider di Laravel.

Dalam kasus ini, kita hanya perlu menambahkan PassportServiceProvider ke daftar service provider di config/app.phpseperti yang ditunjukkan pada cuplikan berikut.

Selanjutnya, kita perlu menjalankan perintah migrate yang akan membuat tabel yang diperlukan dalam database untuk Passport library.

Tepatnya, ia menciptakan tabel mengikuti bentuk tabel dalam database.

Selanjutnya, kita perlu membuat sepasang public key dan private key yang akan digunakan oleh Passport library untuk enkripsi. Seperti yang diharapkan, Passport library menyediakan artisan command untuk membuatnya dengan mudah.

Command diatas seharusnya membuat key di storage/oauth-public.key dan storage/oauth-private.key. Ia juga menciptakan beberapa demo client yang kredensial yang akan kita bahas nanti.

Selanjutnya, mari kita oauthify User model class yang sudah ada sebelumnya menggunakan Laravel untuk otentikasi. Untuk melakukan itu, kita perlu menambahkan HasApiTokens ke dalam User model class. Mari kita lakukan seperti yang ditunjukkan pada cuplikan berikut.

HasApiTokens berisi metode pembantu yang digunakan untuk memvalidasi token dalam permintaan dan memeriksa ruang lingkup sumber daya yang diminta dalam konteks user yang saat ini terautentikasi.

Selanjutnya, kita perlu mendaftarkan route yang disediakan oleh Passport library dengan aplikasi Laravel kita. Route ini akan digunakan untuk operasi OAuth2 standar seperti otorisasi, meminta token akses, dan sejenisnya.

Dalam boot file app/Providers/AuthServiceProvider.php mari daftarkan route Passport library.

Terakhir, kita perlu mengubah api driver dari token ke passport di file config/auth.php, karena kita akan menggunakan Passport library untuk otentikasi API.

Sejauh ini, kita telah melakukan semua yang diperlukan menyangkut konfigurasi server OAuth2.

Mengatur Demo Resources

Di bagian sebelumnya, kita telah bekerja keras untuk menyiapkan server otentikasi OAuth2 di aplikasi kita. Di bagian ini, kita akan menyiapkan demo resources yang dapat di request melalui API call.

Kita akan mencoba tetap sederhana. Demo resources kita akan mengembalikan informasi pengguna dengan ketentuan yang terdapat pada uid parameter yang valid di dalam GET request.

Mari buat file controller app/Http/Controllers/UserController.phpdengan konten berikut.

Seperti biasa, Anda perlu menambahkan route yang terkait juga, yang seharusnya Anda tambahkan dalam file routes/web.php file. But what we are talking about is the API route, and thus it needs special treatment.

API route didefinisikan dalam file routes/api.php. Jadi, mari kita lanjutkan dan tambahkan API route yang sudah kita sesuaikan seperti yang ditunjukkan pada cuplikan berikut.

Meskipun kita mendefinisikannya sebagai /user/get, API route yang efektif adalah /api/user/get, dan itulah yang harus Anda gunakan ketika Anda melakukan request resource atas route tersebut. Awalan api secara otomatis ditangani oleh Laravel, dan Anda tidak perlu khawatir tentang itu!

Di bagian berikutnya dan terakhir, kita akan membahas bagaimana Anda dapat membuat client credentials dan menggunakan OAuth2 API.

Cara Menggunakan API OAuth2

Sekarang setelah kita menyiapkan server OAuth2 di aplikasi kita, pihak ketiga dapat terhubung ke server kita dengan OAuth dan menggunakan API yang tersedia di aplikasi kita.

Pertama-tama, aplikasi pihak ketiga harus mendaftar dengan aplikasi kita untuk dapat menggunakan API. Dengan kata lain, mereka dianggap sebagai aplikasi client, dan mereka akan menerima id clinet dan client secret setelah pendaftaran.

Library Passport menyediakan artisan command untuk membuat akun client tanpa banyak kerumitan. Mari kita lanjutkan dan membuat akun demo client.

Ketika Anda menjalankan command artisan passport:client , ia menanyakan beberapa pertanyaan sebelum membuat akun client. Dari semua itu, hal terpenting yang ditanyakan kepada Anda adalah tentang callback URL.

Callback URL adalah tempat pengguna akan diarahkan kembali ke pihak ketiga setelah otorisasi. Dan di sanalah kode otorisasi yang seharusnya digunakan dalam pertukaran untuk token akses akan dikirim. Kita akan membuat file itu sebentar lagi.

Sekarang, kita siap menguji OAuth2 API di aplikasi Laravel.

Untuk tujuan demonstrasi, pertama-tama saya akan membuat direktori oauth2_client di bawah document root. Idealnya, file-file ini akan ditempatkan di ujung pihak ketiga yang ingin menggunakan API dalam aplikasi Laravel kita.

Mari kita buat file oauth2_client/auth_redirection.php dengan isi sebagai berikut.

Pastikan untuk mengubah parameter client_id and redirect_uriuntuk mencerminkan pengaturan Anda sendiri — yang Anda gunakan saat membuat akun demo client.

Selanjutnya, mari kita buat file oauth2_client/callback.php engan konten berikut.

Sekali lagi, pastikan untuk menyesuaikan URL dan client credentials sesuai dengan pengaturan Anda pada file di atas.

Bagaimana Cara Kerjanya Secara Keseluruhan

Di bagian ini, kita akan mengujinya secara keseluruhan dari perspektif end user. Sebagai end user, akan ada dua aplikasi di depan Anda:

  1. Yang pertama adalah aplikasi Laravel yang terdapat akun anda didalamnya. Akun ini memegang informasi Anda yang dapat Anda bagikan dengan aplikasi pihak ketiga lainnya.
  2. Yang kedua adalah aplikasi demo client pihak ketiga, auth_redirection.php dan callback.php, yang ingin mengambil informasi Anda dari aplikasi Laravel menggunakan OAuth API.

Alurnya dimulai dari aplikasi client pihak ketiga. Lanjutkan dan bukae http://localhost/oauth2_client/auth_redirection.php URL di browser Anda, dan itu harus mengarahkan Anda ke aplikasi Laravel. Jika Anda belum masuk ke aplikasi Laravel, aplikasi akan meminta Anda untuk melakukannya terlebih dahulu.

Setelah user masuk, aplikasi akan menampilkan halaman otorisasi.

Jika user mengotorisasi permintaan itu, user akan dialihkan kembali ke aplikasi client pihak ketiga di http://localhost/oauth2_client/callback.php bersama dengan code sebagai parameter GET yang berisi kode otorisasi.

Setelah aplikasi pihak ketiga menerima kode otorisasi, aplikasi pihak ketiga bisa menukar kode itu dengan aplikasi Laravel untuk mendapatkan token akses. Dan itulah yang dilakukan dalam potongan file oauth2_client/callback.php berikut.

Selanjutnya, pertama-tama aplikasi pihak ketiga memeriksa respons CURL request untuk melihat apakah itu berisi token akses yang valid.

Segera setelah aplikasi pihak ketiga mendapatkan token akses, mereka bisa menggunakan token itu untuk membuat API call lebih lanjut untuk melakukan request resource yang diperlukan dari aplikasi Laravel. Tentu saja, token akses harus diteruskan di setiap request yang meminta resource dari aplikasi Laravel.

Kita telah mencoba untuk meniru use-case karena aplikasi pihak ketiga yang ingin mengakses informasi user dari aplikasi Laravel. Dan kita telah membangun titik akhir API, http://your-laravel-site-url/api/user/get, dalam aplikasi Laravel yang memfasilitasi itu.

Jadi itulah alur lengkap bagaimana Anda seharusnya menggunakan OAuth2 API di Laravel.

Dan dengan itu, kita telah mencapai akhir artikel ini.

Kesimpulan

Hari ini, kita mengeskplorasi Passport library di Laravel, yang memungkinkan kita untuk menyiapkan server OAuth2 dalam aplikasi dengan sangat mudah.

Bagi Anda yang baru saja memulai dengan Laravel atau mencari cara untuk memperluas pengetahuan, situs, atau aplikasi dengan ekstensi, kami memiliki berbagai hal yang dapat Anda pelajari di Envato Market.

Jangan ragu untuk membagikan pemikiran dan pertanyaan Anda menggunakan feed 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.