Cara Integrasi Aplikasi Laravel ke myITS SSO
Artikel ini akan menjelaskan prosedur integrasi aplikasi dengan myITS SSO
Prerequisite
Aplikasi yang akan diintegrasikan harus sudah terdaftar pada myITS SSO. Anda bisa mendaftarkan aplikasi yang ingin diintegrasikan dengan menghubungi DPTSI-ITS untuk didaftarkan pada myITS SSO.
Setelah mendaftarkan aplikasi, DPTSI akan memberikan beberapa informasi terkait aplikasi sebagai berikut:
Client ID : unique ID aplikasi
Client Secret : key/password aplikasi
Scope : informasi user yang akan diterima oleh aplikasi setelah berhasil login
Base URI : URL yang diakses dari dashboard SSO
Redirect URI : URL yang diakses setelah melakukan login
Post Logout Redirect URI : URL yang diakses setelah melakukan logout
Informasi tersebut akan digunakan pada kodingan untuk integrasi
Requirements
PHP 5.4 or greater
phpseclib/phpseclib 2.0 or greater
CURL extension
JSON extension
Jika package phpseclib/phpseclib belum ada, akan auto diinstall saat menginstall package ini
Install
Berikut adalah tata cara menginstall package ini ke aplikasi Anda:
Install menggunakan composer
composer require myits/openid-connect-client:*
include class OpenIDConnectClient
use Its\Sso\OpenIDConnectClient; use Its\Sso\OpenIDConnectClientException;
Flow Authentication
Sebelum melakukan implementasi pada kode, perlu difahami bagaimana alur interaksi aplikasi client dengan myITS SSO. Berikut adalah flowchart autentikasi dari aplikasi ke myITS SSO:
function auth() adalah Redirect URI, flow ini berjalan hanya pada satu function. nama function boleh berbeda asalkan function tersebut diset sebagai Redirect URI
Integration
Berikut langkah-langkah untuk integrasi pada laravel setelah selesai instalasi
Buat function untuk login pada controller, dan definisikan variable
public function login() // nama boleh beda { try { // variable disimpan di config, di file config mengambil variable dari .env agar mudah disesuaikan // variable di bawah harus sama dengan apa yang diberikan oleh DPTSI, jika ada perubahan harap hubungi DPTSI lagi $provider = config('openid.provider'); // antara my.its.ac.id dan dev-my.its.ac.id $provider = config('openid.provider'); $clientId = config('openid.clientId'); $clientSecret = config('openid.clientSecret'); $redirectUri = config('openid.redirectUri'); $scope = config('openid.scope'); ...
Buat instance OIDC dan set beberapa attributes
Panggil function utama
Ambil data yang diperlukan dari OIDC, dan lakukan sesuai kebutuhan aplikasi
Login pada auth laravel
Logout
Notes
Pada laravel terdapat session login sendiri, jadi data user yang didapat dari OIDC harus dipass ke authentication bawaan laravel agar aplikasi bisa berjalan sesuai logic auth laravel.