Langsung ke konten utama

Pengembangan Sistem Informasi Akademik Berbasis Single Sign On (SSO) dengan Menggunakan Framework Laravel


Apa itu SSO?

SSO (Single Sign On) adalah sebuah fitur yang memungkinkan pengguna untuk login ke berbagai aplikasi dengan menggunakan satu akun saja. Laravel adalah sebuah framework PHP yang populer dan mudah digunakan. Berikut adalah langkah-langkah, kelebihan, dan kekurangannya untuk membuat SSO dengan Laravel:

Langkah-langkah:

  1. Install Laravel dengan menggunakan composer. Anda dapat menjalankan perintah berikut di terminal: composer create-project --prefer-dist laravel/laravel ./try-sso
  2. Install package RistekCSUI/SSO dengan menggunakan composer. Package ini akan membantu Anda mengimplementasikan SSO UI, yaitu SSO yang digunakan oleh Universitas Indonesia. Anda dapat menjalankan perintah berikut di terminal: composer require ristek/sso
  3. Buat file config/sso.php dan isi dengan konfigurasi berikut:
<?php

return [
    'host' => env('SSO_HOST', 'https://sso.ui.ac.id'),
    'broker_id' => env('SSO_BROKER_ID', 'your-broker-id'),
    'broker_secret' => env('SSO_BROKER_SECRET', 'your-broker-secret'),
    'cookie_lifetime' => env('SSO_COOKIE_LIFETIME', 3600),
    'user_model' => env('SSO_USER_MODEL', App\User::class),
    'user_sync' => env('SSO_USER_SYNC', true),
    'user_fields' => [
        'username' => 'username',
        'name' => 'name',
        'email' => 'email',
        'role' => 'role',
    ],
];
  1. Isi nilai SSO_HOST, SSO_BROKER_ID, dan SSO_BROKER_SECRET di file .env sesuai dengan informasi yang Anda dapatkan dari SSO UI. Anda juga dapat mengubah nilai SSO_USER_MODEL, SSO_USER_SYNC, dan SSO_USER_FIELDS sesuai dengan kebutuhan Anda.
  2. Buat controller SSOController.php di folder app/Http/Controllers dan isi dengan kode berikut:
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Ristek\Sso\Sso;

class SSOController extends Controller
{
    protected $sso;

    public function __construct(Sso $sso)
    {
        $this->sso = $sso;
    }

    public function login()
    {
        $this->sso->login();
    }

    public function logout()
    {
        $this->sso->logout();
    }

    public function callback()
    {
        $this->sso->callback();
    }
}
  1. Buat route untuk SSO di file routes/web.php dengan kode berikut:
<?php

Route::get('sso/login', 'SSOController@login')->name('sso.login');
Route::get('sso/logout', 'SSOController@logout')->name('sso.logout');
Route::get('sso/callback', 'SSOController@callback')->name('sso.callback');
  1. Buat middleware SSOMiddleware.php di folder app/Http/Middleware dan isi dengan kode berikut:
<?php

namespace App\Http\Middleware;

use Closure;
use Ristek\Sso\Sso;

class SSOMiddleware
{
    protected $sso;

    public function __construct(Sso $sso)
    {
        $this->sso = $sso;
    }

    public function handle($request, Closure $next)
    {
        if (!$this->sso->isAuthenticated()) {
            return redirect()->route('sso.login');
        }

        return $next($request);
    }
}
  1. Daftarkan middleware SSOMiddleware di file app/Http/Kernel.php dengan kode berikut:
<?php

protected $routeMiddleware = [
    // ...
    'sso' => \App\Http\Middleware\SSOMiddleware::class,
];
  1. Gunakan middleware sso untuk melindungi route yang membutuhkan autentikasi SSO. Contoh:
<?php

Route::get('dashboard', 'DashboardController@index')->middleware('sso');
  1. Selesai. Anda dapat mengakses aplikasi Anda dan mencoba login dengan menggunakan akun SSO UI.

Kelebihan:

  • Anda tidak perlu menyimpan username dan password pengguna di database Anda, karena sudah menggunakan akun SSO UI yang terpercaya.
  • Anda dapat menghemat waktu dan sumber daya dalam mengembangkan fitur autentikasi, karena sudah menggunakan package yang sudah tersedia.
  • Anda dapat meningkatkan pengalaman pengguna, karena mereka tidak perlu mendaftar atau login berkali-kali untuk mengakses aplikasi Anda.

Kekurangan:

  • Anda tidak dapat mengatur hak akses pengguna secara fleksibel, karena sudah mengikuti aturan yang ditetapkan oleh SSO UI.
  • Anda tidak dapat menyesuaikan tampilan halaman login, karena sudah menggunakan halaman yang disediakan oleh SSO UI.
  • Anda tidak dapat mengimplementasikan fitur tambahan seperti lupa password, verifikasi email, atau reset password, karena sudah bergantung pada SSO UI.

Komentar

Postingan populer dari blog ini

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Apa itu index file seperti index.html, index.php kegunaannya dan bagaimana membuat custom nya

Index file adalah file yang berfungsi sebagai halaman utama atau tampilan pertama dari sebuah website. File ini memiliki nama default yang bervariasi, tergantung pada jenis server dan konfigurasinya, namun beberapa nama default yang umum digunakan adalah index.html, index.php, index.jsp, atau index.asp.

Membersihkan cache dan dalvik-cache menggunakan link2sd

Mungkin banyak yang menanyakan kenapa internalnya selalu berkurang free space nya. Padahal tidak menginstall applikasi baru. Hanya melakukan aktifitas normal. Dan sampai pada waktunya, internal memory low dan tidak bisa menambah aplikasi baru lagi.  Ada kemungkinan file cache dari sebuah aplikasi atau dalvik yang dibuat oleh OS android sudah  mulai membengkak. Sehingga perlu di bersihkan secara manual supaya tersedia penyimpanan kosong yang banyak. Sebelum mengetahui cara membersihkan cache dan dalvik cache, kita kupas sekilas apa itu cache dan dalvik cache. Cache adalah sebuah data file sementara yang di hasilkan oleh sebuah applikasi guna mempercepat pemrosesan dimasa yang akan datang (Cache Wikipedia) .  Dalvik-cache adalah ruang kosong sementara yang di pake oleh java virtual machine untuk menjalankan aplikasi android (Dalvik Wikipedia) .