tasikmalayakab / laravel-cas
Apereo CAS Authentication for Laravel
Requires
- php: >=5.5.0
- apereo/phpcas: ~1.3.4
- illuminate/contracts: 5.x
- illuminate/http: 5.x
- illuminate/support: 5.x
Requires (Dev)
- phpunit/phpunit: 4.*
This package is auto-updated.
Last update: 2025-02-20 19:50:29 UTC
README
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.