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:
- Install Laravel dengan menggunakan composer. Anda dapat menjalankan perintah berikut di terminal:
composer create-project --prefer-dist laravel/laravel ./try-sso - 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 - Buat file
config/sso.phpdan 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',
],
];
- Isi nilai
SSO_HOST,SSO_BROKER_ID, danSSO_BROKER_SECRETdi file.envsesuai dengan informasi yang Anda dapatkan dari SSO UI. Anda juga dapat mengubah nilaiSSO_USER_MODEL,SSO_USER_SYNC, danSSO_USER_FIELDSsesuai dengan kebutuhan Anda. - Buat controller
SSOController.phpdi folderapp/Http/Controllersdan 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();
}
}
- Buat route untuk SSO di file
routes/web.phpdengan 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');
- Buat middleware
SSOMiddleware.phpdi folderapp/Http/Middlewaredan 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);
}
}
- Daftarkan middleware
SSOMiddlewaredi fileapp/Http/Kernel.phpdengan kode berikut:
<?php
protected $routeMiddleware = [
// ...
'sso' => \App\Http\Middleware\SSOMiddleware::class,
];
- Gunakan middleware
ssountuk melindungi route yang membutuhkan autentikasi SSO. Contoh:
<?php
Route::get('dashboard', 'DashboardController@index')->middleware('sso');
- 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
Posting Komentar