Parsa Rezaei
Parsa Rezaei
خواندن ۲ دقیقه·۷ ماه پیش

Keycloak

سلام،

قرار بود ادامه این موضوع رو بگم که خب متاسفانه به کل یادم رفته بود:) بریم سر وقتش.

خب بحث این بود که چه راهی هست اگر تصمیمون این باشه که خارج از جنگو و دیتابیسمون دیتا کاربران ذخیره بشه؟ یکی از گزینه های روی میزمون Keycloak هستش.


یک نرم افزار متن باز که برای مدیریت هویت و دسترسی (IAM) استفاده قراره بشه. کاربرا مسیرشون از مسیر برنامه کامل جدا میشه در عوض توکن کاربر سمت برنامتون میره و بعد اجازه دسترسی بهش داده میشه. همچنین از پروتکل هایی مثل OpenID استفاده میکنه.

یکسری اصطلاحات مهمش رو توضیح میدم که نیازه آشناییت کوچیکی ازشون داشته باشیم ولی چون جزئیاتش زیاد هستش پیشنهاد میدم که داکیومنت خودش رو مطالعه کنید:

-- مورد اول بخش Users هستش که ویژگی های خاص خودشون رو دارن و میتونیم کاربران رو داخل یک گروه اختصاصی خودشون قرار بدیم مثل کارمندان شرکت آمازون.

-- مورد دوم Authentication, Authorization هستش که خب مسئولیت اعتبارسنجی و دسترسی دادن به کاربر رو داره.

-- مورد سوم Roles: نقش کاربرا مشخص میشه(کارمند،مدیر فروش،..)

-- مورد چهارم User Role Mapping: این مورد رو میتونین داخل توکن مشخص کنید و برنامه میاد بر اساس دسترسی و نقشی که کاربرا دارن بهشون دسترسی میده. مثلا برای مدیر فروش فقط مواردی که نیاز هست رو میتونه دسترسی داشته باشه، نمیتونه به امتیازات کارمندای دیگه مثل برنامه نویسای شرکت رو بخواد دسترسی پیدا کنه.

-- مورد پنجم Groups: تعدادی از کاربران رو میتونیم داخل یک گروه قرار بدیم مثلا تیم IT میتونن یک گروه باشن و امتیازات اون گروه رو استفاده کنند.

-- مورد ششم Credentials: اعتبارنامه رو میشه مشخص کرد که تاییدیه هویت کاربر به چه صورت انجام بشه(گذرواژه، گواهی دیجیتال،رمز یک بار مصرف،...)

-- مورد هفتم Authentication Flows: راهی که کاربر باید هنگام تعامل با جنبه های خاصی از سیستم انجام دهد. این جریان ها مشخص می کنند که کاربر باید چه اطلاعاتی را وارد کند و آیا چیزی همانند reCAPTCHA باید استفاده شود یا خیر . همچنین سیاست هایی برای تغییر رمز عبور (بازنشانی) صورت می گیرد.

-- مورد هشتم Realms: یک Realm و مجموعه از کاربران ، اعتبارنامه ها(Credentials)، نقش ها و گروه ها را مدیریت می کند. کاربر به یک Realm تعلق دارد و وارد آن می شود.


مواردی که بالا گفتم بخش کوچیکی از چنین سیستمی هستش، حالا اگر قرار باشه یک سناریو ازش بگم به این صورت هستش که شخص کارمند آمازون میخواد وارد سیستم برنامه ای که قراره ازش استفاده کنن بشه. بعد از احراز هویت، وارد Realm که مختص به شرکت آمازون میشه و بر اساس نقشی که داره، به برنامه دسترسی پیدا میکنه و کارش رو انجام میده. طبیعتا نمیتونه وارد Realm اپل بشه چون دیتایی از کارمند آمازون جای دیگه ای به غیر از Realm خودش استفاده نشده.

امیدوارم براتون مفید بوده باشه:)

لینک گیتهاب Keycloak

احراز هویترمز عبورنرم افزارمدیریت هویت دسترسیkeycloak
یه برنامه نویس ساده که جنگو کار میکنه و جدیدا هم تصمیم گرفته راه دواپس رو پیش ببره:)
شاید از این پست‌ها خوشتان بیاید