irsadarief / jkd-sso
PHP 单点登录客户端
1.6.0
2020-06-15 04:43 UTC
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-09-07 16:54:15 UTC
README
安装
要安装此包,您可以使用composer。
composer require irsadarief/jkd-sso
对于尚未安装composer的用户,有关安装和使用composer的信息可以在此处找到:此处。
使用
要使用此库,可以使用\JKD\SSO\Client\Provider\Keycloak
作为提供者。
对于authServerUrl
,您可以写入https://sso.bps.go.id .
对于realm
,您可以写入pegawai-bps
代码示例
$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(); }
要访问员工数据的API示例,请参阅api-pegawai。
获取登出链接
$url_logout = $provider->getLogoutUrl()
更新令牌
$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()]);