QA
Intermediate LevelAuthentication & Authorization

What is Keycloak and how does it act as an open-source Identity and Access Management (IAM) server?

❓ Interview Prompt: Explain Keycloak IAM architecture, realms, client definitions, user federation (LDAP/AD), and identity brokering.

Keycloak is a leading open-source Identity and Access Management (IAM) server maintained by Red Hat for modern applications and services.

Key Features:

1
Realms: Isolated administrative domains managing users, roles, and applications.
2
Protocol Support: Native support for OpenID Connect (OIDC), OAuth 2.0, and SAML 2.0 out of the box.
3
User Federation: Syncs users directly from external Enterprise LDAP or Active Directory servers.
4
Identity Brokering: Enables social login (Google/GitHub) or enterprise SAML login without custom code.
5
Out-of-the-box UI: Pre-built login, registration, 2FA setup, and password reset flows.

Code Implementation Example

typescript
import Keycloak from 'keycloak-connect';

// Express integration with self-hosted Keycloak IAM server
const keycloak = new Keycloak({}, {
  realm: 'enterprise-realm',
  'auth-server-url': 'https://iam.company.com/auth',
  sslRequired: 'external',
  resource: 'backend-api-service',
  bearerOnly: true
});

// Protecting Express endpoint with Keycloak role check
app.get('/api/admin', keycloak.enforce('realm:admin'), handleAdmin);
💡Protecting Express API endpoints using Keycloak IAM middleware.
🎯 Interview Key Takeaway

Keycloak is an open-source IAM server providing out-of-the-box OIDC, SAML, LDAP user federation, and administration consoles.

#Keycloak#IAM#IdP#Open Source#Intermediate
Back to all Authentication & Authorization Questions→

More Authentication & Authorization Interview Questions

Beginner LevelAuthentication & Authorization

Compare JWT Token Authentication versus Stateful Sessions, and explain OAuth 2.0 PKCE flow.

Beginner LevelAuthentication & Authorization

What is the fundamental difference between Authentication (AuthN) and Authorization (AuthZ)?

Beginner LevelAuthentication & Authorization

Why should passwords never be stored in plain text and how do bcrypt and Argon2id work?