Подключение к SSO

После установки основных параметров необходимо выставить переменные для подключения к SSO.

  • AUTH_METHOD — метод авторизации в SSO. Все параметры, связанные с AUTH_METHOD, обязательны. Варианты: azure, adfs, keycloak, openid, ldap, kerberos. Пример: AUTH_METHOD=azure

  • CONNECTOR_TYPE — метод получения списка пользователей. Все параметры, связанные с CONNECTOR_TYPE, обязательны. Варианты: ldap, keycloak, scim. Пример: CONNECTOR_TYPE=ldap

Авторизация

Callback URL

При настройке Callback URL в вашем SSO-провайдере укажите адрес Enterprise-сервиса с маршрутом /sso/cb.

Пример: https://ges-gram.ax/sso/cb

При AUTH_METHOD = azure

  • AZURE_AUTHORIZATION_URL — URL эндпоинта авторизации. Пример: https://login.microsoftonline.com/HohLpGvI.../oauth2/v2.0/authorize

  • AZURE_TOKEN_URL — URL эндпоинта для получения токена. Пример: https://login.microsoftonline.com/HohLpGvI.../oauth2/v2.0/token

  • AZURE_API_URL — URL эндпоинта получения информации по API. Пример: https://graph.microsoft.com/v1.0

  • AZURE_CLIENT_ID — идентификатор приложения в Azure. Пример: 0FYSAWm1A-1x4k-e14H-0LHe-gf6qwElcYuz

  • AZURE_CLIENT_SECRET — секрет приложения в Azure. Пример: rY3yh*suIebMk^k0KGoi3azsIBP&FY@odQsgFVdc

При AUTH_METHOD = adfs

  • ADFS_CERT — сертификат для аутентификации в ADFS.

  • ADFS_ENTRYPOINT — точка входа для аутентификации. Пример: https://adfs.gram.ax/adfs/ls/

  • ADFS_ISSUER — идентификатор ADFS. Пример: https://adfs.gram.ax/

  • ADFS_CALLBACK_URL — URL для обратного вызова после успешной аутентификации. Пример: https://app.gram.ax/auth/cb

При AUTH_METHOD = keycloak

  • KEYCLOAK_SERVER_URL — URL сервера Keycloak. Пример: https://keycloak.gram.ax/auth/

  • KEYCLOAK_REALM — имя Realm в Keycloak. Пример: gramax

  • KEYCLOAK_CLIENT_ID — идентификатор клиента Keycloak.

  • KEYCLOAK_USE_ACCESS_TOKEN_INFO — брать ли информацию о пользователе из access_token. Пример: KEYCLOAK_USE_ACCESS_TOKEN_INFO=true

При AUTH_METHOD = openid

  • OPEN_ID_SERVER_URL — URL сервера OpenID. Пример: https://keycloak.gram.ax/auth/

  • OPEN_ID_REALM — имя Realm в OpenID. Пример: gramax

  • OPEN_ID_CLIENT_ID — идентификатор клиента OpenID.

  • OPEN_ID_CLIENT_SECRET — секрет клиента OpenID.

При AUTH_METHOD = ldap

  • LDAP_URL — URL LDAP-сервера. Пример: ldap://ldap.example.com:389 или ldaps://ldap.example.com:636

  • LDAP_ADMIN_DN — DN административного пользователя с правами поиска. Пример: gramax@gramax.ru

  • LDAP_ADMIN_PASSWORD — пароль административного пользователя. Пример: secretAdminPass

  • LDAP_USER_SEARCH_BASE — DN базовой точки поиска пользователей. Пример: ou=users,dc=example,dc=com

  • LDAP_USERNAME_ATTRIBUTE — атрибут пользователя для поиска. Пример: samaccountname, cn, mail

  • LDAP_USER_DN — DN конкретного пользователя, если известен напрямую. Пример: OU=Enabled,OU=GRAMAX-USERS,DC=gramax,DC=local

  • LDAP_GROUP_SEARCH_BASE — DN базовой точки поиска групп. Пример: ou=groups,dc=example,dc=com

  • LDAP_GROUP_CLASS — класс объекта групповой записи. Пример: groupOfNames

  • LDAP_GROUP_MEMBER_ATTRIBUTE — атрибут в записи группы, содержащий членов группы. По умолчанию: member

  • LDAP_GROUP_MEMBER_USER_ATTRIBUTE — атрибут пользователя, сопоставляемый с LDAP_GROUP_MEMBER_ATTRIBUTE. По умолчанию: dn

  • LDAP_ALLOWED_GROUPS — необязательный список DN групп, участникам которых разрешен вход. Разделяйте несколько DN точкой с запятой. Для ограничения входа также задайте LDAP_GROUP_SEARCH_BASE и LDAP_GROUP_CLASS. Пример: LDAP_ALLOWED_GROUPS="CN=Gramax Users,OU=Groups,DC=example,DC=com;CN=Gramax Admins,OU=Groups,DC=example,DC=com"

  • LDAP_ATTRIBUTES — список атрибутов пользователя через запятую. Если не указано, возвращаются все. Пример: cn,sn,mail

