Общие сведения

Polymatica Dashboards TN поддерживает провайдинг аутентификации через протокол OIDC посредством провайдера СИА (Avanpost FAM).

Аутентификация осуществляется по следующему алгоритму:

  1. Пользователь вводит свой логин и пароль в провайдере СИА (Avanpost FAM),
  2. Polymatica забирает из СИА (Avanpost FAM) токен claims, из которого извлекаются логин, ФИО пользователя, список его групп и ролей.
  3. При выходе из приложения осуществляется выход и из Avanpost FAM.

Параметры конфигурации метода

Метод аутентификации СИА (Avanpost FAM) конфигурируется следующими параметрами в файлах /srv/platform/docker-compose.yml (для Docker-установки) и /etc/polymatica/platform/manager/config.json (для пакетной установки):

Docker-установкаПакетная установкаОписание параметра
POLYMATICA_CORE_OIDC_AUTH_METHOD_ACTIVE
{
    "oidc": {
        "auth_method_active": true/false,
    }
}
Доступность метода аутентификация OIDC
POLYMATICA_CORE_OIDC_PROVIDER_NAME
{
    "oidc": {
        "provider_name": "",
    }
}
Произвольное имя провайдера
POLYMATICA_CORE_OIDC_PROVIDER_ISSUER
{
    "oidc": {
        "provider_issuer": "",
    }
}
Провайдер-поставщик аутентификации
POLYMATICA_CORE_OIDC_PROVIDER_REDIRECT_URL
{
    "oidc": {
        "provider_redirect_url": "",
    }
}
Адрес переадресации после аутентификации в провайдере
POLYMATICA_CORE_OIDC_PROVIDER_CLIENT_ID
{
    "oidc": {
        "provider_client_id": "",
    }
}
Client ID, указываемый в провайдере для приложения
POLYMATICA_CORE_OIDC_PROVIDER_CLIENT_SECRET
{
    "oidc": {
        "provider_client_secret": "",
    }
}
Client secret, выдаваемый провайдером 
POLYMATICA_CORE_OIDC_PROVIDER_SCOPE
{
    "oidc": {
        "provider_scope": "",
    }
}
Scope, запрашиваемый у провайдера
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_PREFERRED_USERNAME_KEY
{
    "oidc": {
        "provider_claims": {
            "preferred_username_key": "",
        }
    }
}
Ключ claims, по которому будет определено значение username пользователя в Polymatica
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_EMAIL_KEY
{
    "oidc": {
        "provider_claims": {
            "email_key": "",
        }
    }
}
Ключ claims, по которому будет определено значение email пользователя в Polymatica
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_FIRST_NAME_KEY
{
    "oidc": {
        "provider_claims": {
            "first_name_key": "",
        }
    }
}
Ключ claims, по которому будет определено значение "Имя пользователя" в Polymatica
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_LAST_NAME_KEY
{
    "oidc": {
        "provider_claims": {
            "last_name_key": "",
        }
    }
}
Ключ claims, по которому будет определено значение "Фамилия пользователя" в Polymatica
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_MIDDLE_NAME_KEY
{
    "oidc": {
        "provider_claims": {
            "middle_name_key": "",
        }
    }
}
Ключ claims, по которому будет определено значение "Отчество пользователя" в Polymatica
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_GROUP_KEY
{
    "oidc": {
        "provider_claims": {
            "group_key": "",
        }
    }
}
Ключ claims, из которого будут добавляться группы пользователя
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_ROLE_KEY
{
    "oidc": {
        "provider_claims": {
            "role_key": "",
        }
    }
}
Ключ claims, из которого будут добавляться роли пользователя
POLYMATICA_CORE_OIDC_PROVIDER_GROUPS_WHITELIST
{
    "oidc": {
        "provider_groups_whitelist": ""
}

Список групп, которым разрешён вход в приложение - массив строк через запятую


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


Примеры конфигураций


POLYMATICA_CORE_OIDC_AUTH_METHOD_ACTIVE=true
POLYMATICA_CORE_OIDC_PROVIDER_NAME=avanpost
POLYMATICA_CORE_OIDC_PROVIDER_ISSUER=https://avanpost.example.ru/auth/realms/docs-realm
POLYMATICA_CORE_OIDC_PROVIDER_REDIRECT_URL=https://polymatica.example.ru/auth/oidc-callback
POLYMATICA_CORE_OIDC_PROVIDER_CLIENT_ID=polymatica
POLYMATICA_CORE_OIDC_PROVIDER_CLIENT_SECRET=jmMEby8L9Jo0TNweolgSiLaXR4AEGNna
POLYMATICA_CORE_OIDC_PROVIDER_SCOPE=openid email profile
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_PREFERRED_USERNAME_KEY=preferred_username
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_EMAIL_KEY=email
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_FIRST_NAME_KEY=first_name
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_LAST_NAME_KEY=last_name
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_MIDDLE_NAME_KEY=middle_name
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_GROUP_KEY=sia_groups
POLYMATICA_CORE_OIDC_PROVIDER_CLAIMS_ROLE_KEY=sia_role
POLYMATICA_CORE_OIDC_PROVIDER_GROUPS_WHITELIST=group1,group2,group3
{
   "auth": {
	    "oidc": {
        	"auth_method_active": true,
         	"provider_name": "avanpost", 
       	    "provider_issuer": "https://avanpost.example.ru/auth/realms/docs-realm",
		    "provider_redirect_url": "https://polymatica.example.ru/auth/oidc-callback", 
            "provider_client_id": "polymatica",	
        	"provider_client_id": "polymatica",
            "provider_client_secret": "jmMEby8L9Jo0TNweolgSiLaXR4AEGNna",
		    "provider_scope": "openid email profile",
            "provider_claims": {
            	"preferred_username_key": "preferred_username",
			    "email_key": "email",
			    "first_name_key": "first_name",
                "last_name_key": "last_name",
			    "middle_name_key": "middle_name",
				"group_key": "sia_groups",
			    "role_key": "sia_role",
	        }
		    "provider_groups_whitelist": "group1,group2,group3"
      }
}

После внесения изменений в файл конфигурации необходимо перезапустить Polymatica Dashboards.



Настройка входа через СИА в окне авторизации

Для того чтобы осуществлять вход через СИА (Avanpost FAM), необходимо создать тему оформления системы (или отредактировать существующую пользовательскую тему системы), добавив следующий код JavaScript:

const observeUrlChange = () => {

  const body = document.querySelector('body');
  const observer = new MutationObserver(mutations => {
    if (document.location.href.includes('auth')) {

      const interval = setInterval(()=>{
          const tab = document.querySelector('sl-tab[panel="openIDConnect"]')

	      if(tab){
            clearInterval(interval)
            document.querySelector('sl-tab[panel="openIDConnect"]').textContent = 'СИА'
          }
      
      })
    }
  });
  observer.observe(body, { childList: true, subtree: true });
};

window.onload = observeUrlChange;

Сохраните тему и примените ее. В окне авторизации появится вкладка "СИА", при нажатии на которую будет выполняться автоматическая переадресация в СИА (Avanpost FAM).


О создании и применении тем см. Polymatica Dashboards TN - Руководство пользователя - "Настройки" - "Оформление".