User Tools

Site Tools


solution_for_authentication_authorization

LDAP only verifies users, but it is not sufficient for modern security requirements. Keycloak is a complete open-source SSO solution that can integrate with LDAP and provides secure APIs through JWT tokens.

Entity Management Tool – LDAP vs Keycloak

1. LDAP

Best for

Internal company logins

Simple username/password authentication

What LDAP does (Simple terms)

LDAP (Lightweight Directory Access Protocol) is a central user directory

It only verifies username and password

It tells the application YES / NO (valid user or not)

How LDAP login works

User enters username & password

Application sends credentials to LDAP

LDAP verifies user

LDAP returns YES / NO

Application creates its own session

Limitations of LDAP

No social login

No JWT / access tokens

No Single Sign-On (SSO)

Hard to manage roles & permissions dynamically

Old technology

Weak for modern APIs and mobile applications

Not provide any public api for authentication or user management

2. Keycloak

What is Keycloak?

Keycloak is an open‑source identity and access management server developed by Red Hat.Keycloak is OpenID Connect–based.

Main responsibilities

User login

Roles & permissions management

JWT token generation

Single Sign-On (SSO)

How Keycloak works

Application → redirects to Keycloak → user logs in → application receives JWT token

We can customize the Keycloak login page using our own theme. We can also manage users through the Keycloak admin interface or by calling Keycloak APIs from our system.

Key benefits

Language independent (works with any backend)

Open-source

GUI‑based role & user management

No role & permission stored in application DB

No role & permission hardcoded in code

SSO ready

Highly scalable

Provide public apis.

Public APIs

Authentication

Login API

Token generation

Token validation

User Management

Create user

Assign role

Update user

Disable user

3. Keycloak Login Flow

User clicks Login on application

User is redirected to Keycloak login page

User enters credentials

Keycloak verifies user

Keycloak generates JWT token

User is logged into the application

4. Keycloak with LDAP Integration

Keycloak works with LDAP.

Flow

User data stored in LDAP

Login handled by Keycloak

Keycloak validates user from LDAP

Keycloak issues JWT token to application

Advantages

No user database in application

No passwords stored in application

Centralized authentication & authorization

But for Keyclock we need to install a keyclock in our server & need to run on another port.

We can install under Same domain

Step : install → run → connect with PHP

User & Role Hierarchy – Keycloak Integration

Keycloak can fully support our existing role and permission structure without any limitation.

Existing Roles in Current System

Our application currently has the following user roles, each with different permissions:

Super Admin

Our Agents

Admin

SPOC

Approver

Employee

How Roles Will Be Managed in Keycloak

Each existing role will be created in Keycloak as a Realm Role:

ROLE_SUPER_ADMIN

ROLE_TAXIVAXI_AGENTS

ROLE_ADMIN

ROLE_SPOC

ROLE_APPROVER

ROLE_EMPLOYEE

Each user will be assigned one main role based on their type.

How Permissions Will Be Managed

Permissions (what a user can do) will be managed separately using Client Roles.

Create booking

View booking

Approve booking

View invoices

Access admin panel

View reports

This allows flexibility without changing application code.

Role & Permission mapping

Roles and Permissions

SPOC

CREATE_BOOKING


EMPLOYEE

CREATE_BOOKING

JWT Token After Login

After successful login, the system receives a JWT token from Keycloak containing the user’s roles and permissions.

Example: SPOC Token

{

"roles": ["ROLE_SPOC"],
"permissions": ["CREATE_BOOKING",”VIEW_BOOKING”]

}

Example: Employee Token

{

"roles": ["ROLE_EMPLOYEE"],
"permissions": ["CREATE_BOOKING"]

}

Then our system will check if there is an option create booking then show create booking option.

if (userHasPermission('CREATE_BOOKING')) {

  showCreateBookingButton();

}

If One user has multiple roles:

So permissions should depend on the selected role at login time, not on all roles together.

How it works

User logs in

The system asks: “Login as which role?”

Approver

Employee

SPOC

User selects one role

Keycloak issues JWT token only with permissions of the selected role

Application uses that token

Authentication & Authorization for Microservices

Keycloak fits very well for microservices.Keycloak acts as a central authentication & authorization server.

User logs in via Keycloak

Keycloak verifies credentials

Keycloak issues JWT token

Token is sent with every API request

Each microservice:

Reads permissions from JWT

Allows or denies access

Keycloak with Multiple Microservices

One login for all services (SSO)

Same token works across services

No duplicate user DBs

Operational Complexity (Learning & Adoption Effort)

For developer

Basic Keycloak concepts (Realm, Client, Roles)

JWT token structure

Token validation in services

For Operations / Admin Team

GUI-based user & role management

Initial Setup (One-time)

Keycloak installation

LDAP / DB integration

Role & permission setup

Token configuration

End-to-End Authentication & Authorization Flow

User authentication and token generation are handled by Keycloak, token validation is done at the gateway, and each backend service authorizes requests by checking permissions from the JWT token

Flow

User opens the application and initiates login.
React application redirects the user to Keycloak for authentication.

Keycloak (Login + Token)

User enters credentials.

Keycloak verifies the user (via DB / LDAP).

On success, Keycloak generates a JWT access token.

React UI (Receives JWT)

React receives the JWT token.


React UI → API Call

For every API request, React sends the JWT token in the request header:

API Gateway (Token Validation)

Gateway intercepts the request.

Validates the JWT token:

If the token is invalid → request is rejected.


Node Microservice (Permission Check)

Backend service reads roles/permissions from the JWT payload.

Checks whether the user has the required permission for the API.

If permission is missing → access denied (403).


Response

Node microservice sends the response back to the client through the gateway.

React UI displays the result to the user.

solution_for_authentication_authorization.txt · Last modified: by sonali