irsadarief / jkd-sso
BPS Single Sign On Client For PHP
Installs: 1 326
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 3
Open Issues: 3
Requires
- firebase/php-jwt: ^4.0 || ^5.0
- league/oauth2-client: ^2.0
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.0
- squizlabs/php_codesniffer: ~2.0
This package is auto-updated.
Last update: 2024-11-07 17:12:21 UTC
README
Instalasi
Untuk menginstall, anda dapat menggunakan composer:
composer require irsadarief/jkd-sso
Untuk yang belum menginstall composer, informasi mengenai instalasi dan penggunaan composer dapat diakses disini.
Penggunaan
Untuk menggunakan library ini bisa dengan \JKD\SSO\Client\Provider\Keycloak
sebagai provider.
Untuk authServerUrl
Anda dapat menuliskan https://sso.bps.go.id .
untuk realm
anda dapat menuliskan pegawai-bps
Contoh Kode
$provider = new JKD\SSO\Client\Provider\Keycloak([ 'authServerUrl' => 'https://sso.bps.go.id', 'realm' => 'pegawai-bps', 'clientId' => '{client-id}', 'clientSecret' => '{client-secret}', 'redirectUri' => 'https://example.com/callback-url' ]); if (!isset($_GET['code'])) { // Untuk mendapatkan authorization code $authUrl = $provider->getAuthorizationUrl(); $_SESSION['oauth2state'] = $provider->getState(); header('Location: '.$authUrl); exit; // Mengecek state yang disimpan saat ini untuk memitigasi serangan CSRF } elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { unset($_SESSION['oauth2state']); exit('Invalid state'); } else { try { $token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); } catch (Exception $e) { exit('Gagal mendapatkan akses token : '.$e->getMessage()); } // Opsional: Setelah mendapatkan token, anda dapat melihat data profil pengguna try { $user = $provider->getResourceOwner($token); echo "Nama : ".$user->getName(); echo "E-Mail : ". $user->getEmail(); echo "Username : ". $user->getUsername(); echo "NIP : ". $user->getNip(); echo "NIP Baru : ". $user->getNipBaru(); echo "Kode Organisasi : ". $user->getKodeOrganisasi(); echo "Kode Provinsi : ". $user->getKodeProvinsi(); echo "Kode Kabupaten : ". $user->getKodeKabupaten(); echo "Alamat Kantor : ". $user->getAlamatKantor(); echo "Provinsi : ". $user->getProvinsi(); echo "Kabupaten : ". $user->getKabupaten(); echo "Golongan : ". $user->getGolongan(); echo "Jabatan : ". $user->getJabatan(); echo "Eselon : ". $user->getEselon(); } catch (Exception $e) { exit('Gagal Mendapatkan Data Pengguna: '.$e->getMessage()); } // Gunakan token ini untuk berinteraksi dengan API di sisi pengguna echo $token->getToken(); }
Penggunaan API untuk mengakses data pegawai dapat melihat pada api-pegawai.
Mendapatkan link Logout
$url_logout = $provider->getLogoutUrl()
Memperbarui Token
$provider = new JKD\SSO\Client\Provider\Keycloak([ 'authServerUrl' => 'https://sso.bps.go.id', 'realm' => 'pegawai-bps', 'clientId' => '{keycloak-client-id}', 'clientSecret' => '{keycloak-client-secret}', 'redirectUri' => 'https://example.com/callback-url', ]); $token = $provider->getAccessToken('refresh_token', ['refresh_token' => $token->getRefreshToken()]);