sso-sumut-client
v1.0.0
Published
Official client library for SSO SUMUT authentication using JWT
Maintainers
Readme
SSO Sumut Client Package
Package ini memudahkan integrasi aplikasi Node.js (backend) dan React.js (frontend) dengan layanan SSO BPS Provinsi Sumatera Utara.
Instalasi
Karena package ini bersifat lokal (belum dipublish ke npm registry), Anda bisa menginstallnya dengan menunjuk ke foldernya secara langsung, atau copy-paste folder ini ke proyek Anda.
npm install ./path/to/sso-sumut-clientAtau jika Anda menggunakan folder ini sebagai modul lokal, cukup require dari path-nya.
Konfigurasi (Backend)
Anda memerlukan 3 kunci rahasia yang HARUS SAMA dengan yang ada di server SSO:
- Encryption Key (32 bytes)
- IV (Initialization Vector, 16 bytes)
- JWT Secret
Simpan kunci-kunci ini di .env file aplikasi Anda. JANGAN PERNAH menyimpan kunci ini di kode frontend (React/Browser).
1. Penggunaan di Frontend (React.js / Next.js)
Untuk frontend, package ini menyediakan helper getLoginUrl yang aman dijalankan di browser (tanpa dependensi Node.js).
Import Helper
import { getLoginUrl } from 'sso-sumut-client/frontend';Contoh Komponen Tombol Login (Copy-Paste)
Anda bisa langsung menggunakan komponen React berikut:
import React from 'react';
import { getLoginUrl } from 'sso-sumut-client/frontend';
// Ganti dengan URL SSO yang benar
const SSO_SERVER_URL = "https://otp-dev.bps.web.id";
const SsoLoginButton = () => {
const handleLogin = () => {
// Halaman di aplikasi Anda yang akan menerima token setelah login sukses
// Contoh: http://localhost:3000/callback
const currentUrl = window.location.origin + "/callback";
// Generate URL login
const loginUrl = getLoginUrl(SSO_SERVER_URL, currentUrl);
// Redirect user
window.location.href = loginUrl;
};
return (
<button
onClick={handleLogin}
style={{
padding: '10px 20px',
backgroundColor: '#007bff',
color: 'white',
border: 'none',
borderRadius: '5px',
cursor: 'pointer',
fontSize: '16px',
fontWeight: 'bold'
}}
>
Login dengan SSO BPS Sumut
</button>
);
};
export default SsoLoginButton;2. Penggunaan di Backend (Node.js)
Gunakan index.js (default import) untuk memverifikasi token.
const ssoClient = require('sso-sumut-client');
// Konfigurasi (sebaiknya ambil dari process.env)
const config = {
encryptionKey: '12345678901234567890123456789012',
iv: '1234567890123456',
jwtSecret: 'rahasia_negara'
};
// Contoh Express Middleware
app.get('/callback', (req, res) => {
const { token } = req.query; // SSO akan mengirim token ke URL callback
try {
// Verifikasi token
const userData = ssoClient.verify(token, config);
console.log("User valid:", userData);
// Login sukses, buat session untuk user di aplikasi Anda
req.session.user = userData;
res.redirect('/dashboard');
} catch (error) {
console.error("Login gagal:", error.message);
res.status(401).send("Autentikasi Gagal");
}
});Struktur Data User
Jika verifikasi berhasil, fungsi verify akan mengembalikan objek user dengan struktur seperti:
usernamenama_lengkapemailnip_lama/nip_barukode_satker- Dll.
Troubleshooting
- Decryption failed: Pastikan
encryptionKeydanivsama persis dengan yang digunakan server SSO. - JWT Verification failed: Pastikan
jwtSecretsesuai. - Token expired: Minta user login ulang jika token sudah kadaluarsa.
