کنترل های گزینه های ورود به سیستم Controlling Login Options
Keycloak شامل چندین ویژگی برای صفحه ورود است
- Enabling forgot password فعال کردن رمز فراموش شده
اگر رمز عبور را فراموش کرده باشیم می توان این گزینه را فعال نمود، کاربران می توانند در صورت فراموشی رمز عبور یا گم کردن OTP، اعتبار ورود خود را بازنشانی کنند. با انتخاب بروی فراموشی رمز عبور، کاربران میتوانند نام کاربری یا آدرس خود را وارد کنند و ایمیلی با پیوندی برای بازنشانی اعتبار خود دریافت کنند.
در مرحله بعد Keycloak از کاربر می خواهد رمز عبور خود را به روز نماید و اگر یک OTP generator راه اندازی کرده اند، Keycloak از کاربر می خواهد که OTP generator را مجدداً پیکربندی کنند. بسته به الزامات امنیتی سازمان ممکن است نخواهیم کاربران OTP Generator خود را از طریق ایمیل بازنشانی کنند.
برای تغییر این وضعیت مراحل زیر را انجام می دهیم :
در منو روی Authentication کلیک کرده و بروی سربرگ Flow کلیک کرده ، جریان Reset Credentials را انتخاب نموده. در صورتی که نخواهیم OTP را بازنشانی کنیم ، شرط Reset OTP را بروی Disabled تنظیم می کنیم. همچنین بروی سربرگ Required Actions کلیک کرده و اطمینان حاصل شود که به روز رسانی رمز عبور فعال است.
فعال کردن : مرا به خاطر بسپار Enabling Remeber Me
یک کاربر وارد شده با بستن مرورگر خود session خود را نیز از بین می برد و آن کاربر مجدد می بایست به سیستم وارد شود. می توان Keycloak را به گونه ای تنظیم کنید که Session ورود کاربر را باز نگه دارد ،(در صورتی که کاربر پس از ورود بروی کادر به خاطر بسپارید کلیک کند).
در بخش Realm Settings ،سربرگ Login ، گزینه Remeber Me را در حالت ON قرار دهیم.
با فعال کردن این گزینه، در صفحه Login ، گزینه Remember Me فعال و نمایش داده می شود.
پیکربندی کلید های قلمرو Configuring Realm Keys
پروتکل های احراز هویت که توسط Keycloak استفاده می شوند، به صورت امضای رمزنگاری و گاهی اوقات رمزگذاری نیاز دارند. Keycloak از جفت کلید های نامتقارن، یک کلید خصوصی و عمومی برای انجام این کار استفاده می کند.
Keycloak دارای یک جفت کلید فعال در یک زمان است، اما می تواند چندین کلید غیرفعال نیز داشته باشد. جفت کلید فعال برای ایجاد امضاهای جدید استفاده می شود، در حالیکه از جفت کلید های غیرفعال می توان برای تایید امضاهای قبلی استفاده کرد. این چرخش منظم کلید ها بدون هیچ گونه توقف یا وقفه ای برای کاربران فراهم است.
هنگامی که یک Realm ایجاد می شود یک جفت کلید و یک گواهی خود امضاشده(self-Signed certificate) به طور خودکار تولید می شود. این جفت کلید می تواند وضعیت Active را داشته باشد ، اما همچنان به عنوان جفت کلید فعال فعلی برای قلمرو انتخاب نشود.
انواع کلید
کلید Rotate Rotating Keys
توصیه می شود به طور منظم کلید ها را Rotate استفاده شود. برای انجام اینکار، با ایجاد کلید های جدید با اولویت بالاتر از با همان اولویت ایجاد کرده و کلید های قبلی را غیر فعال می کنیم.
هنگامی که کلید های جدید در دسترس هستند، همه Token ها و Cookies های جدید با کلید های جدید امضا می شوند. هنگامی که کاربر Tokenهای Open-Id Connect بروز می شوند، Token های جدید با کلید های جدید امضا می شوند و این بدان معناست که با گذشت زمان همه کوکی ها و توکن ها از کلید های جدید استفاده می کنند و پس از مدتی می توان کلیدهای قدیمی را حذف کرد. تعداد دفعات حذف کلید های قدیمی، تعادلی بین امنیت و اطمینان از به روزرسانی تمام کوکی ها و توکن ها است.
نکته : هر سه تا شش ماه یکبار کلید های جدید ساخته و یک تا دو ماه پس از ایجاد کلید های جدید، کلید های قدیمی را حذف نماییم.
نکته : اگر کاربر در فاصله زمانی بین اضافه شدن کلید های جدید و حذف کلید های قدیمی غیرفعال بود، آن کاربر باید دوباره احراز هویت کند.
کلید های Rotating برای توکن های آفلاین نیز اعمال می شود. برای اطمینان از به روز رسانی، برنامه ها باید توکن ها را قبل از حذف کلید های قدیمی بروز رسانی کنند.
افزودن یک جفت کلید تولید شده
- قلمرو را در Admin Console انتخاب کرده
- تنظیمات Realms
- سربرگ Keys
- بخش Providers
- روی Add Keystore کلیک کرده و Rsa-Generated را انتخاب می کنیم.
در قسمت Priority عددی را وارد می کنیم، این عدد تعیین می کند که آیا جفت کلید جدید به جفت کلید فعال تبدیل می شود یا خیر. در صورتی که یک مقدار برای اندازه کلید انتخاب کنیم، روی ذخیره کلیک کرده و این اقدام یک جفت کلید جدید شامل یک گواهی خودامضا ایجاد می کند.
نکته : تغییر اولویت برای Provider باعث ایجاد مجدد کلید ها نمی شود اما اگر قصد داشته باشیم اندازه کلید را تغییر دهیم، می توان Provider را ویرایش نمود و کلید های جدید تولید می شوند.
افزودن یک جفت کلید و گواهی موجود
برای افزودن یک جفت کلید و گواهی به آمده در جای دیگر، Providers را انتخاب کنید و RSA را از منوی بازشو انتخاب کرده و میتوان اولویت را تغییر داد تا مطمئن شویم که جفت کلید به جفت کلید فعال تبدیل می شود.
- پیش نیازها
- یک فایل کلید خصوصی که فایل باید با فرمت PEM باشد.
- در Admin Console قلمرو بروی تنظیمات Realm Setting کلیک کرده و بروی سربرگ Keys کلیک کرده و بروی سربرگ Providers کلیک می کنیم.
- روی Add keystore کلیک کرده و RSA را انتخاب می کنیم.
- در قسمت Priority عددی را وارد کنید. این عدد تعیین می کند که آیا جفت کلید جدید به جفت کلید فعال تبدیل می شود یا خیر .
- برای آپلود فایل کلید خصوصی روی Select File در کنار Private RSA Key کلیک می کنیم.
- اگر یک گواهی امضا شده برای کلید خصوصی خود داشته باشیم، روی انتخاب فایل در کنار گواهی X509 کلیک کرده تا فایل گواهی بارگذاری شود.
نکته : اگر گواهی را آپلود نکنیم، Keycloak به طور خودکار یک گواهی خودامضا شده تولید می کند.
بارگزاری کلید ها از فروشگاه جاوا
Loading Keys from a Java Keystore
برای افزودن یک جفت کلید و گواهی ذخیره شده در فایل Java Keystore در میزبان، Providers را انتخاب کنید و Java-Keystore را از منوی بازشو انتخاب کرده و می توان اولویت را تغییر داد تا مطمئن شوید که جفت کلید جدید به جفت کلید فعال تبدیل می شود.
کلید های در معرض خطر Compromised Keys
Keycloak دارای کلید های امضا شده است که فقط به صورت محلی ذخیره می شوند و هرگز با برنامه های کلاینت ، کاربران یا سایر موجودیت ها به اشتراک گذاشته نمی شوند.
با این حل، اگر کلید امضای Realm به خطر بیفتد ابتدا باید جفت کلید جدیدی ایجاد کرد و سپس بلافاصله جفت کلید در معرض خطر را حذف کنیم. یا میتوان ارایه دهنده را از جدول Providers حذف کنید.
در منوی Clients ، بخش Security-admin-console ، سربرگ Revocation ، گزینه Set To now و در آخر Push را کلیک می کنیم.
نکته : گزینه not-before policy تضمین می کند که برنامه های کلاینت، Token های موجود امضا شده توسط کلید در معرض خطر را نمی پذیرد. برنامه کلاینت مجبور می شود جفت های کلید جدید را از Keycloak بارگیری کند، بنابراین Token های امضا شده توسط کلید در معرض خطر نامعتبر خواهند بود.
نکته : Rest و مشتریان محرمانه(Confidential) باید URL Admin را تنظیم کنند تا Keycloak بتواند درخواست خط مشی ارسال شده را به مشتریان ارسال کند