برنامه نویسی

پانل SSO با Keycloak – انجمن DEV

طی چند سال گذشته، Panel از طریق لیست نامحدود ویژگی های خود برای واکشی، تجزیه و تحلیل، ارائه هر نوع داده و آوردن ابزارهای آشنای پایتون محبوبیت زیادی به دست آورده است. و همه اینها، بدون نیاز به نوشتن یک خط کد UI (شما می توانید، اگر واقعا می خواهید). در مورد ویژگی های پنل و قابلیت های آن مطالب زیادی نوشته شده است. این پست در درجه اول مربوط به اتصال و تأیید پانل با oAuth است.

پانل دارای یک چارچوب احراز هویت و مجوز است. خارج از جعبه، پانل پشتیبانی می کند

  • 1. لاجوردی
  • 2. bitbucket
  • 3. github
  • 4. gitlab
  • 5. گوگل
  • 6. okta علاوه بر این، پنل همچنین می تواند به هر ارائه دهنده عمومی oAuth متصل شود. یکی که من قطعاً می خواستم با آن کار کنم Keycloak است که در این لیست وجود ندارد. این به خوبی مستند نیست، با این حال انجام آن واقعا آسان است. این کار را می توان به یکی از دو روش انجام داد.

متغیر محیطی
می توانید متغیر env زیر را با مقادیر مناسب تنظیم کنید. در مثال Keycloak به طور مفصل به این موضوع پرداخته خواهد شد.

export PANEL_OAUTH_KEY
export PANEL_OAUTH_SECRET
export PANEL_OAUTH_AUTHORIZE_URL
export PANEL_OAUTH_TOKEN_URL
export PANEL_OAUTH_USER_URL
export PANEL_COOKIE_SECRET
export PANEL_OAUTH_REDIRECT_URL
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پارامتر خط فرمان
می توانید پارامترهای زیر را با مقادیر مناسب از طریق خط فرمان thro’ به زمان اجرا پانل ارسال کنید.

panel serve MyAnalysis.py --oauth-provider=generic \
--oauth-key=ClientID --oauth-secret=SECRET --cookie-secret=panel \
--oauth-authorize-url="" --oauth-token-url="" --oauth-redirect-url=""

تنظیم Keycloak برای oAuth SSO

سرویس گیرنده راه اندازی:

یک قلمرو ایجاد کنید

کلاینت را در آن حوزه ایجاد کنید. مطمئن شوید که نوع دسترسی را به عنوان محرمانه انتخاب کرده اید
URL دیگر را به درستی پر کنید

توضیحات تصویر

نوع دسترسی باید محرمانه باشد
آدرس های اینترنتی oAuth را دریافت کنید

راز مشتری را دریافت کنید و در آن کپی کنید PANEL_OAUTH_SECRET

توضیحات تصویر

به تنظیمات قلمرو → عمومی → نقاط پایانی بروید
را کلیک کنید OpenID Endpoint Configuration

توضیحات تصویر

آدرس های اینترنتی زیر را یادداشت کنید

"authorization_endpoint": "http://localhost:8080/realms/myrealm/protocol/openid-connect/auth",
"token_endpoint": "http://localhost:8080/realms/myrealm/protocol/openid-connect/token",
"introspection_endpoint": "http://localhost:8080/realms/myrealm/protocol/openid-connect/token/introspect",
"userinfo_endpoint": "http://localhost:8080/realms/myrealm/protocol/openid-connect/userinfo",
"end_session_endpoint": "http://localhost:8080/realms/myrealm/protocol/openid-connect/logout",
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اینها را به عنوان متغیرهای Env صادر کنید

export PANEL_OAUTH_KEY=panel-sso
export PANEL_OAUTH_SECRET="Pm8Bcs6QgygjaiyxRxSTfPpIzUkW40lM"
export PANEL_OAUTH_AUTHORIZE_URL="http://localhost:8080/realms/myrealm/protocol/openid-connect/auth"
export PANEL_OAUTH_TOKEN_URL="http://localhost:8080/realms/myrealm/protocol/openid-connect/token"
export PANEL_OAUTH_USER_URL="http://localhost:8080/realms/myrealm/protocol/openid-connect/userinfo"
export PANEL_COOKIE_SECRET="bZJc2sWbQLKos6GkHn/VB9oXwQt8S0R0kRvJ5/xJ89E="
export PANEL_OAUTH_REDIRECT_URL="http://localhost:5008"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پانل را با SSO عمومی اجرا کنید

panel serve my_pages.py --oauth-provider=generic
شما باید بتوانید ورود به صفحه کلید را ببینید

توضیحات تصویر

نتیجه

پانل یک ابزار شگفت انگیز است. برقراری ارتباط با هر ارائه دهنده عمومی oAuth ساده است و باید آن را به صورت ایمن در دسترس قرار دهد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا