eganesha/cas-auth

Laravel CAS Authentication integration for SSO Undiksha

Maintainers

Package info

github.com/Satria-Kurniawan/eganesha-cas-auth

pkg:composer/eganesha/cas-auth

Statistics

Installs: 69

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

2.0.0 2025-10-29 01:25 UTC

This package is auto-updated.

Last update: 2026-03-29 01:13:46 UTC


README

Package ini menyediakan integrasi Single Sign-On (SSO) dengan Central Authentication Service (CAS) untuk aplikasi berbasis Laravel.
Didesain agar mudah digunakan, ringan, dan bisa diintegrasikan dengan CAS server seperti https://sso.undiksha.ac.id/cas.

🚀 Instalasi

Tambahkan package ini menggunakan Composer:

composer require eganesha/cas-auth

⚙️ Konfigurasi

Publikasikan file konfigurasi:

php artisan vendor:publish --provider="EGanesha\CasAuth\CasServiceProvider"

Tambahkan URL server CAS di file .env:

CAS_SERVER_URL=https://sso.undiksha.ac.id/cas

🧩 Penggunaan

Tambahkan middleware cas.auth ke route Anda:

<?php

use EGanesha\CasAuth\Facades\Cas;
use Illuminate\Support\Facades\Route;

// MENGGUNAKAN MIDDLEWARE
// VALIDASI OTOMATIS. SECARA OTOMATIS AKAN DIARAHKAN KE HALAMAN LOGIN SSO JIKA BELUM TERAUTENTIKASI
Route::middleware(['cas.auth'])->group(function () {
    Route::get('/dashboard', function () {
        $emailAtauUsername = Cas::getCurrentUser();
        return "Halo, " . $emailAtauUsername;
    });

    Route::get('/logout', function () {
        return Cas::logoutAndRedirect(url('/'));
    });
});

🚪 Login CAS & Handle Sesi Manual Untuk melakukan redirect ke login ke server cas:

use EGanesha\CasAuth\Facades\Cas;
use Illuminate\Support\Facades\Route;

Route::get('/login-sso', function () {
    return Cas::redirectToLogin(url('/profile'));
});

// TANPA MIDDLEWARE
// VALIDASI MANUAL
Route::get('/profile', function () {
    $ticket = request('ticket');
    $serviceUrl = url('/profile');

    if ($ticket && Cas::validateTicket($ticket, $serviceUrl)) {
        Cas::storeCasUserInSession();
        return redirect($serviceUrl);
    }

    // Jika sudah terautentikasi
    if (Cas::isAuthenticated()) {
        $user = Cas::getCurrentUser();
        return "Halo, " . $user;
    }

    return 'Gagal autentikasi';
});

🚪 Logout CAS

Untuk melakukan logout dari CAS dan menghapus sesi:

use EGanesha\CasAuth\Facades\Cas;
use Illuminate\Support\Facades\Route;

Route::get('/logout', function () {
    Cas::logoutAndRedirect();
});

🧠 Metode yang Tersedia

Cas::redirectToLogin($serviceUrl)	        Redirect user ke halaman login CAS dengan parameter service.
Cas::validateTicket($ticket, $serviceUrl)	Memvalidasi tiket CAS yang diterima setelah login.
Cas::storeCasUserInSession()	            Menyimpan informasi user dan atribut ke sesi Laravel.
Cas::isAuthenticated()	                    Mengecek apakah user sudah login melalui CAS.
Cas::getCurrentUser()	                    Mengambil username/email user dari sesi CAS.
Cas::getAttributes()	                    Mengambil seluruh atribut user dari CAS (misal: nama, email, role, dsb).
Cas::logout()	                            Menghapus sesi CAS di aplikasi lokal tanpa logout dari CAS server.
Cas::getLogoutUrl($redirectUrl = null)	    Mendapatkan URL logout CAS server (dapat ditambahkan parameter service).
Cas::logoutAndRedirect($redirectUrl = null)	Menghapus sesi lokal dan langsung redirect ke halaman logout CAS server.