Ограничение входа по LDAP-группам

LDAP_ALLOWED_GROUPS учитывает только прямое членство. Участие во вложенной группе не разрешает вход. Если переменная не задана или пуста, ограничение по группам не применяется.

При AUTH_METHOD = kerberos

  • KERBEROS_REALM — Kerberos realm (домен Active Directory). Должен быть в UPPERCASE. Пример: COMPANY.LOCAL

  • KERBEROS_ALLOWED_REALMS — необязательный список разрешенных realm пользователей через запятую. Если переменная не задана, разрешен только KERBEROS_REALM. Пример: COMPANY.LOCAL,TRUSTED.COMPANY.LOCAL

  • KERBEROS_SERVICE_PRINCIPAL — Service Principal Name (SPN). Формат: HTTP/hostname@REALM. Пример: HTTP/gramax.company.local@COMPANY.LOCAL

  • KRB5_KTNAME — переменная для Kerberos библиотеки. Формат: FILE:/путь/к/keytab. Пример: FILE:/opt/gramax/config/gramax.keytab

  • KERBEROS_REALM должен точно совпадать с доменом Active Directory в UPPERCASE

  • KERBEROS_SERVICE_PRINCIPAL должен совпадать с SPN, зарегистрированным в Active Directory

  • Путь в KRB5_KTNAME должен начинаться с префикса FILE:

  • Keytab-файл нужно подключить к контейнеру в режиме :ro и предоставить право чтения пользователю контейнера с UID 10001. Режим :ro запрещает запись, но не изменяет владельца и права файла. Рекомендуемые права: 400 для владельца UID 10001 или 440 для подходящей группы

Если вход через Kerberos не работает, используйте расшифровку диагностических логов GES, чтобы найти этап, на котором остановилась авторизация.

Список пользователей

При CONNECTOR_TYPE=ldap

  • LDAP_URL — URL LDAP-сервера. Пример: ldap://ldap.example.com:389 или ldaps://ldap.example.com:636

  • LDAP_ADMIN_DN — DN пользователя с правами поиска в каталоге. Пример: gramax@gramax.ru

  • LDAP_ADMIN_PASSWORD — пароль пользователя, указанного в LDAP_ADMIN_DN. Пример: secretAdminPass

  • LDAP_USER_SEARCH_BASE — DN базовой точки поиска пользователей. Пример: ou=users,dc=example,dc=com

  • LDAP_GROUP_CLASS — LDAP-класс объектов для поиска групп. Пример: group

  • LDAP_GROUP_SEARCH_BASE — DN базовой точки поиска групп. Пример: ou=groups,dc=example,dc=com

  • LDAP_SEARCH_GROUP_LIMIT — максимальное количество групп при поиске. Пример: 15

  • LDAP_OBJECT_TYPE_FILTER — фильтр типа объекта при поиске пользователей. По умолчанию: objectCategory=person

При CONNECTOR_TYPE=keycloak

  • KEYCLOAK_SERVER_URL — URL сервера Keycloak. Пример: https://keycloak.gram.ax/auth/

  • KEYCLOAK_REALM — имя Realm в Keycloak. Пример: gramax

  • KEYCLOAK_API_TOKEN — токен доступа.

При CONNECTOR_TYPE=scim

  • SCIM_SERVER_URL — URL сервера SCIM. Пример: https://scim.gram.ax/auth/

  • SCIM_TOKEN — токен доступа (используется вместо SCIM_ADMIN_LOGIN + SCIM_ADMIN_PASSWORD).

  • SCIM_GET_USERS_FILTER — фильтр для поиска пользователей. По умолчанию: userName co "${searchSubstring}"

  • SCIM_ADMIN_LOGIN — username при Basic-авторизации (вместо SCIM_TOKEN).

  • SCIM_ADMIN_PASSWORD — password при Basic-авторизации (вместо SCIM_TOKEN).