sksso/smartsso-postgresql

There is no license information available for the latest version (1.0.5) of this package.

SDK SSO Smartkampung Banyuwangi

1.0.5 2023-12-20 05:26 UTC

This package is auto-updated.

Last update: 2024-05-20 09:11:57 UTC


README

PHP Composer Psalm Security Scan

Dokumentasi SDK SSO Smartkampung untuk Web PHP dengan DB PostgreSQL

1. Deskripsi

SDK SSO ini memungkinkan integrasi yang mudah dengan layanan SSO (Single Sign-On) Smartkampung. Dengan SDK ini, aplikasi dapat dengan mudah memvalidasi dan mengelola autentikasi pengguna melalui SSO Smartkampung.

2. Alur Autentikasi Login SSO

auth_sso

Keterangan:

A. Redirect Login
Redirect ke halaman login SSO.

B. Ekstrak Data
Mengekstrak data kredensial dari server SSO yang sebelumnya data sudah di enkripsi.

C. Get Tiket
Menerima tiket login berupa data enkripsi dari server SSO dengan menggunakan method GET Request.

D. Validasi Tiket
Mevalidasi tiket login yang sebelumnya sudah diterima dari server SSO.

E. Login Auth By ID
Jika tiket valid, maka dilanjut ke proses auth login yang dari bawaan web framework masing-masing tetapi dengan menggunakan metode login by ID user tanpa menggunakan password, dikarenakan bagian login ini tanpa menggunakan password, demi keamanan website, maka daripada itu untuk fungsi auth login ini jadikanlah dalam satu method di controller untuk proses pada poin C,D,E diatas.

F. User Logout
Mengirim data session user ke server SSO untuk dilakukannya proses logout di server

3. Instalasi SDK

Untuk instalasi SDK ini, gunakanlah composer. Buka command promp/terminal, masuk ke direktori utama projek anda, dengan menjalankan perintah berikut:

composer require sksso/smartsso-postgresql

4. Konfigurasi

A. Import SDK

Isikan kode dibawah ini untuk mengimport SDK di bagian use statements pada class controller. use sksso\SDKlrvlSSO;

B. Set Environment

Parameter Value
ALIAS_ID Untuk mendapatkannya hubungi admin SSO
SECRET_KEY_BODY Untuk mendapatkannya hubungi admin SSO
SECRET_KEY_URL Untuk mendapatkannya hubungi admin SSO

Masukkan value dari parameter environment diatas kedalam fungsi setEnv() yang anda letakkan di controller, sebelumnya anda harus menginisialisasikan kode ini $this->sdkSSO = new SDKlrvlSSO() di bagian atas kode, misalkan dimasukkan kedalam method konstruktor, seperti berikut

private $sdkSSO;

