tasikmalayakab/laravel-cas

Apereo CAS Authentication for Laravel

v1.3.1 2019-04-09 20:21 UTC

This package is auto-updated.

Last update: 2024-01-02 17:28:40 UTC


README

Latest Stable Version Total Downloads Monthly Downloads Latest Unstable Version License

Laravel Package yang dirancang untuk mengintegrasikan aplikasi berbasis web Laravel sebagai SSO Klien Kabupaten Tasikmalaya. Silakan ikuti petunjuk README.md untuk memulai.

Instalasi

Opsi 1: Melalui perintah composer

$ composer require tasikmalayakab/laravel-cas

Opsi 2: Edit berkas composer.json

"require": {
	"tasikmalayakab/laravel-cas": "dev-master"
}

Selanjutnya, eksekusi perintah update composer melalui Terminal:

$ composer update

Konfigurasi

Setelah memperbarui komposer, buka berkas config/app.php dan tambahkan ServiceProvider ke daftar 'providers'.

'providers' => array(
    .....
    Kabupaten\Tasikmalaya\Cas\CasServiceProvider::class,
);

Tambahkan juga ke konfigurasi 'aliases' di berkas yang sama yaitu config/app.php.

'aliases' => array(
    .....
    'Cas' => Kabupaten\Tasikmalaya\Cas\Facades\Cas::class,
);

Anda dapat menambahkan middleware bawaan ke berkas Kernel.php atau middleware yang Anda buat sendiri:

protected $routeMiddleware = [
	.....
	'cas.auth'  => \Kabupaten\Tasikmalaya\Cas\Middleware\Authenticate::class,
	'cas.guest' => \Kabupaten\Tasikmalaya\Cas\Middleware\RedirectIfAuthenticated::class,
];

Sekarang Anda perlu mem-publish berkas konfigurasi config/cas.php dengan mengeksekusi perintah dibawah ini melalui Terminal:

$ php artisan vendor:publish --provider="Kabupaten\Tasikmalaya\Cas\CasServiceProvider" --tag="config"

Kemudian tambahkan variabel konfigurasi default CAS ke berkas .env:

CAS_HOSTNAME=sso.tasikmalayakab.go.id
CAS_VALIDATION=https://sso.tasikmalayakab.go.id/cas/p3/serviceValidate
CAS_VERSION=3.0
CAS_LOGOUT_URL=https://sso.tasikmalayakab.go.id/cas/logout

Untuk melihat konfigurasi lebih lanjut, silakan lihat dan baca deskripsi untuk setiap item konfigurasi di berkas config/cas.php.

Route

Proses Otentikasi

Mengarahkan pengguna ke halaman otentikasi SSO Kabupaten Tasikmalaya.

Route::get('/cas/login', function() {
    return cas()->authenticate();
})->name('cas.login');

Aplikasi web Anda harus mendapat izin layanan SSO terlebih dahulu ke Dinas Komunikasi dan Informatika Kabupaten Tasikmalaya. Jika belum mendapatkan izin, aplikasi web Anda tidak dapat menggunakan layanan.

Controller dan Callback Route

Anda dapat membuat Controller baru dengan nama CasController. Controller ini berfungsi sebagai penerima informasi kredensial pengguna (setelah melakukan login SSO) dan memproses pengguna di basis data lokal aplikasi.

php artisan make:controller Auth\CasController
class CasController extends Controller
{
    /**
     * Mendapatkan informasi pengguna dari server CAS.
     *
     * @return Illuminate\Http\RedirectResponse
     */
    public function callback()
    {
        // $id = Cas::user()->id;

        // Di sini Anda dapat menyimpan informasi pengguna
		// yang diberikan oleh server CAS dalam model pengguna
		// lokal di basis data lokal aplikasi Anda.

        // Ini sangat berguna dalam kasus konstruksi profil pengguna
		// dengan peran dan detail lainnya
        // mis. Auth::login($pengguna_lokal);

        return redirect()->route('home');
    }
}

Ketika proses otentikasi dilakukan, Callback URL akan dipanggil. Dalam panggilan balik itu, Anda dapat memproses pengguna atau mendaftarkan pengguna di basis data lokal aplikasi Anda (jika ID pengguna tidak ada di basis data lokal).

Route::get('/cas/callback', 'Auth\CasController@callback')->name('cas.callback');

Logout atau SLO (Single Logout)

Logout dari sesi CAS dan mengarahkan (redirect) ke halaman tertentu.

Route::post('/cas/logout', [ 'middleware' => 'cas.auth', function() {
    cas()->logout();

    // Anda juga dapat menambahkan @param string $url di parameter[0]
    cas()->logout(url('/'));

    // Or menambahkan @param string $service di parameter[1]
    cas()->logout('', url('/'));

}])->name('cas.logout');

Middleware cas.auth adalah opsional, tetapi aplikasi web Anda harus bisa menangani kesalahan saat pengguna mencoba Logout saat mereka tidak memiliki sesi CAS.

Jika variabel konfigurasi CAS_LOGOUT_REDIRECT dalam .env ditambahkan, nilainya diambil dari konfigurasi itu. Atau jika tidak, nilai diambil berdasarkan nilai yang Anda tentukan.

Jika Anda ingin menggunakan mode SLO (Single Logout) (jika server CAS mendukung SLO), aplikasi web Anda harus memiliki SSL yang valid dan server CAS harus dapat mengirim HTTP POST /cas/logout tanpa harus verifikasi CsrfToken. Oleh karena itu, Anda harus mengubah berkas App\Http\Middleware\VerifyCsrfToken dan mengecualikan route /cas/logout.

/**
 * Daftar URI yang dikecualikan dari verifikasi CSRF.
 *
 * @var array
 */
protected $except = [
    //

    '/cas/logout',
];

Anda dapat memeriksa apakah itu berfungsi dengan mencoba mengirim HTTP POST melalui cURL.

curl -X POST https://yourapp.com/cas/logout

Penggunaan Dasar

Mengambil ID Pengguna

Untuk mengambil kredensial yang diautentikasi.

Bukan ID (tipe data integer), tetapi nilai yang diberikan pengguna pada formulir login CAS (bisa username atau email).

$id = Cas::user()->id;

Mendapatkan Atribut Pengguna

Untuk mendapatkan daftar atribut pengguna yang tersedia dalam sesi CAS.

foreach (Cas::user()->getAttributes() as $key => $value) {
	...
}

Mendapatkan Nilai Atribut Pengguna Berdasarkan Kata Kunci Atribut

Untuk mengambil atribut tertentu dengan kata kunci atribut. Tipe data atribut yang diberikan dapat berupa string atau array berdasarkan kecocokan antara tipe data dan nilai atribut.

$value = Cas::user()->getAttribute('key');

Lisensi Penggunaan

Lisensi MIT (MIT). Silakan lihat berkas License File untuk informasi lebih lanjut.