Site icon IT Draft

Настройка oAuth авторизации через Keycloak в Seafile

Настройка oAuth авторизации через Keycloak в Seafile 1

oAuth Keycloak + Seafile

OAuth — открытый протокол авторизации, который позволяет предоставить третьей стороне ограниченный доступ к защищённым ресурсам пользователя без необходимости передавать ей логин и пароль.

Настройка Keycloak

Настроим клиента в Keycloak: переходим в раздел Clients и создаем нового клиента (Create client)

General Settings
Client type: OpenID Connect
Client ID: seafile #Понадобится для дальнейшей настройки SeaFile

Capability config
Client authentication: On
Authentication flow: Standard flow
, Direct access grants

Сохраняем, переходим в настройки клиента seafile

Вкладка Settings:
Root URL: http://seafile.itdraft.ru
Valid redirect URIs: http://seafile.itdraft.ru/*
    /oauth/callback/

Вкладка Credentials
Client Authenticator: Client Id and Secret
Client secret: ... #Понадобится для дальнейшей настройки SeaFile

Настройка Keycloak завершена

Настройка SeaFile

Отредактируем конфигурационный файл seahub_settings.py

Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров

Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.


$ sudo nano /opt/seafile/conf/seahub_settings.py
...
# Keycloak
ENABLE_OAUTH = True
OAUTH_ENABLE_INSECURE_TRANSPORT = True

OAUTH_CLIENT_ID = "seafile" #Client ID из вкладки Settings в Keycloak
OAUTH_CLIENT_SECRET = "pass" #Ключ из вкладки Credentials в Keycloak
OAUTH_REDIRECT_URL = 'http://seafile.itdraft.ru/oauth/callback/'

OAUTH_PROVIDER_DOMAIN   = 'seafile.gge.ext'
OAUTH_AUTHORIZATION_URL = 'https://keycloak.itraft.ru:8443/realms/myrealm/protocol/openid-connect/auth'
OAUTH_TOKEN_URL         = 'https://keycloak.itraft.ru:8443/realms/myrealm/protocol/openid-connect/token'
OAUTH_USER_INFO_URL     = 'https://keycloak.itraft.ru:8443/realms/myrealm/protocol/openid-connect/userinfo'
OAUTH_SCOPE = ["profile", "email"]
OAUTH_ATTRIBUTE_MAP = {
    "id":    (False, "not used"),
    "name":  (False, "name"),
    "email": (True, "email"),
}

Перезапускаем Seafile

$ sudo systemctl restart seafile seahub

В web-интерфейсе должна появиться ссылка “Единая точка входа”, при нажатии на которую нас перебросит в интерфейс авторизации Keycloak

Exit mobile version