blpid / connectidn-php
ConnectIDN SDK for PHP
v1.2.1
2026-05-21 07:19 UTC
Requires
- php: >=8.1
- jumbojett/openid-connect-php: ^1.0
README
ConnectIDN SDK for PHP — integrasi SSO via OpenID Connect (OIDC) dengan PKCE.
Instalasi
composer require blpid/connectidn-php
Quick Start
use BSSN\ConnectIDN\ConnectIDN; use BSSN\ConnectIDN\ConnectIDNConfig; $config = new ConnectIDNConfig( clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', redirectUri: 'https://yourapp.com/auth/callback', ); $connectidn = new ConnectIDN($config);
Contoh Penggunaan
Login
Arahkan pengguna ke URL ini untuk memulai alur autentikasi:
// auth/login.php $connectidn->authenticate(); // redirect otomatis ke ConnectIDN
Callback
authenticate() mendeteksi secara otomatis apakah request adalah redirect balik dari ConnectIDN. Panggil method yang sama di URL callback untuk menyelesaikan token exchange:
// auth/callback.php session_start(); $user = $connectidn->authenticate(); RequireAuth::store($user); // simpan ke session dengan aman header('Location: /dashboard'); exit;
Auth Guard
Proteksi halaman yang membutuhkan login:
use BSSN\ConnectIDN\RequireAuth; // Di awal halaman yang perlu login RequireAuth::guard('/auth/login'); // redirect ke login jika belum autentikasi $user = RequireAuth::user(); // ambil data user dari session echo 'Halo, ' . htmlspecialchars($user['name']);
Logout
// auth/logout.php session_start(); $idToken = $_SESSION['connectidn_id_token'] ?? null; RequireAuth::clear(); // hapus session user $connectidn->logout($idToken ?? '', 'https://yourapp.com');
Login Button (HTML Helper)
echo $connectidn->loginButton('/auth/login', logoSrc: '/images/logo.png');
Opsi Konfigurasi
| Opsi | Tipe | Wajib | Default | Keterangan |
|---|---|---|---|---|
clientId |
string |
✅ | — | Client ID dari portal ConnectIDN |
clientSecret |
string |
✅ | — | Client Secret dari portal ConnectIDN |
redirectUri |
string |
✅ | — | URL callback setelah login |
environment |
'development'|'staging' |
— | 'staging' |
Environment ConnectIDN |
scopes |
array |
— | ['openid','profile','email'] |
Scope OIDC |
postLogoutUri |
string |
— | '/' |
URL redirect setelah logout |
verifyTls |
bool |
— | true |
Verifikasi sertifikat TLS. Set false hanya untuk development dengan self-signed certificate |
Data User
authenticate() mengembalikan objek ConnectIDNUser dengan properti berikut:
| Properti | Tipe | Keterangan |
|---|---|---|
sub |
string |
Subject identifier (user ID unik) |
name |
?string |
Nama lengkap |
email |
?string |
Alamat email |
emailVerified |
?bool |
Status verifikasi email |
phoneNumber |
?string |
Nomor telepon |
picture |
?string |
URL foto profil |
rid |
?string |
RID (identitas nasional) |
nip |
?string |
NIP (ASN) |
roles |
array |
Daftar role pengguna |
accessToken |
string |
Access token OIDC |
idToken |
?string |
ID token — simpan untuk keperluan logout |
Keamanan
- PKCE (S256) diaktifkan secara default dan tidak dapat dinonaktifkan.
RequireAuth::store()memanggilsession_regenerate_id()untuk mencegah session fixation.- Cookie session dikonfigurasi dengan
HttpOnly,Secure, danSameSite=Lax. loginButton()secara otomatis meng-escape HTML dan memblokirjavascript:,vbscript:,data:URI.RequireAuth::guard()hanya mengizinkan path relatif untuk mencegah open redirect.
Requirements
- PHP >= 8.1
jumbojett/openid-connect-php^1.0
Lisensi
MIT © BLPID — Badan Siber dan Sandi Negara