public function __construct() {
    //inisialisasi konfigurasi SSO
    $this->sdkSSO = new SDKlrvlSSO();
    $this->sdkSSO->setEnv([ALIAS_ID], [SECRET_KEY_BODY], [SECRET_KEY_URL]);
    ....

C. Login Page

Untuk mengarahkan ke halaman login SSO, gunakan kode berikut

$this->sdkSSO->loginPage();

D. Set Konfigurasi Database

Anda dapat meng set koneksi database MySQL dengan kode berikut

$this->sdkSSO->setDbConfig([HOST], [DB_USER], [DB_PASS], [DB_NAME]);

E. Sinkronisasi Tabel Database

Sebelum melakukan sinkronisasi tabel database dengan parameter data array yang dikirim oleh server SSO, anda harus mengetahui terlebih dahulu nama-nama parameter yang akan disinkronkan dengan nama-nama kolom pada tabel user/pengguna yang sudah tersedia di database anda, berikut parameter dari server SSO

Nama Parameter Type
nama VARCHAR(50)
phone VARCHAR(20)
email VARCHAR(100)
nik VARCHAR(20)
created_at DATETIME

Dalam kasus ini misalkan nama-nama kolom di tabel user yang ada di database anda seperti berikut ini

Nama Kolom
id
username
password
nama_lengkap
alamat
email
nik
created_by
created_date
Untuk nama-nama kolom tabel wajib ditulis/dimasukkan semua yang ada di tabel database untuk disinkronkan. Sinkronisasi/selaraskan nama-nama kolom tabel diatas dengan nama-nama parameter array dari server SSO, seperti contoh berikut ini
Nama Kolom Tabel Nama Parameter SSO
id NULL
username NULL
password NULL
nama_lengkap nama
alamat NULL
email email
nik nik
created_by NULL
created_date created_at

Jika tabel sudah disinkronisasikan maka rubah data tabel diatas ke bentuk array dengan key

  • nama_table(isikan nilai dengan nama tabel dari tabel yang digunakan untuk disinkronkan),
  • user_key(diisikan dengan salah satu nama parameter berikut: nik,email,phone), dan
  • field_table(isikan dengan data array dari data tabel sinkronisasi data diatas)

berikut contoh data arraynya

$dataTable = 
        [
            "nama_table" => "users",
            "user_key" => "nik",
            "field_table" => [
                "id" => NULL,
                "username" => NULL,
                "password" => NULL,
                "nama_lengkap" => "name",
                "alamat" => NULL,
                "email" => "email",
                "nik" => "nik",
                "created_by" => NULL,
                "created_date" => "created_at"
            ]
        ];

Masukkan data array diatas kedalam fungsi berikut

$this->sdkSSO->syncDbTable($dataTable);

Berikut kutipan gabungan kode script dari tahapan-tahapan diatas

use sksso\SDKlrvlSSO;

class NamaController extends Controller
{
private $sdkSSO;

public function __construct() {
    //inisialisasi konfigurasi SSO
    $this->sdkSSO = new SDKlrvlSSO();
          $dataTable = 
         [
            "nama_table" => "users",
            "user_key" => "nik",
            "field_table" => [
                "id" => NULL,
                "username" => NULL,
                "password" => NULL,
                "nama_lengkap" => "name",
                "alamat" => NULL,
                "email" => "email",
                "nik" => "nik",
                "created_by" => NULL,
                "created_date" => "created_at"
            ]
    ];
    $this->sdkSSO->setEnv([ALIAS_ID], [SECRET_KEY_BODY], [SECRET_KEY_URL]);
    $this->sdkSSO->setDbConfig([HOST], [DB_USER], [DB_PASS], [DB_NAME]);
    $this->sdkSSO->syncDbTable($dataTable);
}

5. Penggunaan SDK

A. Ekstrak Data Kredensial

Buatlah method di controller untuk menerima dan meng ekstrak data _POST kredensial yang dikirim dari server SSO. Berikut contoh kodenya

    public function ekstrakData(){
        $data = file_get_contents('php://input');
        
        return $this->sdkSSO->ekstrakDataCredentials($data);
    }

Beritahukan ke admin SSO, url endpoint dari method diatas, supaya dapat diakses dari server SSO

B. Cek Validasi Tiket

Buatlah method di controller untuk menerima data _GET tiket yang dikirim dari server SSO. Berikut contoh kodenya

    public function login(Request $request, $param){
        $dataUsers = $this->sdkSSO->cekTiket($param);
        if($dataUsers) //output data kredensial pengguna format array 
        {
            Auth::loginUsingId($dataUsers['id']); //auth login by ID
            return redirect()->route('home'); //kondisi setelah user dapat login
        }
    }

Beritahukan ke admin SSO, url endpoint dari method diatas, supaya dapat diakses dari server SSO.

Dari kode script diatas untuk baris ini Auth::loginUsingId($dataUsers['id']); ini merupakan fungsi dari Laravel(untuk framework lain bisa menyesuaikan), metode ini berfungsi untuk melakukan autentikasi login berdasarkan ID pengguna tanpa memerlukan password.

C. Logout

Berikut merupakan kode script untuk perintah logout user

 $this->sdkSSO->logout();