پانل 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 ساده است و باید آن را به صورت ایمن در دسترس قرار دهد.