SSO architecture, federation protocols, dan trust setup memungkinkan user login sekali dan mengakses semua aplikasi tanpa mengulang credential

Setelah di episode 5 kita membahas authentication protocols, pada episode ini kita masuk ke SSO & federation — konsep yang memungkinkan user login sekali dan mengakses semua aplikasi tanpa memasukkan ulang credentials. SSO adalah salah satu benefit paling nyata dari IAM bagi end user.
Mengapa SSO penting? Karena tanpa SSO, user harus mengingat puluhan password untuk berbagai aplikasi. Ini mengarah ke password reuse, fatigue, dan akhirnya — security risk. SSO menghilangkan masalah ini sekaligus meningkatkan security.
Satu IdP menjadi pusat authentication untuk semua aplikasi:
User → Login → IdP (Keycloak/Entra ID)
↓
Token diterbitkan
↓
User mengakses App A, B, C dengan token yang sama| Pattern | Cara Kerja | Contoh |
|---|---|---|
| Web SSO | Browser redirect ke IdP | OIDC, SAML |
| API SSO | Token-based auth | OAuth 2.0 Bearer |
| Desktop SSO | Integrated Windows Auth | Kerberos/NTLM |
| Mobile SSO | System browser redirect | OIDC + PKCE |
Federation memungkinkan beberapa organisasi saling mempercayai authentication:
Organisasi A (IdP: AD/Entra)
↕ Trust Relationship
Organisasi B (SP: SaaS App)
↕ Trust Relationship
Organisasi C (IdP: Keycloak)User di Organisasi B bisa login menggunakan credentials dari Organisasi A atau C.
# Buka Keycloak Admin Console
# Create new realm: company-sso
# Configure:
# - Login settings (redirect URIs)
# - Token settings (lifespan)
# - Security defences (CORS, CSP)# 1. Create Client → Client ID: myapp
# 2. Client Protocol: OpenID Connect
# 3. Valid Redirect URIs: https://myapp.example.com/callback
# 4. Web Origins: https://myapp.example.com
# 5. Copy Client Secret dari Credentials tab# 1. Redirect user ke authorization endpoint
open "http://localhost:8080/realms/company-sso/protocol/openid-connect/auth?client_id=myapp&response_type=code&scope=openid&redirect_uri=http://localhost:3000/callback"
# 2. Login, dapat authorization code dari redirect
# 3. Exchange code untuk token
curl -X POST http://localhost:8080/realms/company-sso/protocol/openid-connect/token \
-d "grant_type=authorization_code&code=CODE&client_id=myapp&client_secret=SECRET&redirect_uri=http://localhost:3000/callback"SAML federation dimulai dengan pertukaran metadata:
IdP Metadata (XML):
- Entity ID
- SSO URL
- Certificate
- NameID format
SP Metadata (XML):
- Entity ID
- ACS URL
- Certificate
- Assertion consumer service<!-- Contoh SAML metadata IdP -->
<EntityDescriptor entityID="https://idp.company.com">
<IDPSSODescriptor>
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://idp.company.com/slo"/>
<NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://idp.company.com/sso"/>
</IDPSSODescriptor>
</EntityDescriptor>Note
SSO federation membutuhkan planning yang matang. Pastikan trust relationships terdokumentasi, certificate rotation dijadwalkan, dan disaster recovery plan tersedia. SSO yang gagal bisa mengunci semua user dari semua aplikasi.
Inti yang harus dibawa pulang:
Di episode 7 selanjutnya kita akan membahas MFA & passwordless — metode MFA, FIDO2/WebAuthn, dan phishing-resistant authentication. Siapkan keamanan authentication kalian!