DevGang
Авторизоваться

Panel SSO с Keycloak

За последние несколько лет Panel приобрела большую популярность благодаря своему неограниченному списку функций для извлечения, анализа, представления любых типов данных и использования знакомых инструментов python. И все это без необходимости писать ни одной строки кода пользовательского интерфейса (вы можете, если действительно хотите). О функциях панели и ее возможностях было много написано. Этот пост в первую очередь посвящен подключению и аутентификации панели с помощью OAuth.

Panel имеет встроенную систему аутентификации и авторизации. По умолчанию Panel поддерживает

  1. azure
  2. bitbucket
  3. github
  4. gitlab
  5. google
  6. okta

В дополнение к этому Panel также может подключаться к любому универсальному провайдеру 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

Параметр командной строки

Вы можете передать следующие параметры с соответствующими значениями через командную строку во время выполнения панели.

panel serve MyAnalysis.py --oauth-provider=generic \
--oauth-key=ClientID --oauth-secret=SECRET --cookie-secret=panel \
--oauth-redirect-uri="multiple_pages" --oauth-extra-params="{'TOKEN_URL':'', 'AUTHORIZE_URL':'', 'USER_URL':''}"

Настройка Keycloak для OAuth SSO

Настройка клиента:

Создайте клиента внутри этой области. Убедитесь, что вы выбрали тип доступа как конфиденциальный.

Заполните другой URL соответствующим образом

Тип доступа должен быть конфиденциальным.

Получение URL-адресов OAuth.

Получите Secret клиента и скопируйте его в PANEL_OAUTH_SECRET

Перейдите в Realm Setting → General → Endpoints

Нажмите OpenID Endpoint Configuration

Запишите следующие URL-адреса

"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:5006"

Запуск Panel с общим SSO

panel serve my_pages.py --oauth-provider=generic

Вы должны увидеть логин keycloak

Panel - это удивительный инструмент. Возможность подключения к любому универсальному поставщику OAuth проста и должна обеспечивать его безопасный доступ.

Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу