Skip to content
Menu
DevSecOps Now!!!
  • About
  • Certifications
  • Contact
  • Courses
  • DevSecOps Consulting
  • DevSecOps Tools
  • Training
  • Tutorials
DevSecOps Now!!!

Keycloak Multi-Client Architecture with Project-Based Email Validation (Student, Trainer, Company, Consulting)

Posted on April 10, 2026

Limited Time Offer!

For Less Than the Cost of a Starbucks Coffee, Access All DevOpsSchool Videos on YouTube Unlimitedly.
Master DevOps, SRE, DevSecOps Skills!

Enroll Now

When building a platform like DevOpsSchool with multiple user types such as students, trainers, companies, and consulting firms, one of the biggest challenges is handling authentication and registration rules properly.

You donโ€™t just want users to sign up โ€” you want:

  • Students and trainers to use Gmail accounts
  • Companies and consulting firms to use official domain emails
  • A single login system (SSO)
  • A clean and scalable architecture

This tutorial explains how to achieve all of this using Keycloak, following best practices used in enterprise systems.


Why This Architecture is Needed

Letโ€™s understand the core problem.

If you use one single client (like devopsschool-web):

  • Keycloak does not know:
    • Which project the user belongs to
    • Which email rule to apply
  • Validation becomes complex and messy
  • You end up writing confusing conditional logic

This leads to:

  • Bugs
  • Security risks
  • Poor maintainability

The Correct Approach (Recommended Architecture)

Use:

1 Realm

devopsschool

Multiple Clients

devopsschool-student-web
devopsschool-trainer-web
devopsschool-company-web
devopsschool-consulting-web
devopsschool-admin

Why This Works

Each client represents a specific application or project.

So now:

ClientPurposeEmail Rule
studentstudent portalonly @gmail.com
trainertrainer portalonly @gmail.com
companycompany portalonly company domain
consultingconsulting portalonly consulting domain

Now validation becomes simple and clean.


How the Flow Works

Each application sends its own client_id during login/register.

Example:

  • Student app โ†’ client_id=devopsschool-student-web
  • Company app โ†’ client_id=devopsschool-company-web

Keycloak automatically knows which client is being used.

Your validation logic uses this to decide rules.


Step-by-Step Implementation


Step 1: Create Realm

Go to Keycloak Admin Panel:

  • Create new realm:
devopsschool

This will be your central identity system.


Step 2: Create Clients

Create 5 clients:

1. Student Client

devopsschool-student-web

2. Trainer Client

devopsschool-trainer-web

3. Company Client

devopsschool-company-web

4. Consulting Client

devopsschool-consulting-web

5. Admin Client

devopsschool-admin

Important Client Settings

For each web client:

  • Protocol: openid-connect
  • Access Type:
    • public (frontend apps)
    • confidential (backend apps)
  • Standard Flow: Enabled
  • Valid Redirect URIs:
https://student.yoursite.com/*
https://trainer.yoursite.com/*
https://company.yoursite.com/*
https://consulting.yoursite.com/*

Step 3: Create Roles

Realm Roles

Create:

student
trainer
company_user
consulting_user

Step 4: Create Groups

Create groups:

/students
/trainers
/companies
/consulting

Assign Roles to Groups

GroupRole
studentsstudent
trainerstrainer
companiescompany_user
consultingconsulting_user

Why Use Groups?

Instead of assigning roles manually:

  • Assign user to group
  • Role is automatically applied

This saves huge effort in scaling.


Step 5: Configure Email (Important)

Go to:

Realm Settings โ†’ Email

Configure SMTP:

  • Host
  • Port
  • Username
  • Password

This is needed for:

  • Email verification
  • Password reset

Step 6: Domain Validation Strategy

Problem

You cannot trust:

user enters: abc@companyname.com

Anyone can fake this.


Solution: Domain Whitelist

Create a database/config:

Example Table

TypeNameDomain
companyTCStcs.com
companyInfosysinfosys.com
consultingABCabcconsulting.com

Step 7: Email Validation Logic

Student & Trainer

Allowed:

