Download the PHP package kodepik/ums-laravel without Composer
On this page you can find all versions of the php package kodepik/ums-laravel. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package ums-laravel
UMS Laravel SDK
Laravel package for SSO authentication & authorization via UMS (User Management System).
Package ini menyediakan:
- SSO Login/Logout (OAuth2 redirect flow via UMS → Keycloak)
- JWT token validation via JWKS public key (RS256)
- Middleware untuk protect routes berdasarkan permission, role, dan module
- Helper functions untuk cek akses di mana saja (controller, service, blade)
- API authentication dengan Bearer token
Daftar Isi
- Requirements
- Installation
- Configuration
- Prasyarat di UMS Admin
- Quick Start — SSO Login
- Quick Start — API Bearer Token
- Middleware Reference
- Helper Functions
- UmsClaims Object
- Facade
- Implementasi Lengkap (Step by Step)
- Blade Template
- Advanced: Custom Routes
- Advanced: Token Refresh
- Troubleshooting
- Security Notes
Requirements
- PHP 8.1+
- Laravel 10.x atau 11.x
- UMS server yang sudah running
Installation
1. Install package
Package menggunakan Laravel auto-discovery — ServiceProvider dan Facade otomatis terdaftar.
2. Publish config
File config/ums.php akan dibuat.
Configuration
Tambahkan ke file .env:
Prasyarat di UMS Admin
Sebelum integrasi, pastikan di UMS Admin:
- Application sudah dibuat — catat
app_id(contoh:APP-xxxxx) - Callback URL didaftarkan —
https://yourapp.com/ums/callback - Logout redirect URL didaftarkan —
https://yourapp.com/login - User di-assign ke application — user yang bisa login
- Module, Role, Permission — sudah di-assign ke user sesuai kebutuhan
Quick Start — SSO Login
Setelah install dan config, SSO langsung bisa dipakai tanpa coding tambahan.
Auto-registered routes:
| Route | Method | Name | Fungsi |
|---|---|---|---|
/ums/login |
GET | ums.login |
Redirect ke UMS → Keycloak |
/ums/callback |
GET | ums.callback |
Handle callback setelah login |
/ums/logout |
GET | ums.logout |
Logout + redirect ke UMS logout |
/ums/refresh |
POST | ums.refresh |
Refresh token yang expired |
Di halaman login kamu:
Setelah login berhasil:
User di-redirect ke /dashboard (configurable di UmsAuthController). Data tersimpan di session:
Logout:
Quick Start — API Bearer Token
Untuk API endpoint yang di-consume frontend/mobile, gunakan Bearer token:
Client mengirim request dengan header:
Middleware Reference
ums.auth — Validasi Token
Memastikan request memiliki Bearer token yang valid.
Response jika gagal:
ums.permission:module,permission — Cek Permission
Memastikan user punya permission tertentu di module tertentu.
Response jika gagal:
ums.role:module,role — Cek Role
Memastikan user punya role tertentu di module tertentu.
Response jika gagal:
ums.module:module — Cek Akses Module
Memastikan user punya akses ke module tertentu (tanpa cek permission/role spesifik).
Response jika gagal:
Kombinasi Middleware
Middleware bisa di-chain:
Helper Functions
Tersedia global helper yang bisa dipanggil dari mana saja:
UmsClaims Object
Object yang dikembalikan oleh ums_user():
Struktur modules:
Facade
Implementasi Lengkap (Step by Step)
Step 1: Install & Config
Tambahkan ke .env:
Step 2: Buat Login Page
Step 3: Buat Dashboard (Protected Page)
Step 4: Protect API Routes
Step 5: Controller dengan Middleware
Step 6: Conditional Logic di Service/Controller
Blade Template
Gunakan helper functions langsung di Blade:
Advanced: Custom Routes
Jika ingin handle sendiri tanpa auto-registered routes:
Lalu buat sendiri:
Advanced: Token Refresh
Otomatis (via endpoint)
SDK menyediakan POST /ums/refresh yang bisa dipanggil dari frontend:
Manual di backend
Troubleshooting
| Problem | Penyebab | Solusi |
|---|---|---|
"kid" empty, unable to lookup correct key |
UMS JWKS tidak memiliki kid field |
SDK sudah handle otomatis (v1.0+) |
Invalid or expired token |
Token JWT sudah expired | Login ulang atau panggil /ums/refresh |
SSL certificate problem |
Self-signed cert di staging | Set UMS_VERIFY_SSL=false di .env |
Missing authorization token |
Request tanpa header Authorization: Bearer ... |
Tambahkan header Bearer token |
Route /ums/login not found |
Package belum ter-register | Jalankan composer dump-autoload dan clear cache |
Redirect ke /login setelah callback |
Session hilang atau callback URL mismatch | Pastikan UMS_CALLBACK_URL match dengan yang terdaftar di UMS |
| 403 padahal user punya permission | Nama module/permission case-sensitive | Cek exact match dengan yang ada di UMS Admin |
| JWKS cache stale setelah key rotation | Cache belum expired | Panggil UMS::invalidateJwksCache() atau php artisan cache:clear |
Session Data
Setelah SSO login berhasil, data berikut tersimpan di Laravel session:
| Key | Type | Isi |
|---|---|---|
ums_token |
string | JWT access token |
ums_refresh_token |
string | Refresh token |
ums_user |
array | Decoded JWT claims |
Security Notes
- ✅ Token divalidasi secara lokal menggunakan RSA public key (RS256) dari JWKS endpoint
- ✅ JWKS key di-cache selama 1 jam (configurable) untuk minimalisir network calls
- ✅ Refresh token hanya disimpan di server-side session (tidak di-expose ke client)
- ⚠️
UMS_VERIFY_SSL=false— hanya untuk development. Di production selalutrue - ⚠️ Pastikan
APP_KEYLaravel sudah di-set (session encryption) - ⚠️ Gunakan HTTPS di production untuk protect token di callback URL
Sample Project
Lihat full working example di:
Untuk menjalankan:
Buka http://localhost:8000 → Login with SSO → lihat dashboard test.
All versions of ums-laravel with dependencies
illuminate/support Version ^10.0|^11.0
firebase/php-jwt Version ^6.0
guzzlehttp/guzzle Version ^7.0