Berikut implementasi yang saya lakukan untuk melakukan integrasi autentikasi Moodle menggunakan OAuth2 service dengaan bantuan Laravel Passport. Versi Moodle yang saya gunakan adalah 3.7 dan Laravel Passport versi 7.3. Tipe OAuth2 yang digunakan adalah Authorization Code Redirect Flow.
Pastikan Anda sudah menginstal Moodle, menginstal paket Laravel Passport dan membuat client id di Laravel Passport.
Pertama, Anda perlu membuat sebuah scope
untuk mendapatkan identitas pengguna lewat OAuth2 yang disediakan moodle. Scope ini dibuat dari Laravel Project yang sudah ditanamkan Laravel Passport.
Untuk membuat scope
, Anda gunakan fungsi Passport::tokensCan()
. tokensCan
umumnya berisi array yang berisi nama dan deskripsi scope. Tempatkan fungsi tersebut di dalam method boot
pada class AuthServiceProvider
di dalam Laravel.
|
|
Kedua, login ke website Moodle sebagai admin dan masuk ke menu Site administration > pilih tab Server > pilih OAuth 2 services > pilih Create new custom service.
- Masukkan nama OAuth2 untuk di Moodle pada field Name. Wajib diisi. Saya berikan nama Testing OAuth.
- Masukkan client id yang didapatkan dari Laravel Passport pada field Client ID. Wajib diisi.
- Masukkan client secret yang didapatkan dari Laravel Passport pada field Client secret. Wajib diisi.
- Masukkan scope yang dimasukkan saat login request dan login request untuk offline access. Ini wajib diisi. Saya masukkan scope
indentity
. - Centang opsi Show on login page.
- Klik tombol Save changes.
Hasilnya seperti pada gambar di bawah ini.

Ketiga, Anda perlu mengatur custom endpoints pada OAuth2 yang sudah dibuat dengan cara mengklik tautan nomor 2 yang berlambang todo list. Kemudian, klik tombol `Create new endpoint for issuer “Testing OAuth”.
- Masukkan nama endpoint pada field Name dan harus diakhiri dengan
_endpoint
. Umumnya Moodle menyediakan standar nama endpoint mulai dariauthorization_endpoint
,token_endpoint
danuserinfo_endpoint
. - Masukan URL endpoint untuk
authorization_endpoint
,token_endpoint
danuserinfo_endpoint
. Protocolnya harus berupa HTTPS. Jika menggunakan Laravel Passport maka isinya seperti di bawah
|
|
- Berikutnya simpan hasil endpoint yang sudah dibuat.
Hasilnya seperti gambar di bawah.

Keempat, Anda perlu memetakan user field
yang ada di Moodle dengan custom OAuth2 yang sudah dibuat. Silakan masuk ke tautan nomor 3 yang berlambang pengguna. Kemudian klik tombol `Create new user field mapping for issuer “Testing OAuth”.
- Masukkan field dari OAuth2 yang dibuat ke field
External field name
. Wajib diisi. - Pilih field internal dari Moodle ke field
Internal field name
. - Simpan hasil perubahan yang sudah dibuat.
Field yang saya mapping mulai dari firstname
, email
, picture
, username
, lastname
.
Hasilnya seperti di bawah.

Persiapan selesai. Silakan logout dan masuk ke halaman login dengan OAuth2. :)

Referensi