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: 173
  • 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
  • The Master Guide to Immigration Points: Calculating Your Path to Canada, Australia, and Beyond
  • How to Skip the Activation Email and Password Reset After Google Login in Keycloak Auto-Link Existing Users in First Broker Login
  • Free SSL Certificate Generation Tutorial for Any Website Using Certbot and Apache
  • The Ultimate Guide to Certified FinOps Professional: Skills, Levels, and Career Impact
  • Certified FinOps Manager: Essential Skills for Modern Cloud Operations
  • How to Use Claude AI for Programming: Complete Guide for Developers to Boost Productivity
  • The Definitive Guide to Certified FinOps Engineer: Master Cloud Value Engineering
  • A Comprehensive Guide to the Certified FinOps Architect Certification and Training
  • Linux Server Diagnostic Commands: Complete Guide for Performance, Network & System Troubleshooting
  • The Ultimate Guide to CDOM โ€“ Certified DataOps Manager Certification
  • The Practical Path to AI Reliability: A Guide to the Certified MLOps Manager
  • Master the Machine Learning Lifecycle:Guide to Becoming a Certified MLOps Architect
  • How to Build a Project-Level AI Memory System That Works Across Codex, Claude, and Other AI Coding Tools
  • Certified MLOps Professional: A Deep Dive into the Certified MLOps Professional Certification
  • Certified MLOps Engineer : The Comprehensive Guide to Mastering Machine Learning Operations
  • 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

Recent Comments

  1. emmy day on SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘provider’ in ‘field list’
  2. digital banking on Complete Tutorial: Setting Up Laravel Telescope Correctly (Windows + XAMPP + Custom Domain)
  3. SAHIL DHINGRA on How to Uninstall Xampp from your machine when it is not visible in Control panel programs & Feature ?
  4. Abhishek on MySQL: List of Comprehensive List of approach to secure MySQL servers.
  5. Kristina on Best practices to followed in .httacess to avoid DDOS attack?

Archives

  • May 2026
  • 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
  • SSL
  • 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