@gmail.com

Company

Allowed:

  • Only domains in database

Consulting

Allowed:

  • Only domains in database

Step 8: Implement Custom Validator (Important)

This is the core part.

You must create a Keycloak custom registration validator.


What This Validator Will Do

  1. Get current client_id
  2. Get user email
  3. Extract domain
  4. Apply rule based on client

Logic Example

if client_id == student:
    allow only gmail.com

if client_id == trainer:
    allow only gmail.com

if client_id == company:
    check domain in company table

if client_id == consulting:
    check domain in consulting table

Validation Examples

Student

โœ” abc@gmail.com
โœ– abc@yahoo.com


Company

โœ” user@tcs.com
โœ– user@gmail.com


Step 9: Attach Validator to Registration Flow

Go to:

Authentication โ†’ Flows
  1. Copy default registration flow
  2. Add your validator
  3. Set it as REQUIRED
  4. Bind this flow to your realm

Step 10: Assign Group Automatically

After validation success:

student โ†’ /students
trainer โ†’ /trainers
company โ†’ /companies
consulting โ†’ /consulting

Step 11: Project-wise Registration URLs

Each app should use its own login URL.

Example:

Student App

client_id=devopsschool-student-web

Company App

client_id=devopsschool-company-web

Step 12: UI Best Practices

Do not create one common registration form.

Instead:

  • Student portal โ†’ student registration
  • Company portal โ†’ company registration

This avoids confusion and improves UX.


Step 13: Testing Scenarios

Student

EmailResult
abc@gmail.compass
abc@yahoo.comfail

Company

EmailResult
user@tcs.compass
user@gmail.comfail

Consulting

EmailResult
user@abcconsulting.compass
user@random.comfail

Common Mistakes to Avoid

1. Using Single Client for All Projects

This creates confusion and breaks validation logic.


2. Trusting User Input for Domain

Never trust:

user types company name

Always validate against database.


3. Not Using Groups

Leads to manual role assignment problems.


4. Not Separating Admin Client

Security risk.


Advantages of This Architecture

  • Clean design
  • Easy validation
  • Scalable
  • Secure
  • SSO enabled
  • Easy maintenance

Final Conclusion

This setup gives you:

  • One central identity system
  • Multiple project-specific rules
  • Clean separation of concerns
  • Strong validation control
  • Enterprise-level scalability

Post Views: 13
  • Keycloak
  • Keycloak Multi-Client
  • Keycloak Multi-Client Architecture
  • Multi-Client
  • Multi-Client Architecture
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
  • Codex vs Claude: A Complete Practical Guide for Modern Developers (2026)
  • Certified AIOps Professional Program A Guide to Career Growth
  • Keycloak Multi-Client Architecture with Project-Based Email Validation (Student, Trainer, Company, Consulting)
  • Incorrect definition of table mysql.column_stats
  • Mautic and PHP 8.3 Compatibility Guide (2026)
  • Certified AIOps Engineer: The Complete Career Path and Certification Guide
  • How to Rename Apache Virtual Host Files Safely (Step-by-Step Guide for Linux)
  • AIOps Foundation Certification: Everything You Need to Know to Get Certified
  • DevOps to Certified Site Reliability Professional: A Senior Mentorโ€™s Guide
  • Certified Site Reliability Manager Training, Preparation, and Career Mapping
  • Certified Site Reliability Architect: The Complete Career Guide
  • What Is a VPN? A Complete Beginner-to-Advanced Tutorial
  • How to Install, Secure, and Tune MySQL 8.4 on Ubuntu 24.04 for Apache Event MPM and PHP-FPM
  • Complete Guide to Certified Site Reliability Engineer Career
  • Certified DevSecOps Professional Step by Step
  • Certified DevSecOps Manager: Complete Career Guide
  • Certified DevSecOps Engineer: Skills, Career Path and Certification Guide
  • Step-by-Step: Become a Certified DevSecOps Architect
  • Tuning PHP 8.3 for Apache Event MPM and PHP-FPM on Ubuntu: A Complete Step-by-Step Production Guide
  • Complete Step-by-Step Guide to Configure Apache Event MPM, Create index.php, Set Up VirtualHost, and Fix Ubuntu Default Page
  • Convert XAMPP Apache to Event MPM + System PHP-FPM
  • The Gateway to System Observability Engineering (MOE)
  • How to Finetune Apache and Prove It Works: A Real-World Guide to Testing Performance, Concurrency, HTTP/2, Memory, CPU, and Security
  • Building a High-Performance Apache Event MPM + PHP-FPM + MariaDB Stack (Advanced Server Optimization Guide)
  • Master Infrastructure as Code: The Complete Hashicorp Terraform Associate Guide
  • Building a High-Performance Apache Server with Event MPM + PHP-FPM (Step-by-Step Guide)
  • Is XAMPP Safer for Production Than Using Apache and PHP as Root? 2026 Practical Guide
  • Unlock Cloud Security Expertise with Certified Kubernetes Security Specialist (CKS)
  • How to Fix wpDiscuz Not Replacing Default WordPress Comments in Block Themes
  • Complete Guide to Certified Kubernetes Application Developer Certification

