Пост

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

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

  • Список статей из категории Keycloak

  • Список статей из категории Seafile

Настройка Keycloak

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

Create client

Настройки

1
2
3
4
5
6
7
8
General Settings
Client type: OpenID Connect
Client ID: seafile #Понадобится для дальнейшей настройки Seafile

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

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

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

Client secret

1
2
3
4
5
6
7
8
Вкладка 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ 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

1
$ sudo systemctl restart seafile seahub

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

Единая точка входа

Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.