
oAuth Keycloak + Seafile
OAuth — открытый протокол авторизации, который позволяет предоставить третьей стороне ограниченный доступ к защищённым ресурсам пользователя без необходимости передавать ей логин и пароль.
- Установка Keycloak была рассмотрена в одной из предыдущих статей.
- Установка Seaflie так же была рассмотрена в одной из предыдущих статей.
- Настройка User federation Keycloak c MS Active Directory так же была рассмотрена в одной из предыдущих статей
- Настройка User federation Keycloak c FreeIPA так же была рассмотрена в одной из предыдущих статей
Настройка 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
$ 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