هر برنامهٔ مدرن — از یک فروشگاه اینترنتی تا یک پلتفرم سازمانی — به احراز هویت (Authentication) و کنترل دسترسی (Authorization) نیاز دارد. پیادهسازی اینها از صفر کاری پرریسک و زمانبر است: مدیریت رمز عبور، توکن، نشست (Session)، پروتکلهای OAuth و حسابهای کاربری، به سرعت به یک پروژهٔ موازی و پرهزینه تبدیل میشود.
Keycloak راهحلی متنباز برای همین نیاز است. کیلاک ابتدا توسط شرکت Red Hat توسعه یافت و در سال ۲۰۱۴ به عنوان پروژهٔ متنباز منتشر شد؛ امروزه یکی از پروژههای فعال بنیاد Cloud Native Computing Foundation (CNCF) است. آخرین نسخهٔ پایدار آن، نسخهٔ ۲۶.۴ است که از نسخهٔ ۱۷ به بعد بر پایهٔ Quarkus ساخته شده و دیگر به سرور قدیمی WildFly وابسته نیست — نتیجهٔ آن راهاندازی سریعتر و مصرف منابع به مراتب کمتر است.
کیلاک چیست؟
Keycloak یک سرور مدیریت هویت و دسترسی (IAM) متنباز است که احراز هویت و مجوزدهی را برای برنامهها و سرویسهای شما متمرکز میکند. به جای اینکه هر برنامه سیستم لاگین مخصوص خودش را داشته باشد، همهٔ برنامهها از کیلاک میپرسند: «این کاربر کیست و چه اجازهای دارد؟»
کیلاک از پروتکلهای استاندارد صنعتی استفاده میکند، رابط مدیریت وب کامل دارد و با دیتابیسهای متعدد (PostgreSQL، MySQL و ...) کار میکند. در یک کلام: کیلاک یک IdP (Identity Provider) است که میتوانید روی زیرساخت خودتان اجرایش کنید.
امکانات اصلی کیلاک
پشتیبانی از OIDC و SAML
کیلاک از دو پروتکل استاندارد احراز هویت پشتیبانی میکند: OpenID Connect (OIDC) که بر پایهٔ OAuth 2.0 ساخته شده و استاندارد دنیای مدرن وب و موبایل است، و SAML 2.0 که همچنان در سازمانها و سیستمهای قدیمیتر (مثل برخی سیستمهای بانکی و دولتی) پرکاربرد است. با این پشتیبانی دوگانه، کیلاک میتواند هم به برنامههای جدید و هم به سامانههای قدیمی سرویس بدهد.
Single Sign-On (SSO)
کاربر یک بار وارد میشود و بدون لاگین مجدد به همهٔ برنامههای متصل به کیلاک دسترسی پیدا میکند. فرقی نمیکند پنج برنامهٔ داخلی داشته باشید یا بیست سرویس میکروسرویسی؛ تجربهٔ ورود یکپارچه، ساده و امن خواهد بود.
Social Login (ورود با شبکههای اجتماعی)
کیلاک از لاگین با Google، GitHub، Facebook، Twitter و دهها ارائهدهندهٔ دیگر (از طریق OIDC/SAML) پشتیبانی میکند. برای مخاطب ایرانی، این یعنی امکان اتصال به سرویسهای داخلی مانند پیامرسانها یا شبکههای اجتماعی بومی هم فراهم است — به شرطی که پروتکل استاندارد ارائه بدهند.
Realm (قلمرو)
یک Realm یک فضای ایزوله در کیلاک است؛ هر ریم دارای کاربران، کلاینتها، نقشها و تنظیمات امنیتی مستقل خودش است. میتوانید برای هر محصول، هر مشتری یا هر محیط (توسعه/تولید) یک ریم جدا داشته باشید — بدون اینکه دادههای آنها با هم قاطی شود.
Client و Client Scopes
هر برنامهٔ متصل به کیلاک یک Client است و تنظیمات خاص خودش را دارد. Client Scopes مشخص میکنند کدام ادعاها (Claims) — مثل ایمیل، نام یا نقشها — در توکن هر کلاینت قرار بگیرد. به این ترتیب کنترل دقیقی روی دادهای که هر برنامه دریافت میکند خواهید داشت.
User Federation (اتصال به دایرکتوری کاربران)
کیلاک لازم نیست کاربران را خودش نگه دارد؛ میتواند به LDAP یا Active Directory متصل شود و کاربران را از همانجا بخواند. این قابلیت برای سازمانهایی که از قبل دایرکتوری کاربران دارند، حیاتی است: کیلاک احراز هویت را انجام میدهد، ولی کاربران در همان سیستم قبلی مدیریت میشوند.
Admin Console (کنسول مدیریت)
کیلاک یک رابط وب مدیریت کامل دارد: ساخت ریم و کلاینت، مدیریت کاربران و نقشها، تنظیم سیاستهای رمز عبور، مشاهدهٔ نشستها و فعالکردن ۲FA — همه از یک داشبورد، بدون نیاز به خط فرمان.
مقایسهٔ کیلاک با راهحلهای دیگر
پرتکرارترین مقایسهها با کیلاک، مقایسه با سرویسهای آمادهٔ ابری مثل Auth0 و Firebase Auth است:
| ویژگی | Keycloak | Auth0 | Firebase Auth |
|---|---|---|---|
| مدل | متنباز و خودمیزبان | SaaS ابری | SaaS گوگل |
| پروتکلها | OIDC و SAML کامل | OIDC و SAML | OIDC |
| اتصال به LDAP/AD | بله — User Federation داخلی | با هزینهٔ اضافه | نه به صورت مستقیم |
| هزینه | رایگان | رایگان محدود + پلنهای پولی | رایگان محدود + پلن Spark پولی |
| کنترل دادهها | کامل — داده روی سرور شما | محدود به توافقنامهٔ سرویس | محدود — داده در گوگل |
| پیچیدگی راهاندازی | متوسط | پایین | بسیار پایین |
| مناسب برای | سازمانهایی با زیرساخت و الزامات امنیتی خاص | تیمهای کوچک و محصولات SaaS | اپلیکیشنهای موبایل و اکوسیستم گوگل |
گزینهٔ سوم که در ایران رایج است، پیادهسازی دستی JWT داخل خود برنامه است: چند میدلور، یک جدول کاربر، امضای توکن و تمام. این راهحل برای یک محصول ساده کار میکند، اما به محض اینکه چند برنامه، نقشها و نیاز به SSO اضافه شود، نقاط ضعفش ظاهر میشود: هر برنامه باید احراز هویت را دوباره مدیریت کند، نشستها از هم جدا میشوند و امنیت به سطح تجربهٔ تیم وابسته میماند. کیلاک دقیقاً برای همین نقطه است که این همه منطق را متمرکز میکند.
موارد استفادهٔ کیلاک
- SSO برای چند برنامهٔ داخلی — پورتال سازمانی، پنلها و ابزارهای داخلی با یک ورود واحد
- احراز هویت میکروسرویسها — دروازهٔ API توکنها را از کیلاک اعتبارسنجی میکند
- ورود برای اپلیکیشن موبایل و وب — با OIDC و PKCE برای کلاینتهای عمومی
- اتصال به Active Directory — احراز هویت با کاربران AD بدون نگهداری کپی جداگانه
- مدیریت هویت مشتریان (B2C) — با ریم جدا برای هر مشتری یا محصول
چه زمانی کیلاک انتخاب مناسبی است؟
- بیش از یک برنامه دارید که همه به یک سیستم هویت یکپارچه نیاز دارند
- به SSO و تجربهٔ ورود واحد برای کاربران نیاز دارید
- دادهٔ کاربران باید روی زیرساخت خودتان بماند (الزامات قانونی یا امنیتی)
- دایرکتوری LDAP یا Active Directory دارید که باید با برنامههای جدید ادغام شود
- میخواهید بدون پرداخت اشتراک سالانه، راهحل IAM سازمانی داشته باشید
چه زمانی کیلاک مناسب نیست؟
- یک اپلیکیشن ساده و تککاربره — برای یک پروژهٔ کوچک، کیلاک زیرساخت سنگینی است؛ Firebase Auth یا حتی لاگین سادهٔ داخلی کافی است
- تیم بدون تجربهٔ زیرساخت — کیلاک باید نگهداری شود: بهروزرسانی، بکاپ و پیکربندی صحیح جلسات
- نیاز به زمانبندی بسیار فشرده — اگر محصول را همین هفته باید برسانید و زیرساختی برای میزبانی ندارید، Auth0 سریعتر است
- اگر به قابلیتهای پیشرفتهٔ سازمانی نیاز دارید — بروکرینگ هویت پیچیده یا چند-ریم بزرگ در سرویسهای تجاری گاهی کاملتر است
کیلاک در لکسویا
لکسویا کیلاک را به عنوان برنامهٔ آماده (QuickApp) ارائه میدهد — با یک کلیک نمونهٔ تکنمونهای یا کلاستر راه بیندازید.
نتیجهگیری
Keycloak با پشتیبانی از OIDC و SAML، SSO یکپارچه، قابلیت اتصال به LDAP و ریمهای ایزوله، یکی از کاملترین راهحلهای IAM متنباز است. برای سازمانهایی که میخواهند هویت کاربران روی زیرساخت خودشان بماند، کیلاک تقریباً بدون رقیب است.
اما برای تیمهای کوچک و پروژههای زودبازده، سرویسهای ابری مثل Auth0 و Firebase Auth سادهتر و سریعتر هستند. تصمیم نهایی به مقیاس، بودجه و میزان کنترلی که روی دادهٔ کاربران نیاز دارید بستگی دارد.