وب سایت کانال https://codecrafters.ir
لیست هشتکها در کانال رو در زیر براتون خواهم گذاشت و آپدیت خواهد شد
#design_patterns الگوهای طراحی
#postgresql پستگرس
#k8s کوبرنتیز
#agile اجایل
#scrum
#algorithm الگوریتم
#video
#meeting متینگ
#principles اصول کدنویسی
#project_managment_system مدیریت تیم
#free خارج از مبحث کامپیوتر
#app برنامههای کاربردی
#Git #actions مباحث مربوط به گیت و گیتلب
#conda #env کار با
#Docker مباحث مربوط به داکر
#AI #ML مباحث هوش مصنوعی
#book معرفی کتاب
#monitoring بررسی وضعیت سیستم و کد
#concurrency همزمانی کتاب grokking concurrency
#blovkchain #web3
#DDD #domain_driven_design
#BDD #behavior_driven_development
#soa #sso #microservice
@Code_Crafters
Git Hub:
https://github.com/CodeCrafters-ir/
لیست هشتکها در کانال رو در زیر براتون خواهم گذاشت و آپدیت خواهد شد
#design_patterns الگوهای طراحی
#postgresql پستگرس
#k8s کوبرنتیز
#agile اجایل
#scrum
#algorithm الگوریتم
#video
#meeting متینگ
#principles اصول کدنویسی
#project_managment_system مدیریت تیم
#free خارج از مبحث کامپیوتر
#app برنامههای کاربردی
#Git #actions مباحث مربوط به گیت و گیتلب
#conda #env کار با
#Docker مباحث مربوط به داکر
#AI #ML مباحث هوش مصنوعی
#book معرفی کتاب
#monitoring بررسی وضعیت سیستم و کد
#concurrency همزمانی کتاب grokking concurrency
#blovkchain #web3
#DDD #domain_driven_design
#BDD #behavior_driven_development
#soa #sso #microservice
@Code_Crafters
Git Hub:
https://github.com/CodeCrafters-ir/
👍1
سیستم SSO (single sign-on) چیست؟
در واقع sso یک سیستم احراز هویت هستش، تکنولوژی که صفحات مختلف ورود برنامههای مختلف رو در یک صفحه ترکیب میکنه، با sso کاربر تنها یکبار اعتبارنامه خودش (نام کاربری و رمزعبور) رو در یک صفحه وارد میکنه و به همه برنامههای SaaS مورد نیاز خود دسترسی پیدا میکنه
در واقع sso توسط زمینه تجاری مورد استفاده قرار میگیرد، زمانیکه تمام برنامههای کاربردی کاربر توسط یک تیم متخصص IT ارائه و مدیریت میگردد
یک سازمان رو در نظر بگیرید که چندین برنامه کاربردی مختلف دارد و کاربر برای هر برنامه باید بصورت جداگانه هویت خود رو احراز کند، این موجب میشه تا در نهایت کاربران نهایی از انجام آن خسته و یا بخواهند آنرا به هر طریقی شده دور بزنند، sso در اینجا این امکان رو فراهم میکنه تا کاربر تنها با یکبار مشخص کردن هویت خود به تمامی سرویسهای کاربردی دسترسی پیدا کند، sso یک جنبه مهم از تمام راه حلهای مدیریت هویت و دسترسی یا کنترل دسترسی (IAM) و تایید هویت کاربر برای دانستن مجوزهای که هرکاربر باید داشته باشد است
مزایای استفاده از sso
علاوه بر سادگی استفاده از آن برای کاربران، امنیت آن نیز بسیار است، اما چگونه ممکن است استفاده از یک نام کاربری و پسورد برای استفاده از چندین سرویس امنتر از استفاده از چندین نام کاربری و پسورد باشد، دلایل زیر میتواند توضیح قانع کنندهای باشد:
۱-پسورد سخت:
کاربران تنها از یک پسورد استفاده میکنند و sso امکان ساخت و به یاد داشتن پسورد سخت رو فراهم میکنه چون کاربران تنها از یک پسورد استفاده میکنند و پسورد سخت از حملات (brute force attack) جلوگیری میکند، حدس زدن یک پسورد سخت کار رو غیر ممکن میکند
۲-عدم تکرار پسورد:
وقتی کاربران برای هر سرویس نیاز به پسورد داشته باشند معمولا از یک پسورد تکراری در تمامی سرویسها استفاده میکنند(یک رمز یکسان برای تمامی سرویسها) اگر دادههای دیتابیس یک سرویس لو بره با همون پسورد کاربر میتوانن به همه سرویسهای دیگه دسترسی پیدا کنند، sso با حذف چندین صفحه ورود به یک صفحه این مورد رو رفع میکند
۳-اعمال و اجرا کردن سیاستهای رمز عبور:
با استفاده از سیستم sso متخصصان IT میتوانند به راحتی سیاستهای رمز عبور خود را اعمال کنند برای مثال: بجای بازنشانی رمز عبور دورهای در سرویسهای مختلف با استفاده از sso کاربر تنها در یک سرویس بطور دورهای رمز عبور خود را بازنشانی میکند
۴-احراز هویتهای چندعامله(multi-factore authentication):
یا به اختصار MFA رجوع میکنه به بیش از یک عامل هویت سنجی، برای مثال علاوه بر نام کاربری و رمز عبور کاربر ممکن است مجبور به استفاده از احرازهویت سخت افزاری هم گردد، این قطعه سخت افزاری در شناسایی کاربر بسیار مهم است، MFA بسیار امنتر از اتکا به رمز عبور میباشد، sso امکان استفاده از MFA رو در یک نقطه واحد بجای استفاده از آن در چندین نقطه که ممکن است غیرقابل پیاده سازی باشد فراهم میکند
۵-یک نقطه برای ورود رمز عبور:
ناظران سیستم میتوانند پس از مدت مشخصی اعتبارنامه را مجدد وارد کنند تا اطمینان حاصل کنند که همان کاربر همچنان در دستگاهی که به سیستم وارد شده فعال است، با sso انها یک مکان مرکزی برای انجام اینکار رو برای همه برنامههای داخلی دارند، به جای اینکه اینکار رو در چندین برنامه مختلف اعمال کنند که ممکن است برخی از آنها این مورد رو پشتیبانی نکنند
۶-مدیریت اعتبار داخلی بجای حافظه خارجی:
معمولا رمزعبور کاربران بصورت مدیریت نشده توسط برنامهها و سرویسهای که ممکن است از بهترین شیوههای امنیتی پیروی کنند یا نکنند ذخیره میشوند، با sso آنها بصورت داخلی در محیطی ذخیره میشوند که تیم IT کنترل بیشتری روی آن دارد
۷-اتلاف زمان کمتر جهت بازیابی رمز عبور:
علاوه بر مزایای ذکر شده ،sso زمان تلف شده رو برای تیمهای داخلی کاهش میدهد، تیم IT زمان کمتری رو برای کمک به بازیابی رمز عبور کاربران میکند و کاربران زمان کمتری رو صرف ورود به برنامههای مختلف برای انجام کارهای خود میکندد،این پتانسیل موجب افزایش بهره وری کسب و کار میشود
#microservice
#sso
@code_crafters
در واقع sso یک سیستم احراز هویت هستش، تکنولوژی که صفحات مختلف ورود برنامههای مختلف رو در یک صفحه ترکیب میکنه، با sso کاربر تنها یکبار اعتبارنامه خودش (نام کاربری و رمزعبور) رو در یک صفحه وارد میکنه و به همه برنامههای SaaS مورد نیاز خود دسترسی پیدا میکنه
در واقع sso توسط زمینه تجاری مورد استفاده قرار میگیرد، زمانیکه تمام برنامههای کاربردی کاربر توسط یک تیم متخصص IT ارائه و مدیریت میگردد
یک سازمان رو در نظر بگیرید که چندین برنامه کاربردی مختلف دارد و کاربر برای هر برنامه باید بصورت جداگانه هویت خود رو احراز کند، این موجب میشه تا در نهایت کاربران نهایی از انجام آن خسته و یا بخواهند آنرا به هر طریقی شده دور بزنند، sso در اینجا این امکان رو فراهم میکنه تا کاربر تنها با یکبار مشخص کردن هویت خود به تمامی سرویسهای کاربردی دسترسی پیدا کند، sso یک جنبه مهم از تمام راه حلهای مدیریت هویت و دسترسی یا کنترل دسترسی (IAM) و تایید هویت کاربر برای دانستن مجوزهای که هرکاربر باید داشته باشد است
مزایای استفاده از sso
علاوه بر سادگی استفاده از آن برای کاربران، امنیت آن نیز بسیار است، اما چگونه ممکن است استفاده از یک نام کاربری و پسورد برای استفاده از چندین سرویس امنتر از استفاده از چندین نام کاربری و پسورد باشد، دلایل زیر میتواند توضیح قانع کنندهای باشد:
۱-پسورد سخت:
کاربران تنها از یک پسورد استفاده میکنند و sso امکان ساخت و به یاد داشتن پسورد سخت رو فراهم میکنه چون کاربران تنها از یک پسورد استفاده میکنند و پسورد سخت از حملات (brute force attack) جلوگیری میکند، حدس زدن یک پسورد سخت کار رو غیر ممکن میکند
۲-عدم تکرار پسورد:
وقتی کاربران برای هر سرویس نیاز به پسورد داشته باشند معمولا از یک پسورد تکراری در تمامی سرویسها استفاده میکنند(یک رمز یکسان برای تمامی سرویسها) اگر دادههای دیتابیس یک سرویس لو بره با همون پسورد کاربر میتوانن به همه سرویسهای دیگه دسترسی پیدا کنند، sso با حذف چندین صفحه ورود به یک صفحه این مورد رو رفع میکند
۳-اعمال و اجرا کردن سیاستهای رمز عبور:
با استفاده از سیستم sso متخصصان IT میتوانند به راحتی سیاستهای رمز عبور خود را اعمال کنند برای مثال: بجای بازنشانی رمز عبور دورهای در سرویسهای مختلف با استفاده از sso کاربر تنها در یک سرویس بطور دورهای رمز عبور خود را بازنشانی میکند
۴-احراز هویتهای چندعامله(multi-factore authentication):
یا به اختصار MFA رجوع میکنه به بیش از یک عامل هویت سنجی، برای مثال علاوه بر نام کاربری و رمز عبور کاربر ممکن است مجبور به استفاده از احرازهویت سخت افزاری هم گردد، این قطعه سخت افزاری در شناسایی کاربر بسیار مهم است، MFA بسیار امنتر از اتکا به رمز عبور میباشد، sso امکان استفاده از MFA رو در یک نقطه واحد بجای استفاده از آن در چندین نقطه که ممکن است غیرقابل پیاده سازی باشد فراهم میکند
۵-یک نقطه برای ورود رمز عبور:
ناظران سیستم میتوانند پس از مدت مشخصی اعتبارنامه را مجدد وارد کنند تا اطمینان حاصل کنند که همان کاربر همچنان در دستگاهی که به سیستم وارد شده فعال است، با sso انها یک مکان مرکزی برای انجام اینکار رو برای همه برنامههای داخلی دارند، به جای اینکه اینکار رو در چندین برنامه مختلف اعمال کنند که ممکن است برخی از آنها این مورد رو پشتیبانی نکنند
۶-مدیریت اعتبار داخلی بجای حافظه خارجی:
معمولا رمزعبور کاربران بصورت مدیریت نشده توسط برنامهها و سرویسهای که ممکن است از بهترین شیوههای امنیتی پیروی کنند یا نکنند ذخیره میشوند، با sso آنها بصورت داخلی در محیطی ذخیره میشوند که تیم IT کنترل بیشتری روی آن دارد
۷-اتلاف زمان کمتر جهت بازیابی رمز عبور:
علاوه بر مزایای ذکر شده ،sso زمان تلف شده رو برای تیمهای داخلی کاهش میدهد، تیم IT زمان کمتری رو برای کمک به بازیابی رمز عبور کاربران میکند و کاربران زمان کمتری رو صرف ورود به برنامههای مختلف برای انجام کارهای خود میکندد،این پتانسیل موجب افزایش بهره وری کسب و کار میشود
#microservice
#sso
@code_crafters
👍5
توکنهای احرازهویت SSO چگونه کار میکندد؟
توانایی ارسال توکن احراز هویت به برنامهها و سرویسهای خارجی در فرآیند SSO بسیار مهم است. این همان چیزی است که سیستم تأیید هویت را قادر می سازد جدا از سایر سرویس های ابری انجام شود و SSO را ممکن می کند.
یک رویداد اجتماعی را تصور کنید که تنها یکعده خاص از مردم میتوانند در آن شرکت کنند، یک راه برای بررسی آن این است در قسمت ورودی نگهبانانی بگذاریم که ورود افراد رو چک کنه و مهر تایید بر اجازه ورود صادر بشود، شبیه هر مهر که یکسری پارامترهای تاییدی دارد توکن احرازهویت نیز پارامترهایی دارد که صحت آنرا نشان میدهد،این استاندارد توکن احراز هویت رو با نام SAML (Security Assertion Markup Language) میشناسیم
چگونه SSO در یک استراتژی مدیریت دسترسی قرار می گیرد؟
در واقع sso تنها یک جنبه مدیریت دسترسی هستش، این باید ترکیبی باشد از کنترل دسترسی، کنترل سطح دسترسی، لاگ فعالیتها و سایر اقدامات جهت رهگیری و کنترل رفتار کاربر درون برنامههای سازمانی، با این حال، SSO یک عنصر حیاتی در مدیریت دسترسی است. اگر سیستمی نداند کاربر کیست، هیچ راهی برای اجازه یا محدود کردن اعمال آن کاربر وجود ندارد.
سیستم sso یک سرویس حیاتی در مبحث میکروسرویس هستش که سعی میکنیم این سرویس رو با جنگو و یک پلتفرم مخصوص و معروف آن پیاده سازی کنیم
#microservice
#sso
@code_crafters
توانایی ارسال توکن احراز هویت به برنامهها و سرویسهای خارجی در فرآیند SSO بسیار مهم است. این همان چیزی است که سیستم تأیید هویت را قادر می سازد جدا از سایر سرویس های ابری انجام شود و SSO را ممکن می کند.
یک رویداد اجتماعی را تصور کنید که تنها یکعده خاص از مردم میتوانند در آن شرکت کنند، یک راه برای بررسی آن این است در قسمت ورودی نگهبانانی بگذاریم که ورود افراد رو چک کنه و مهر تایید بر اجازه ورود صادر بشود، شبیه هر مهر که یکسری پارامترهای تاییدی دارد توکن احرازهویت نیز پارامترهایی دارد که صحت آنرا نشان میدهد،این استاندارد توکن احراز هویت رو با نام SAML (Security Assertion Markup Language) میشناسیم
چگونه SSO در یک استراتژی مدیریت دسترسی قرار می گیرد؟
در واقع sso تنها یک جنبه مدیریت دسترسی هستش، این باید ترکیبی باشد از کنترل دسترسی، کنترل سطح دسترسی، لاگ فعالیتها و سایر اقدامات جهت رهگیری و کنترل رفتار کاربر درون برنامههای سازمانی، با این حال، SSO یک عنصر حیاتی در مدیریت دسترسی است. اگر سیستمی نداند کاربر کیست، هیچ راهی برای اجازه یا محدود کردن اعمال آن کاربر وجود ندارد.
سیستم sso یک سرویس حیاتی در مبحث میکروسرویس هستش که سعی میکنیم این سرویس رو با جنگو و یک پلتفرم مخصوص و معروف آن پیاده سازی کنیم
#microservice
#sso
@code_crafters
👍4
در ادامه مبحث میکروسرویس رسیدیم به sso و اکنون با یک پلتفرم جامع بابتش آشنا خواهیم شد
در پست قبل گفتیم تمامی سرویسها و برنامههای ما نیاز به احراز هویت دارن و با استفاده از sso تمام صفحات ورود رو در یک صفحه جا میدیم، برای اینکار یک پلتفرم رایگان و پر استفاده وجود دارد از شرکت readhat با نام keycloak
در واقع keycloak یک ابزار رایگان شناسایی هویت و مدیریت دسترسی میباشد(IAM) identity and access management ، فرآیند احراز هویت رو برای سرویسهای IT ساده میکند
هدف از ابزار IAM اطمینان حاصل کردن از این مورد است که مردم به منابع درستی دسترسی دارن، که معمولاً اجرای SSO, فدراسیون هویت (identity federation) و احراز هویت قوی (authentication strong) رو امکان پذیر می کند
همه شما استفاده از مدیریت هویت و دسترسی (IAM) را می دانید.کاربرد اصلی راه حل IAM این است که به عنوان یک Identity Provider (IdP) عمل می کند، به این معنی که هویت های دیجیتالی کاربر و همچنین فاکتورهای احراز هویت آنها را ایجاد، نگهداری و مدیریت می کند
اما این سوالات پیش میاد
نخست keycloak چیست؟؟
یک ابزار برای IAM هستش که مجوز Apache رو داره و توسط شرکت redhat برای sso طراحی شده است
با keycloak شما میتونید در تایم کوتاهی سرویس خودتون رو امن و احرازهویت رو به برنامه خود اضافه کنید
با استفاده از کنسول ادمین keycloak ،کمپانیها میتونن با شبکههای اجتماعی سریعا وارد بشن، اینجا کد یا برنامهای تغییر نمیکنه، تمامی این موارد نیازمند انتخاب شبکه اجتماعی میباشد، ادمینها میتونن تمام جنبههای keycloak رو به سادگی مدیریت کنند، برای مثال فعال و غیرفعال کردن ویژگیهای آن
ویژگیهای keycloak
در واقع keycloak از سه نوع پروتکل oidc, oauth2, saml پشتیبانی میکند
این ابزار بصورت کامل از SSO که مخفف single-sign on و single-sign out میباشد پشتیبانی میکند
کنسول ادمین
یک رابط کاربری گرافیکی مبتنی بر وب توسط Keycloak ارائه شده است، که در آن میتوانید تمام تنظیمات مورد نیاز خود را با «کلیک کنید» آنطور که میخواهید کار کند تنظیم کنید
دسترسی و هویت شناسی کاربر
ما میتونیم بگیم که keycloak یک ابزار مستقل برای مدیریت هویت و دسترسی کاربران است، که به ما اجازه داشتن یک دیتابیس از کاربران، نقشها و گروهها رو میده، ما میتونیم از این اطلاعات بیشتر برای احراز هویت کاربران در برنامههامون استفاده کنیم و بخشهایی از آن را بر اساس نقشهای از پیش تعریفشده ایمن کنیم
میتواند نقش یک پروکسی رو بین کاربران و ارائه دهندگان هویت سنجی خارجی رو ایفا کنه
مهمترین ویژگی آن اجازه دادن به ارائه دهندگان احراز هویت خارجی می باشد و شما میتوانید موارد رو در کنسول ادمین آن کنترل کنید
مزایای keycloak
#microservice
#sso #keycloak
@code_crafters
در پست قبل گفتیم تمامی سرویسها و برنامههای ما نیاز به احراز هویت دارن و با استفاده از sso تمام صفحات ورود رو در یک صفحه جا میدیم، برای اینکار یک پلتفرم رایگان و پر استفاده وجود دارد از شرکت readhat با نام keycloak
در واقع keycloak یک ابزار رایگان شناسایی هویت و مدیریت دسترسی میباشد(IAM) identity and access management ، فرآیند احراز هویت رو برای سرویسهای IT ساده میکند
هدف از ابزار IAM اطمینان حاصل کردن از این مورد است که مردم به منابع درستی دسترسی دارن، که معمولاً اجرای SSO, فدراسیون هویت (identity federation) و احراز هویت قوی (authentication strong) رو امکان پذیر می کند
همه شما استفاده از مدیریت هویت و دسترسی (IAM) را می دانید.کاربرد اصلی راه حل IAM این است که به عنوان یک Identity Provider (IdP) عمل می کند، به این معنی که هویت های دیجیتالی کاربر و همچنین فاکتورهای احراز هویت آنها را ایجاد، نگهداری و مدیریت می کند
اما این سوالات پیش میاد
خود keycloak چیست؟؟
ویژگی و سودمندی آن چیست؟؟
چگونه تاثیر گذاره؟؟
ما به این سوالات پاسخ میدیم
نخست keycloak چیست؟؟
یک ابزار برای IAM هستش که مجوز Apache رو داره و توسط شرکت redhat برای sso طراحی شده است
با keycloak شما میتونید در تایم کوتاهی سرویس خودتون رو امن و احرازهویت رو به برنامه خود اضافه کنید
با استفاده از کنسول ادمین keycloak ،کمپانیها میتونن با شبکههای اجتماعی سریعا وارد بشن، اینجا کد یا برنامهای تغییر نمیکنه، تمامی این موارد نیازمند انتخاب شبکه اجتماعی میباشد، ادمینها میتونن تمام جنبههای keycloak رو به سادگی مدیریت کنند، برای مثال فعال و غیرفعال کردن ویژگیهای آن
ویژگیهای keycloak
در واقع keycloak از سه نوع پروتکل oidc, oauth2, saml پشتیبانی میکند
این ابزار بصورت کامل از SSO که مخفف single-sign on و single-sign out میباشد پشتیبانی میکند
کنسول ادمین
یک رابط کاربری گرافیکی مبتنی بر وب توسط Keycloak ارائه شده است، که در آن میتوانید تمام تنظیمات مورد نیاز خود را با «کلیک کنید» آنطور که میخواهید کار کند تنظیم کنید
دسترسی و هویت شناسی کاربر
ما میتونیم بگیم که keycloak یک ابزار مستقل برای مدیریت هویت و دسترسی کاربران است، که به ما اجازه داشتن یک دیتابیس از کاربران، نقشها و گروهها رو میده، ما میتونیم از این اطلاعات بیشتر برای احراز هویت کاربران در برنامههامون استفاده کنیم و بخشهایی از آن را بر اساس نقشهای از پیش تعریفشده ایمن کنیم
میتواند نقش یک پروکسی رو بین کاربران و ارائه دهندگان هویت سنجی خارجی رو ایفا کنه
مهمترین ویژگی آن اجازه دادن به ارائه دهندگان احراز هویت خارجی می باشد و شما میتوانید موارد رو در کنسول ادمین آن کنترل کنید
مزایای keycloak
۱-سریع و منعطف:
جامعه ان نشان داده که بسیار سریع با تغییرات دنیای مهندسی خودش رو وفق میده و در کل طراحی keycloak خودش رو برای رویکرد agile آماده و مناسب کرده
۲-نرم افزار منبع باز:
شما میتوانید به تمامی کدهای برنامه بصورت رایگان دسترسی داشته باشید و از آن استفاده نمایید
۳-پشتیبانی و ثابت شده:
جامعه عظیم و پشتیبانی بزرگی از آن حمایت میکند که سریع میتوانند به شما بازخورد دهند
۴-احراز هویت و مجوز دسترسی:
با حداقل ترین تلاش و سریع احراز هویت و افزایش امنیت را به سازمان و برنامههای خود میتوانید اضافه کنید
۵-مدیریت سیستم:
حساب های کاربران را به طور یکپارچه مدیریت و داده ها و همچنین جلسات را حفظ می کند
۶-ماژول و مستقل:
می توان از آن به عنوان یک عنصر زیرساخت IT یا به عنوان یک راه حل مستقل استفاده کرد
#microservice
#sso #keycloak
@code_crafters
👍4🔥4
در ادامه مباحث میکروسرویس رسیدیم به sso و پلتفرم keycloak
با محیط خود keycloak بیشتر آشنا بشیم
ابتدا با دستور زیر پلتفرم رو در داکر بالا میاریم
پلتفرم رو بر روی پورت 8080 بالا میاریم و با نام کاربری و پسورد admin وارد کنسول ادمین ان میشویم (در بروزر خود نام هاست خود یا ip رو همراه با پورت وارد کرده (localhost:8080) و به صفحه لاگین وارد میشویم)
بعد ورود به کنسول در سمت چپ نوباری میبینیم که هرکدوم رو بصورت جداگانه بررسی میکنیم
در قسمت بالایی آن یک لیست کشویی میبینیم که مربوط به realm میباشد، realm بعنوان یک یک فضای جداگانه برای مدیریت مجموعهای از کاربران و نقشها و برنامهها و تنظیمات امنیتی تعریف میشود، هر realm بطور جداگانه و مستقل از بقیه عمل میکند و میتواند تنظیمات امنیتی و مدیریتی مخصوص به خود را دارد با کلیک کردن بر روی create realm.و دادن یک نام یکتا به آن میتوان یک realm ساخت (ما با نام test14 یک realm میسازیم) و با رجوع به آدرس (localhost:8080/admin/test14/console) میتوان به محیط کنسول یوزر خود وارد شد و با دادن نامکاربری و پسورد داخل شد(چون تا کنون یوزری نساختهایم نمیتوان به ان ورود کرد)
پس بریم سراغ قسمت User و با زدن add user شروع به ساخت کنیم، فرم ان کامل مشخص است فیلد username رو وارد میکنیم و create رو میزنیم و بعد ریدایرکت میشیم به داخل محیط تنظمیات این یوزر که ساختیم در قسمت credentials برای این یوزر پسورد میگذاریم و در قسمت assign role به این یوزر نقشهایی رو میدیم و با استفاده از filter و جستجو این قسمت میتوانیم دنبال role مد نظر خود بگردیم در قسمت میتونیم دسترسی یوزر رو محدود کنیم
بعد از اتمام با یوزرنیم و پسورد این کاربر میتوانیم به لینک بالا که مربوط به کنسول realm با نام test14 میباشد دسترسی پیدا کرد(در قسمت رولهای یوزر میتوان دسترسی یوزر رو با realm آن مرتبط و محدود کرد) در قسمت یوزر هم میتوان تمام یوزرهارو دید و هنگام اتصال به پروژه یوزرهامون رو در این قسمت ایجاد میکنیم
اکنون نیاز به یک کلاینت داریم
کلاینت به یک برنامه یا سرویس اشاره دارد که برای احراز هویت و مجوز دسترسی (authentication, authorization) به منابع محافظت شده با keycloak ارتباط برقرار میکند، کلاینتها میتوانند انواع مختلفی از برنامهها باشند، مانند برنامههای وب، موبایل و سرویسها بکاند باشند
در قسمت client بر روی create client کلیککنید یک نام یکتا به ان دهید نوع بر روی oidc بماند، تیک client authentication رو فعال کنید و گزینه service accounts roles رو اضافه کنید برای کارکرد بهتر مقدار redirects uris رو یک ستاره بزارید و کلاینت رو ذخیره کنید
وارد کلاینتی که ساختید بشی
در تنظمیات کلاینت تمامی موارد رو میبینید و در تب credentials مقدار سکرت رو میبینید و در تب service accounts roles بر روی assign role کلیک کنید و رولهای مدنظر خودتون رو بهش اضافه کنید دو رول views , manage users دو رول حیاتی هستند که بعدا در کتابخانههامون جهت کار با keycloak لازم داریم
خبر اینکه این پلتفرم اندپوینت داره و با طراحی rest api میباشد که داکیومنتش رو در لینک زیر میتونید بخونید(دوستانی که سابقه کاری بالایی دارند اهمیت این موضوع رو بهتر میدونن)
https://www.keycloak.org/docs-api/22.0.1/rest-api/index.html
برای تست و کار کردن با اندپوینتها پنل رو بالا بیارید و موارد ذکر شده در بالا رو پیش ببرید(در قسمت رولها با توجه به اینکه میخواهیم اندپوینتهارو تست کنیم تمامی رولهارو اعمال کنید)
یک پست من بالا بیارید و یک درخواست با متد post به لینک
reelms/test14/protocol/openid_connect/token
با مقادیر زیر در body ارسال کنید
تا توکن دسترسی بهتون برگردونه و با استفاده از این توکن در قسمت authorization که از نوع bearer token هستش به اندپوینتها دسترسی پیدا میکنید
پنل رو بالا بیارید با محیط ان آشنا بشید تا بتونیم اندکی بیشتر به سمت پیاده سازی sso خودمون پیش بریم
#microservice
#sso #kecloak
@code_crafters
با محیط خود keycloak بیشتر آشنا بشیم
ابتدا با دستور زیر پلتفرم رو در داکر بالا میاریم
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -e KEYCLOAK_LOGL_EVEL=debug quay.io/keycloak/keycloak:24.0.3 start-dev
پلتفرم رو بر روی پورت 8080 بالا میاریم و با نام کاربری و پسورد admin وارد کنسول ادمین ان میشویم (در بروزر خود نام هاست خود یا ip رو همراه با پورت وارد کرده (localhost:8080) و به صفحه لاگین وارد میشویم)
بعد ورود به کنسول در سمت چپ نوباری میبینیم که هرکدوم رو بصورت جداگانه بررسی میکنیم
در قسمت بالایی آن یک لیست کشویی میبینیم که مربوط به realm میباشد، realm بعنوان یک یک فضای جداگانه برای مدیریت مجموعهای از کاربران و نقشها و برنامهها و تنظیمات امنیتی تعریف میشود، هر realm بطور جداگانه و مستقل از بقیه عمل میکند و میتواند تنظیمات امنیتی و مدیریتی مخصوص به خود را دارد با کلیک کردن بر روی create realm.و دادن یک نام یکتا به آن میتوان یک realm ساخت (ما با نام test14 یک realm میسازیم) و با رجوع به آدرس (localhost:8080/admin/test14/console) میتوان به محیط کنسول یوزر خود وارد شد و با دادن نامکاربری و پسورد داخل شد(چون تا کنون یوزری نساختهایم نمیتوان به ان ورود کرد)
پس بریم سراغ قسمت User و با زدن add user شروع به ساخت کنیم، فرم ان کامل مشخص است فیلد username رو وارد میکنیم و create رو میزنیم و بعد ریدایرکت میشیم به داخل محیط تنظمیات این یوزر که ساختیم در قسمت credentials برای این یوزر پسورد میگذاریم و در قسمت assign role به این یوزر نقشهایی رو میدیم و با استفاده از filter و جستجو این قسمت میتوانیم دنبال role مد نظر خود بگردیم در قسمت میتونیم دسترسی یوزر رو محدود کنیم
برای دسترسی پیدا کردن به کنسول ادمین در لینک بالا که گفتیم حتما باید رول role_admin رو از زیر مجموعه realm_management رو اضافه کنیم
بعد از اتمام با یوزرنیم و پسورد این کاربر میتوانیم به لینک بالا که مربوط به کنسول realm با نام test14 میباشد دسترسی پیدا کرد(در قسمت رولهای یوزر میتوان دسترسی یوزر رو با realm آن مرتبط و محدود کرد) در قسمت یوزر هم میتوان تمام یوزرهارو دید و هنگام اتصال به پروژه یوزرهامون رو در این قسمت ایجاد میکنیم
اکنون نیاز به یک کلاینت داریم
کلاینت به یک برنامه یا سرویس اشاره دارد که برای احراز هویت و مجوز دسترسی (authentication, authorization) به منابع محافظت شده با keycloak ارتباط برقرار میکند، کلاینتها میتوانند انواع مختلفی از برنامهها باشند، مانند برنامههای وب، موبایل و سرویسها بکاند باشند
در قسمت client بر روی create client کلیککنید یک نام یکتا به ان دهید نوع بر روی oidc بماند، تیک client authentication رو فعال کنید و گزینه service accounts roles رو اضافه کنید برای کارکرد بهتر مقدار redirects uris رو یک ستاره بزارید و کلاینت رو ذخیره کنید
وارد کلاینتی که ساختید بشی
در تنظمیات کلاینت تمامی موارد رو میبینید و در تب credentials مقدار سکرت رو میبینید و در تب service accounts roles بر روی assign role کلیک کنید و رولهای مدنظر خودتون رو بهش اضافه کنید دو رول views , manage users دو رول حیاتی هستند که بعدا در کتابخانههامون جهت کار با keycloak لازم داریم
خبر اینکه این پلتفرم اندپوینت داره و با طراحی rest api میباشد که داکیومنتش رو در لینک زیر میتونید بخونید(دوستانی که سابقه کاری بالایی دارند اهمیت این موضوع رو بهتر میدونن)
https://www.keycloak.org/docs-api/22.0.1/rest-api/index.html
برای تست و کار کردن با اندپوینتها پنل رو بالا بیارید و موارد ذکر شده در بالا رو پیش ببرید(در قسمت رولها با توجه به اینکه میخواهیم اندپوینتهارو تست کنیم تمامی رولهارو اعمال کنید)
یک پست من بالا بیارید و یک درخواست با متد post به لینک
reelms/test14/protocol/openid_connect/token
با مقادیر زیر در body ارسال کنید
client_id test14
client_secret در پنل و از کلاینتتون بردارید
grant_type client_credentials
تا توکن دسترسی بهتون برگردونه و با استفاده از این توکن در قسمت authorization که از نوع bearer token هستش به اندپوینتها دسترسی پیدا میکنید
پنل رو بالا بیارید با محیط ان آشنا بشید تا بتونیم اندکی بیشتر به سمت پیاده سازی sso خودمون پیش بریم
#microservice
#sso #kecloak
@code_crafters
👍4
در ادامه مبحث sso و کار با ابزار keycloak و آشنایی با محیط آن میرسیم به این موضوع که چگونه با پایتون با این ابزار کار کنیم
یکی از بهترین کتابخانههای اون رو در زیر براتون میزارم
دلیل استفاده از این پکیج جهت کار کردن روی سطح پایینتری از کیکلاک جهت ترکیب ان با drf و پیاده سازی کردن اندپوینتهایی جهت ساخت ui مخصوص خود و جدا شدن از محیط ui خود کیکلاک ،در پست قبلی یاد گرفتیم که چگونه realm, client, user بسازیم که دسترسی داشته باشیم از این داده درون این پکیج هم استفاده کنید جهت کار کردن و اعتبار سنجی
لازم بذکر میباشد که پکیج جامع django all auth نیز از کیکلاک پشتیبانی میکند، دلیل استفاده من از کتابخانه بالاتر انتخاب شخصی و مناسب با درخواست شرکت میباشد و نیاز به کد زدن در سطح پایینتری داشتم با امکان کنترل بیشتر بر روی flow موجود در طراحی سیستم
سعی میکنم یک نمونه پروژه کوچیک بسازم و بالا بیارم تا بتونیم درک سریعی از ترکیب موارد بالا رو باهم داشته باشیم و در گیتهاب پابلیک کنم
#microservice
#sso #keycloak
@code_crafters
یکی از بهترین کتابخانههای اون رو در زیر براتون میزارم
https://pypi.org/project/python-keycloak/
دلیل استفاده از این پکیج جهت کار کردن روی سطح پایینتری از کیکلاک جهت ترکیب ان با drf و پیاده سازی کردن اندپوینتهایی جهت ساخت ui مخصوص خود و جدا شدن از محیط ui خود کیکلاک ،در پست قبلی یاد گرفتیم که چگونه realm, client, user بسازیم که دسترسی داشته باشیم از این داده درون این پکیج هم استفاده کنید جهت کار کردن و اعتبار سنجی
اگر به ارور نوع grant برخوردید ابتدا با کنسول لاگین خود کیکلاک ورود کرده و مرحله تغییر پسورد رو پشت سر بگذارید، اگر میخواهید به این قسمت برنخورید هنگام ساخت یوزر زمانیکه به تب credentials میروید و برای یوزرتون پسورد ست میکنید گزینه Temporary رو غیر فعال کنید
لازم بذکر میباشد که پکیج جامع django all auth نیز از کیکلاک پشتیبانی میکند، دلیل استفاده من از کتابخانه بالاتر انتخاب شخصی و مناسب با درخواست شرکت میباشد و نیاز به کد زدن در سطح پایینتری داشتم با امکان کنترل بیشتر بر روی flow موجود در طراحی سیستم
سعی میکنم یک نمونه پروژه کوچیک بسازم و بالا بیارم تا بتونیم درک سریعی از ترکیب موارد بالا رو باهم داشته باشیم و در گیتهاب پابلیک کنم
#microservice
#sso #keycloak
@code_crafters
PyPI
python-keycloak
python-keycloak is a Python package providing access to the Keycloak API.
در ادامه مباحث مربوط به میکروسرویس و sso اینبار با یک پلتفرم جامعتر و بزرگتر با نام openam آشنا میشویم
تعریف OpenAM چیست؟
در واقع OpenAM ( Open Access Management) یک پلتفرم مدیریت هویت و دسترسی (IAM) منبع باز است که توسط ForgeRock ارائه میشود. این پلتفرم مجموعهای جامع از قابلیتها را برای مدیریت چرخه عمر هویت، احراز هویت، مجوزها، دسترسی و انطباق ارائه میدهد. OpenAM به طور گسترده در سازمانهای مختلف، از جمله شرکتهای دولتی، موسسات آموزشی، و ارائه دهندگان خدمات مالی، برای ایمنسازی برنامهها و منابع آنلاین آنها استفاده میشود.
برخی از ویژگیهای کلیدی OpenAM عبارتند از:
* مدیریت هویت: شامل ایجاد، مدیریت و حذف کاربران و گروهها، ذخیرهسازی اطلاعات هویت، و همگامسازی با دایرکتوریهای خارجی.
* احراز هویت: شامل پشتیبانی از انواع مختلف روشهای احراز هویت، مانند نام کاربری و رمز عبور، احراز هویت دو عاملی (2FA)، و احراز هویت مبتنی بر بیومتریک.
* مجوزها و دسترسی: شامل تعیین اینکه چه کسی میتواند به چه منابعی دسترسی داشته باشد و چه عملیاتی را میتواند انجام دهد.
* انطباق: شامل پشتیبانی از الزامات انطباق مختلف، مانند HIPAA، PCI DSS و GDPR.
*مبحث SSO (Single Sign-On): به کاربران اجازه میدهد تا با یک بار ورود به سیستم به چندین برنامه دسترسی داشته باشند.
*دروازه API: امکان ایمن سازی و مدیریت دسترسی به API ها را فراهم میکند.
* تجزیه و تحلیل: گزارشها و بینشهایی در مورد فعالیتهای کاربران و دسترسی به برنامهها ارائه میدهد.
پلتفرم OpenAM به صورت زیر قابل استقرار است:
* محلی: در زیرساختهای خودتان نصب و اجرا میشود.
* ابر: در یک محیط ابری مانند AWS، Azure یا Google Cloud Platform (GCP) میزبانی میشود.
* هیبریدی: ترکیبی از استقرار محلی و ابری.
پلتفرم OpenAM برای چه کسانی مناسب است؟
در واقع OpenAM برای سازمانهایی که نیاز به یک پلتفرم IAM قدرتمند، انعطافپذیر و مقیاسپذیر برای مدیریت هویت، دسترسی و انطباق در برنامهها و منابع آنلاین خود دارند، مناسب است. این پلتفرم به ویژه برای سازمانهای بزرگ با نیازهای IAM پیچیده مناسب است.
مزایای استفاده از OpenAM:
* امنیت: OpenAM به محافظت از برنامهها و منابع شما در برابر دسترسی غیرمجاز، نقض دادهها و سایر تهدیدات امنیتی کمک میکند.
* انطباق: OpenAM به شما کمک میکند تا با الزامات انطباق مختلف مانند HIPAA، PCI DSS و GDPR مطابقت داشته باشید.
* کارایی: OpenAM میتواند فرآیندهای احراز هویت و مجوز را خودکار کند و به شما در صرفهجویی در زمان و منابع کمک کند.
* قابلیت انعطافپذیری: OpenAM میتواند با انواع مختلف برنامهها، سیستمها و دایرکتوریها ادغام شود.
* مقیاسپذیری: OpenAM میتواند برای پشتیبانی از تعداد زیادی از کاربران و برنامهها مقیاسپذیر باشد.
معایب استفاده از OpenAM:
* پیچیدگی: OpenAM میتواند برای نصب، پیکربندی و مدیریت پیچیده باشد.
* هزینه: OpenAM میتواند یک پلتفرم گرانقیمت باشد، به خصوص برای پیادهسازیهای بزرگ.
* نیاز به تخصص: ممکن است برای استفاده موثر از OpenAM به تخصص فنی خاصی نیاز داشته باشید.
#micriservice
#sso #iam #sam
#openam
@code_crafters
تعریف OpenAM چیست؟
در واقع OpenAM ( Open Access Management) یک پلتفرم مدیریت هویت و دسترسی (IAM) منبع باز است که توسط ForgeRock ارائه میشود. این پلتفرم مجموعهای جامع از قابلیتها را برای مدیریت چرخه عمر هویت، احراز هویت، مجوزها، دسترسی و انطباق ارائه میدهد. OpenAM به طور گسترده در سازمانهای مختلف، از جمله شرکتهای دولتی، موسسات آموزشی، و ارائه دهندگان خدمات مالی، برای ایمنسازی برنامهها و منابع آنلاین آنها استفاده میشود.
برخی از ویژگیهای کلیدی OpenAM عبارتند از:
* مدیریت هویت: شامل ایجاد، مدیریت و حذف کاربران و گروهها، ذخیرهسازی اطلاعات هویت، و همگامسازی با دایرکتوریهای خارجی.
* احراز هویت: شامل پشتیبانی از انواع مختلف روشهای احراز هویت، مانند نام کاربری و رمز عبور، احراز هویت دو عاملی (2FA)، و احراز هویت مبتنی بر بیومتریک.
* مجوزها و دسترسی: شامل تعیین اینکه چه کسی میتواند به چه منابعی دسترسی داشته باشد و چه عملیاتی را میتواند انجام دهد.
* انطباق: شامل پشتیبانی از الزامات انطباق مختلف، مانند HIPAA، PCI DSS و GDPR.
*مبحث SSO (Single Sign-On): به کاربران اجازه میدهد تا با یک بار ورود به سیستم به چندین برنامه دسترسی داشته باشند.
*دروازه API: امکان ایمن سازی و مدیریت دسترسی به API ها را فراهم میکند.
* تجزیه و تحلیل: گزارشها و بینشهایی در مورد فعالیتهای کاربران و دسترسی به برنامهها ارائه میدهد.
پلتفرم OpenAM به صورت زیر قابل استقرار است:
* محلی: در زیرساختهای خودتان نصب و اجرا میشود.
* ابر: در یک محیط ابری مانند AWS، Azure یا Google Cloud Platform (GCP) میزبانی میشود.
* هیبریدی: ترکیبی از استقرار محلی و ابری.
پلتفرم OpenAM برای چه کسانی مناسب است؟
در واقع OpenAM برای سازمانهایی که نیاز به یک پلتفرم IAM قدرتمند، انعطافپذیر و مقیاسپذیر برای مدیریت هویت، دسترسی و انطباق در برنامهها و منابع آنلاین خود دارند، مناسب است. این پلتفرم به ویژه برای سازمانهای بزرگ با نیازهای IAM پیچیده مناسب است.
مزایای استفاده از OpenAM:
* امنیت: OpenAM به محافظت از برنامهها و منابع شما در برابر دسترسی غیرمجاز، نقض دادهها و سایر تهدیدات امنیتی کمک میکند.
* انطباق: OpenAM به شما کمک میکند تا با الزامات انطباق مختلف مانند HIPAA، PCI DSS و GDPR مطابقت داشته باشید.
* کارایی: OpenAM میتواند فرآیندهای احراز هویت و مجوز را خودکار کند و به شما در صرفهجویی در زمان و منابع کمک کند.
* قابلیت انعطافپذیری: OpenAM میتواند با انواع مختلف برنامهها، سیستمها و دایرکتوریها ادغام شود.
* مقیاسپذیری: OpenAM میتواند برای پشتیبانی از تعداد زیادی از کاربران و برنامهها مقیاسپذیر باشد.
معایب استفاده از OpenAM:
* پیچیدگی: OpenAM میتواند برای نصب، پیکربندی و مدیریت پیچیده باشد.
* هزینه: OpenAM میتواند یک پلتفرم گرانقیمت باشد، به خصوص برای پیادهسازیهای بزرگ.
* نیاز به تخصص: ممکن است برای استفاده موثر از OpenAM به تخصص فنی خاصی نیاز داشته باشید.
#micriservice
#sso #iam #sam
#openam
@code_crafters
❤5👍2
یه خبر خوب بهتون بدم
با یکی از بچههای گروه (محمد لیاقی) sso مربوط به پلتفرم keycloak رو بالا آوردیم و یک اپ جنگویی که بعنوان sml عمل میکنه رو بهش بایند کردیم و آماده استفاده قرار گرفته
توسعه اولیهش تا اینجا خوبه و کار راه بنداز و مناسب جهت استفاده
خوبیش چیه؟؟؟
دیگه روی پروژههای متوسط به بالا درگیر موضوع احراز هویت و مدیریت کاربران نمیشید یه پوش از پروژه میگیرید با داکر اجرا میکنید و تمام مباحث مربوط به توکن رو انجام میده و مقادیر دسترسی مورد نیاز برای پشتیبان سایت هم فراهم شده
کل کار بر روی api هستش و درگیر تمپلیت و ... نمیشید
ریپوی اون رو به زودی پابلیک میکنیم و دوستانی که علاقه دارن تو بهتر کردن api مربوط به بخش جنگوییش کمک کنن بهم پیام بدن تا بتونیم یک ریپوی کاملتر رو به مرور بسازیم
تمام تلاش ما این هستش که کدهای keycloak رو دست نزنیم به هیچ عنوان و با استفاده از ترفند و راهکارهای برنامه نویسی و افزودن تولزهای دیگه در قسمت جنگوییش یک سرویس کامل برای کامیونیتی جنگو بسازیم
#sso
@code_crafters
با یکی از بچههای گروه (محمد لیاقی) sso مربوط به پلتفرم keycloak رو بالا آوردیم و یک اپ جنگویی که بعنوان sml عمل میکنه رو بهش بایند کردیم و آماده استفاده قرار گرفته
توسعه اولیهش تا اینجا خوبه و کار راه بنداز و مناسب جهت استفاده
خوبیش چیه؟؟؟
دیگه روی پروژههای متوسط به بالا درگیر موضوع احراز هویت و مدیریت کاربران نمیشید یه پوش از پروژه میگیرید با داکر اجرا میکنید و تمام مباحث مربوط به توکن رو انجام میده و مقادیر دسترسی مورد نیاز برای پشتیبان سایت هم فراهم شده
کل کار بر روی api هستش و درگیر تمپلیت و ... نمیشید
ریپوی اون رو به زودی پابلیک میکنیم و دوستانی که علاقه دارن تو بهتر کردن api مربوط به بخش جنگوییش کمک کنن بهم پیام بدن تا بتونیم یک ریپوی کاملتر رو به مرور بسازیم
تمام تلاش ما این هستش که کدهای keycloak رو دست نزنیم به هیچ عنوان و با استفاده از ترفند و راهکارهای برنامه نویسی و افزودن تولزهای دیگه در قسمت جنگوییش یک سرویس کامل برای کامیونیتی جنگو بسازیم
#sso
@code_crafters
👍14❤2🔥1