blpid/connectidn-php

ConnectIDN SDK for PHP

Maintainers

Package info

github.com/rizal5516/connectidn-php-sdk

Homepage

pkg:composer/blpid/connectidn-php

Statistics

Installs: 6

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.2.1 2026-05-21 07:19 UTC

This package is auto-updated.

Last update: 2026-05-21 07:22:13 UTC


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() memanggil session_regenerate_id() untuk mencegah session fixation.
  • Cookie session dikonfigurasi dengan HttpOnly, Secure, dan SameSite=Lax.
  • loginButton() secara otomatis meng-escape HTML dan memblokir javascript:, vbscript:, data: URI.
  • RequireAuth::guard() hanya mengizinkan path relatif untuk mencegah open redirect.

Requirements

Lisensi

MIT © BLPID — Badan Siber dan Sandi Negara