Repositori ini merupakan contoh implementasi penggunaan service Single Sign-On Politeknik Negeri Jakarta untuk aplikasi web berbasis PHP.
- Laravel Socialite
- PHP Versi 7.3 atau diatasnya
- Gunakan endpoint
client_secret_post
pada saat mendaftarkan client anda di SSO PNJ
Package tersedia di repo packagist, install dengan menggunakan :
composer require laravel/socialite
composer require chillrend/pnj-socialite-provider
Jika Anda telah menambahkan Laravel\Socialite\SocialiteServiceProvider
didalam file config/app.php
silahkan hapus kode tersebut yang berada di dalam array providers[]
Lalu tambahkan \SocialiteProviders\Manager\ServiceProvider::class
kedalam array providers[]
'providers' => [
// Provider lain
// hapus 'Laravel\Socialite\SocialiteServiceProvider', jika ada
\SocialiteProviders\Manager\ServiceProvider::class,
];
Tambahkan event listener didalam file app/Providers/EventServiceProvide
protected $listen = [
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
// ... listener untuk provider lain ...
'SocialiteProviders\\PNJ\\PNJExtendSocialite@handle',
],
];
Lalu tambahkan konfigurasi didalam config/services.php
'pnj' => [
'client_id' => env('CLIENT_ID'),
'client_secret' => env('CLIENT_SECRET'),
'redirect' => env('REDIRECT_URI')
],
dan masukkan client id, secret, dan redirect uri Anda didalam .env
CLIENT_ID=<ClientIDAnda>
CLIENT_SECRET=<ClientSecretAnda>
REDIRECT_URI=https://your-service.com/cb
Setelah itu Anda dapat menggunakan socialite seperti biasa.
Untuk meredirect user kedalam SSO PNJ gunakan :
public function redirectToSSOPNJ(){
return Socialite::driver('pnj')->redirect();
}
Untuk menangani callback redirect yang dikirim oleh SSO PNJ gunakan :
public function callback(){
// Anda akan mendapatkan token sekaligus user object disini.
$user = Socialite::driver('pnj')->user();
}
Lalu Anda dapat membuat route seperti berikut :
Route::get('/auth/pnj', [SSOController::class, 'redirectToSSOPNJ']);
Route::get('/cb', [SSOController::class, 'callback']);
Untuk meredirect user, gunakan route tersebut untuk atribut href
pada link Anda :
<a href="/auth/pnj">Login dengan SSO PNJ</a>
Untuk informasi implementasi lebih lanjut silahkan membaca dokumentasi laravel socialite dan repository dari provider. https://laravel.com/docs/8.x/socialite https://github.com/Chillrend/PNJSocialiteProvider
composer install
- copy file
.env.example
dan ubah nama menjadi.env
php artisan key:generate
php artisan serve
- Kunjungi http://localhost:8000/
email developer di [email protected]
atau submit issues didalam repositori ini.