RezaDehghani
RezaDehghani
خواندن ۳ دقیقه·۲ سال پیش

Keycloak Run in production server

سلام حالتون چطوره؟

توی این پست قصدم گفتن چند نکته راجع به نصب نیم بند keycloak توی محیط سرور هست.

اول از همه بگم که Keycloak یک ابزار هست برای تامین امنیت نرم افزار هایی که مینویسیم. این نرم افزار بحث کنترل و دسترسی رو برای ما مدیریت می کند. از دیگر نکات قابل توجه میشه این رو گفت که این نرم افزار open source هست و Apache License 2.0 رو داره. میتونم بگم شرکت ها و مجموعه های بزرگی از این ابزار استفاده میکنند و تقریبا چرخی هست که برای کنترل دسترسی اختراع شده و مجددا از نو ساختن همچین ابزاری در صورتی که نیازمندی خاصی نباشه اشتباه محسوب میشه.

برای اطلاعات بیشتر راجع به این ابزار میتونید به منابع زیر مراجعه کنید:

1- Keycloak Doc

2- What Keycloak Is and What It Does?

3- Introduction to Keycloak




از عنوان اصلی مقاله دور نشیم. بریم سراغ راه اندازی Keycloak روی سرور (طبعاً لینوکسی و برای راحتی من از ubuntu استفاده کردم) و محیط عملیاتی یا به اصطلاح production mode.

گام اول:

بصورت پیش فرض keycloak از دیتابیس h2 استفاده میکنه. واضح هست که ما نمی خواهیم از این دیتا بیس برای محیط عملیاتی استفاده کنیم. من PostgreSQL رو برای محیط عملیاتی استفاده کردم.

اول از همه PostgreSQL رو نصب میکنیم و روی اون یک دیتابیس و یوزر برای keycloak میسازیم. در ادامه فایل keycloak.conf در مسیر /conf را باز کرده و قسمت های مربوطه را از comment خارج میکنیم:

# The database vendor. db=postgres # The username of the database user. db-username=<keycloak database username> # The password of the database user. db-password=<keycloak database password> # The full database JDBC URL. If not provided, a default URL is set based on the selected database vendor. db-url=jdbc:postgresql://<database url>

با انجام این تغییرات keycloak به دیتابیس PostgreSQL متصل خواهد شد.

گام دوم:

گام دوم مربوط به نام کاربری و رمز عبور مدیر سامانه است. keycloak برای تعریف admin از طریق رابط کاربری (UI)فقط اجازه می دهد که localhost به فرم مربوطه دسترسی پیدا کند. راحترین راه برای تعریف کاربر مدیر استفاده از environment variable است. با معرفی دو متغییر به شکل زیر keycloak آنرا خوانده و مدیر سامانه را در دیتابیس ایجاد میکند.

>export KEYCLOAK_ADMIN=<username> >export KEYCLOAK_ADMIN_PASSWORD=<password>

گام سوم:

بخش 1:

بطور کلی keycloak اجبار میکند که سرور از ssl برای مسایل امنیتی استفاده نماید و بدون معرفی فایل های مربوطه به keycloak این برنامه بصورت طبیعی run نخواهد شد.

برای راه اندازی سرور بصورت معمول کافیست دستور زیر را در bash اجرا نموده:

bin/kc.sh start

بخش 2 :

اما در صورتی که نیازی به https و مسایل مربوطه ندارید میتوانید بصورت زیر اقدام نمایید:

1- در ابتدا دستور زیر را برای راه اندازی سرور با پروتکل http و غیر فعال نمودن محدودیت های مربوط به عدم استفاده از https اجرا نماییم:

>/root/keycloak/keycloak-21.1.0/bin/kc.sh start --hostname-strict=false --hostname-strict-https=false --http-enabled=true

پس از اجرای دستور زیر، keycloak شروع به کار خواهد کرد و در قدم اول جدول های مورد نیاز خود را در دیتابیسی که در قسمت اول معرفی کردیم میسازد.(این اقدام در صورتی انجام می شود که جداول وجود نداشته باشد).

2- پس از ساخت جداول و کاربر ادمین برای realm پیش فرض (master) باید حالت اجباری ssl را غیر فعال نمود.

کوئری زیر این امکان را فعال میکند:

update REALM set ssl_required='NONE' where id = 'master';

و تمام شما keycloak را در محیط عملیاتی راه اندازی کردید.

keycloakoauth2Authorization
شاید از این پست‌ها خوشتان بیاید