Recent Comments

  1. digital banking on Complete Tutorial: Setting Up Laravel Telescope Correctly (Windows + XAMPP + Custom Domain)
  2. SAHIL DHINGRA on How to Uninstall Xampp from your machine when it is not visible in Control panel programs & Feature ?
  3. Abhishek on MySQL: List of Comprehensive List of approach to secure MySQL servers.
  4. Kristina on Best practices to followed in .httacess to avoid DDOS attack?
  5. Roshan Jha on Git all Commands

Archives

  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • May 2023
  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022

Categories

  • Ai
  • AI Blogging
  • AiOps
  • ajax
  • Android Studio
  • Antimalware
  • Antivirus
  • Apache
  • Api
  • API Security
  • Api Testing
  • APK
  • Aws
  • Bike Rental Services
  • ChatGPT
  • Code Linting
  • Composer
  • cPanel
  • Cyber Threat Intelligence
  • Cybersecurity
  • Data Loss Prevention
  • Database
  • dataops
  • Deception Technology
  • DeepSeek
  • Devops
  • DevSecOps
  • DevTools
  • Digital Asset Management
  • Digital Certificates
  • Docker
  • Drupal
  • emulator
  • Encryption Tools
  • Endpoint Security Tools
  • Error
  • facebook
  • Firewalls
  • Flutter
  • git
  • GITHUB
  • Google Antigravity
  • Google play console
  • Google reCAPTCHA
  • Gradle
  • Guest posting
  • health and fitness
  • IDE
  • Identity and Access Management
  • Incident Response
  • Instagram
  • Intrusion Detection and Prevention Systems
  • jobs
  • Joomla
  • Keycloak
  • Laravel
  • Law News
  • Lawyer Discussion
  • Legal Advice
  • Linkedin
  • Linkedin Api
  • Linux
  • Livewire
  • Mautic
  • Medical Tourism
  • MlOps
  • MobaXterm
  • Mobile Device Management
  • Multi-Factor Authentication
  • MySql
  • Network Traffic Analysis tools
  • Paytm
  • Penetration Testing
  • php
  • PHPMyAdmin
  • Pinterest Api
  • Quora
  • SAST
  • SecOps
  • Secure File Transfer Protocol
  • Security Analytics Tools
  • Security Auditing Tools
  • Security Information and Event Management
  • Seo
  • Server Management Tools
  • Single Sign-On
  • Site Reliability Engineering
  • soft 404
  • software
  • SuiteCRM
  • SysOps
  • Threat Model
  • Twitter
  • Twitter Api
  • ubuntu
  • Uncategorized
  • Virtual Host
  • Virtual Private Networks
  • VPNs
  • Vulnerability Assessment Tools
  • Web Application Firewalls
  • Windows Processor
  • Wordpress
  • WSL (Windows Subsystem for Linux)
  • X.com
  • Xampp
  • Youtube
©2026 DevSecOps Now!!! | WordPress Theme: EcoCoded
wpDiscuz