## Установка Authentik Основан на [https://docs.goauthentik.io/docs/installation/docker-compose](https://docs.goauthentik.io/docs/installation/docker-compose) #### Параметры переменных в файле .env ``` AUTHENTIK_TAG # 2024.2.2 PG_PASS # пароль для PostgreSQL. Например: $(pwgen -s 40 1) или $(openssl rand -base64 40) AUTHENTIK_SECRET_KEY # ключ для Authentik. Например: $(pwgen -s 50 1) или $(openssl rand -base64 50) COMPOSE_PORT_HTTP # 80 COMPOSE_PORT_HTTPS # 443 COMPOSE_PORT_LDAP # 3389 # Настройка сервера SMTP для отправки сообщений AUTHENTIK_EMAIL__HOST # имя почтового сервера. Например: mail.example.com AUTHENTIK_EMAIL__PORT # порт почтового сервера. Например: 25 AUTHENTIK_EMAIL__USERNAME # учетная запись AUTHENTIK_EMAIL__PASSWORD # пароль AUTHENTIK_EMAIL__USE_TLS # использовать StartTLS. Например: false AUTHENTIK_EMAIL__USE_SSL # использовать SSL. Например: false AUTHENTIK_EMAIL__TIMEOUT # время ожидания сервера. Например: 10 AUTHENTIK_EMAIL__FROM # отправдлять от имени. Например: authentik@example.com ``` #### Запуск ``` git clone https://git.badms.ru/bms/authentik.git cd authentik # Предварительно отредактировать переменные docker compose up -d ``` #### После запуска Перейти по ссылке для первоначальной конфигруации: `https://auth.example.com/if/flow/initial-setup/` ## Настройка Authentik провайдера LLDAP для ONLYOFFICE [LLDAP authentik example](https://github.com/lldap/lldap/blob/main/example_configs/authentik.md) --- ### Создание связей свойст `Customization` > `Property Mappings` > `Create` **Name:** LDAP-email **Object field:** attributes.email **Expression:** return list_flatten(ldap.get('mail')) **Name:** LDAP-givenname **Object field:** attributes.givenname **Expression:** return list_flatten(ldap.get('givenname')) **Name:** SAML-mail **SAML Attribute Name:** mail **Friendly Name:** mail **Expression:** return user.attributes.get("email") **Name:** SAML-givenName **SAML Attribute Name:** givenName **Friendly Name:** name **Expression:** return user.attributes.get("givenname") **Name:** SAML-sn **SAML Attribute Name:** sn **Friendly Name:** surename **Expression:** return user.attributes.get("sn") --- ### Создание провайдера `Applications` > `Providers` > `Create` > `SAML Provider` **Name:** Provider for ONLYOFFICE **Authentication flow:** --- **Authorization flow:** default-provider-authorization-implicit-consent (Authorize Application) #### Protocol settings: **ACS URL:** https://office.example.com/sso/acs **Issuer:** https://office.example.com/sso/metadata **Service Provider Binding:** Post **Audience:** Audience #### Advanced protocol settings: **Signing Certificate:** authentik Self-signed Certificate **Verification Certificate:** --- **Property mappings:** - SAML-mail - SAML-givenName - SAML-sn **NameID Property Mapping:** --- **Assertion valid not before:** minutes=-5 **Assertion valid not on or after:** minutes=5 **Session valid not on or after:** minutes=86400 **Default relay state:** --- **Digest algorithm:** SHA256 **Signature algorithm:** SHA256 --- ### Создание приложения `Applications` > `Applications` > `Create` **Name:** onlyoffice **Slug:** onlyoffice **Group:** --- **Provider:** Provider for ONLYOFFICE **Backchannel Providers:** --- **Policy engine mode:** any #### UI settings: **Launch URL:** --- **Icon:** --- **Publisher:** --- **Description:** --- #### Добавление пользователей и групп `Applications` > `Applications` > `onlyoffice`> `Policy/Group/User Bindings` > `Bind existing policy` --- ### Создание соединение с LLDAP `Directory` > `Federation and Social login` > `Create` **Name:** LLDAP-example.com **slug:** lldap_example-com - [X] Enable - [X] Sync users - [ ] User password writeback - [X] Sync groups #### Connection settings: **Server URI:** ldap://ldap.example.com - [ ] Enable StartTLS - [ ] Use Server URI for SNI verification **TLS Verification Certificate:** --- **TLS Client authentication certificate:** --- **Bind CN:** uid=auth,ou=people,dc=example,dc=com **Bind Password:** **Base DN:** dc=example,dc=com #### LDAP Attribute mapping: **User Property Mappings:** - authentik default LDAP Mapping: mail - authentik default Active Directory Mapping: sn - authentik default OpenLDAP Mapping: cn - authentik default OpenLDAP Mapping: uid - LDAP-email - LDAP-givenname **Group Property Mappings:** - authentik default OpenLDAP Mapping: cn #### Additional settings: **Group:** --- **User path:** LDAP/users **Addition User DN:** ou=people **Addition Group DN:** ou=groups **User object filter:** (objectClass=person) **Group object filter:** (objectClass=groupOfUniqueNames) **Group membership field:** member **Object uniqueness field:** uid --- ### Настройка ONLYOFFICE **Сохранить XML файл из `Authentik`:** `Applications` > `Providers` > `Provider for ONLYOFFICE` > `Copy download URL` **Загрузить полученный файл в `ONLYOFFICE`:** `Настройки` > `Интеграция` > `Единый вход` - [X] Включить аутентификацию с помощью технологии единого входа #### Настройки поставщика сервиса: `Выбрать файл` загруженный ранее XML **Пользовательская надпись для кнопки входа:** Single Sign-on **Идентификатор сущности поставщика учетных данных записей:** https://office.example.com/sso/metadata **URL-адрес конечной точки единого входа idP:** Привязка: POST - https://auth.example.com/application/saml/onlyoffice/sso/binding/post/ **URL-адрес конечной точки единого выхода idP:** Привязка: POST - https://auth.example.com/application/saml/onlyoffice/slo/binding/post/ **Формат NameID:** urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress #### Открытые сертификаты поставщика учетных записей: **Добавить сертификат:** authentik Self-signed Certificate - [X] Проверять подпись ответов аутентификации - [X] Проверять подпись запросов выхода - [ ] Проверять подпись ответов выхода **Стандартный алгоритм проверки подписи:** rsa-sha1 #### Сертификаты поставщика сервиса: #### Сопоставление аттрибутов: **Имя:** givenName **Фамилия:** sn **Email:** mail