Integrasi aplikasi ke Identity Provider, SCIM provisioning, dan troubleshooting SSO menjadi daily task utama IAM Engineer di lingkungan hybrid

Setelah di episode 11 kita membahas PAM, pada episode ini kita masuk ke application integration — menghubungkan aplikasi ke identity provider menggunakan OIDC atau SAML, mengkonfigurasi SCIM untuk provisioning, dan mendiagnosis masalah integrasi. Ini adalah daily task utama IAM Engineer.
Mengapa app integration penting? Karena IAM hanya berguna jika semua aplikasi terhubung ke IdP. Tanpa integrasi yang benar, user harus login terpisah untuk setiap app — mengembalikan ke masalah yang seharusnya dipecahkan oleh SSO.
# Install dependencies
npm install passport passport-openidconnect express-session
# Konfigurasi
passport.use(new OpenIDConnect.Strategy({
issuer: 'https://keycloak.example.com/realms/company',
authorizationURL: 'https://keycloak.example.com/realms/company/protocol/openid-connect/auth',
tokenURL: 'https://keycloak.example.com/realms/company/protocol/openid-connect/token',
userInfoURL: 'https://keycloak.example.com/realms/company/protocol/openid-connect/userinfo',
clientID: 'myapp',
clientSecret: 'secret',
callbackURL: 'https://myapp.example.com/callback'
}, (profile, done) => {
return done(null, profile);
}));| Parameter | Nilai (Contoh) |
|---|---|
| Entity ID | https://salesforce.com/company |
| ACS URL | https://login.salesforce.com/services/auth/sso |
| SSO URL | https://idp.company.com/sso/saml |
| Certificate | PEM format dari IdP |
| NameID | Email address |
# 1. Install SAML-tracer browser extension
# 2. Login ke aplikasi
# 3. Inspect SAML Request dan Response
# 4. Verifikasi: assertion, signature, attributes# 1. Enable SCIM di Keycloak
# 2. Buat SCIM client untuk aplikasi target
# 3. Map user attributes:
# userName → login
# emails.primary → email
# groups → role_assignment
# 4. Set provisioning strategy: push atau pull| Mode | Cara Kerja | Use Case |
|---|---|---|
| Push | IdP push user ke app | Real-time provisioning |
| Pull | App pull user dari IdP | Periodic sync |
| JIT | App create user saat login | On-demand |
| Issue | Penyebab | Solusi |
|---|---|---|
| Redirect loop | Misconfigured callback URL | Periksa redirect URI |
| Token expired | Clock skew | Sync NTP |
| Signature verification failed | Certificate expired | Rotate certificate |
| Attribute missing | Scopes tidak lengkap | Tambahkan required scopes |
| CORS error | Missing allowed origins | Tambahkan origin di IdP |
# 1. Enable verbose logging di app
DEBUG=openid-connect:* node app.js
# 2. Decode JWT token
echo $TOKEN | cut -d'.' -f2 | base64 -d | jq .
# 3. Check JWKS endpoint
curl https://idp.example.com/.well-known/jwks.json | jq .
# 4. Verify token signature
openssl dgst -sha256 -verify public.pem -signature token.sigTip
Saat troubleshooting SSO, mulai dari yang paling sederhana: redirect URI, clock sync, certificate, dan scopes. 90% masalah SSO berasal dari salah satu keempat hal ini.
Inti yang harus dibawa pulang:
Di episode 13 selanjutnya kita akan membahas Cloud IAM (AWS/GCP/Azure) — roles, policies, resource-based policies, dan workload identity. Siapkan cloud IAM kalian!