Cara Integrasi Aplikasi Laravel ke myITS SSO

Artikel ini akan menjelaskan prosedur integrasi aplikasi dengan myITS SSO

Prerequisite

Baca:
https://dptsi.atlassian.net/wiki/spaces/APPDOCS/pages/1753808897
https://dptsi.atlassian.net/wiki/spaces/APPDOCS/pages/1767932336

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:

  1. Client ID : unique ID aplikasi

  2. Client Secret : key/password aplikasi

  3. Scope : informasi user yang akan diterima oleh aplikasi setelah berhasil login

  4. Base URI : URL yang diakses dari dashboard SSO

  5. Redirect URI : URL yang diakses setelah melakukan login

  6. Post Logout Redirect URI : URL yang diakses setelah melakukan logout

Informasi tersebut akan digunakan pada kodingan untuk integrasi

Requirements

  1. PHP 5.4 or greater

  2. phpseclib/phpseclib 2.0 or greater

  3. CURL extension

  4. 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:

  1. Install menggunakan composer

    composer require myits/openid-connect-client:*
  2. 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

  1. 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'); ...
  2. Buat instance OIDC dan set beberapa attributes

  3. Panggil function utama

  4. Ambil data yang diperlukan dari OIDC, dan lakukan sesuai kebutuhan aplikasi

  5. Login pada auth laravel

  6. 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.