Конфигурация SSO с Microsoft Entra ID (Azure AD)
Перед настройкой SSO убедитесь, что в config.env параметр APP_URL соответствует текущему домену Пассворка, пример — APP_URL=https://passwork.example.ru
Для примера используется следующий сервер Пассворка — passwork.example.ru
Добавление отношения доверия проверящей стороны
Авторизоваться в Microsoft Entra ID и перейти в — Корпоративные приложения:

Открыть — Управление → Все приложения и создать Новое приложение:

В Обзор коллекции Microsoft Entra выбрать — Создать собственное приложение:

Выполнить следующие действия:
- Заполнить Отображаемое имя (пример: passwork-sp);
- Что вы хотите сделать... — Интеграция с любыми другими приложениями, которых нет в коллекции (вне коллекции).

После создания перейти в Управление → Единый вход и открыть SAML:

Открыть Базовая конфигурация SAML, нажать на Изменить.
Авторизоваться в веб-интерфейсе Пассворка и перейти в Настройки и пользователи → Настройки SSO, скопировать адреса конечных точек аутентификации из SP (Пассворка) в IDP (Microsoft Entra ID):
- Идентификатор (сущности) — https://passwork.example.ru/api/v1/sso/metadata
- URL-адрес ответа — https://passwork.example.ru/api/v1/sso/acs
- URL-адрес для выхода — https://passwork.example.ru/api/v1/sso/sls
Пример заполненных конечных точек аутентификации из SP:

Настройка правил обработки запросов от SP (Пассворка) в IDP (Microsoft Entra ID)
В зависимости от нужного вида логина пользователя в Пассворке, вы можете настроить правила обработки так, чтобы формат пользователя мог быть следующим:
- username
- username@passwork.local
Пожалуйста, выберите необходимый формат логина пользователя в Пассворке и выполните настройку.
В Настройке единого входа с помощью SAML открыть — Атрибуты и утверждения:

Настройка правил обработки для username@passwork.local
формата
По умолчанию после создания приложения в Microsoft Entra ID формат пользователя после аутентификации в Пассворке формируется username@passwork.local.
Дополнительных изменений производить не нужно. Пример созданного утверждения по умолчанию:

Настройка правил обработки для username формата
Открыть Уникальный идентификатор пользователя (ID) и выполнить следующие изменения:
- Источник — Преобразование;
- Преобразование — ExtractMailPrefix();
- Параметр 1 — Атрибут;
- Имя атрибута — user.userprincipalname.

Сохранить изменения и перейти в Атрибуты и утверждения.
Настройка правил обработки дополнительных атрибутов для передачи в SP
Перейти в Атрибуты и утверждения и Добавить новое утверждение:
- Добавление нового дополнительного утверждения для displayName:
- Имя — displayName;
- Источник — Атрибут;
- Атрибут источника — user.displayname;
- Сохранить созданное дополнительное утверждение.

- Добавление нового дополнительного утверждения для emailAddress:
- Имя — emailAddress;
- Источник — Атрибут;
- Атрибут источника — user.mail;
- Сохранить созданное дополнительное утверждение.

Настройка и заполнение параметров единого входа (SSO) в Пассворке
Заполнение значений «Атрибуты пользователя»
Авторизоваться в веб-интерфейсе Пассворка, перейти в — Настройки и пользователи → Настройки SSO и заполнить атрибуты сопоставления:
- Атрибут электронной почты — emailAddress;
- Атрибут полного имени — displayName.
Заполнение значений «Поставщик удостоверений → Пассворк»
В Настройке единого входа с помощью SAML → Настройка passwork-sp скопировать адреса конечных точек аутентификации:

Открыть — Настройки и пользователи → Настройки SSO и заполнить значения:
- Идентификатор (Entity ID) — https://sts.windows.net/ba50022d-xxxx-xxxx-xxxx-1145c6c9ed97/
- Url-адрес входа — https://login.microsoftonline.com/ba50022d-xxxx-xxxx-xxxx-1145c6c9ed97/saml2
- Url-адрес выхода — https://login.microsoftonline.com/ba50022d-xxxx-xxxx-xxxx-1145c6c9ed97/saml2
Заполнение значения «Сертификат»
В Настройке единого входа с помощью SAML → Сертификаты SAML получить SSL сертификат в base64 формате:

Полученный SSL сертификат открыть с помощью Блокнота, скопировать и поместить в соответствующее поле — Настройки и пользователи → Настройки SSO.
Пример экспортированного ключа в base64 формате
- base64
-----BEGIN CERTIFICATE-----
MIIE5DCCAsygAwIBAgIQM/9SlLjzJLBHaSgQVsIEPzANBgkqhkiG9w0BAQsFADAu
MSwwKgYDVQQDEyNBREZTIFNpZ25pbmcgLSBhZC1mcy5wYXNzd29yay5sb2NhbDAe
Fw0yNTAyMTkyMDA3MjFaFw0yNjAyMTkyMDA3MjFaMC4xLDAqBgNVBAMTI0FERlMg
U2lnbmluZyAtIGFkLWZzLnBhc3N3b3JrLmxvY2FsMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEAs6isogLhwqdncR1tYqKgS+Dwmi3DOIMfDpQNgaD/S5Vd
FngFsZ048zfYqJAn9Ypnu8UCTftoKJ2BQzRPoqaT2lpaAivyTDLKBMmbaAyOHoQH
RAd6NQazUYcbW2vMWwA4sa8hTDwwwZPOFhx3AR5EbW4IQo0sHWHOYCIWmH0td9+4
Lqiy7VkHT3fcUCuDL+kopjnsvdJLvbpg7ZPFkYLgy/ANP9+90yt/L1/Mj682bV3b
HgaPbAOzaG7qS6pA94wPmKYLnNf2C89vSfBaA+KjfWjhK5YMPbWLUxolNX7zz6bx
BQKdU/W7pTQIIIffy0rLNwWyaQbKKh77C9OKWLE3k54OhNAyJHXF332CK7psPSVT
fRDqagYGZQF/EhPQG7kMPpr6IiZ76v9FmZz59ruYaLA9f0YYK2NpiLdY1EHLdm19
H+72T/ZFEOLKExr+BbEOcQAlnqGXSs0YdrWTwMEBCqnrPiS4153298VEqKto1sUz
hqnBookmLgUymqApN50KIffezRK/ghfoxBY16EzlYAyVyWqaAB5WEAbCgdB2p9RN
KZHeYz3iB/cQzps1DYsZhZJ9SLS0yr8aQgYMl0PyKS7ajPR9GlGSKKz/7Q6POOtY
jz7qLcBgApacUJfOqUr2OcPzU/TsvRyHhPNzW41hIEjGWBVJ6WlpUFQYJxp5rxkC
AwEAATANBgkqhkiG9w0BAQsFAAOCAgEAbKOjd7u1qnVfL4HsVNSCSUTqXI4knvxI
NKQxZWCpkdCxPzpJdtMPsGukZQAblEcgQPX+v94F32BA2bk8cgp08ra2OrXEXR7r
XCCm3BvUAsI6nmbzKHPm6y/3awadOu59k8qE1c+DRSrHHM9927Z4QWMKYLfKEQL4
4WBYbw/jgqs7HqMbxrdfCtNdQzGKcE+sVaT9OnDp86TopHbsndRUyXqfqkB/LSbq
cstg/cC1b9xJ+FI3xUXEl/33e9/p8ovFko5slW5kU6qET9cg6GA0OreIb+8FbbiV
LOll4aIsn44/wQ6mu3biw77l1TpoUQpf11G9fpuOV10WRttOtk4IsryMhsbrGa/R
RZMbWH2MgkLs1VlcigrUE6kMIkU743d8oyLQb7N4+O+h56YLIuWWXUMM1FNNCIov
tVutUBpSO6OgTUo5tcD9uqaD5R1+rf5A68yUslMgU+4mE9hdY/143bZMDPexKcUt
jfZOI9v4ppmoFgeWZDYMtxU40OkYZh/grnxw9aoZEPLfr8Vnf+LhGvhEFWKvvwdv
J7n49c1WxZxK7rDaSwKeydgLC1bySFQoiYkOucfO+NcdBi6R44cXBrWk1EESLuCq
X2LLIS2NoKg8pX2BPqPcTuZGclEivpg0rrovksNj3L3BRtFO3jWooqxxOfVUbk8h
uFmSLzpAW1I=
-----END CERTIFICATE-----
Заполнение значения «Дополнительные настройки»
В нас тоящий момент в Пассворке не предусмотрен алгоритм обработки дополнительной идентификации при SSO интеграции, включая разные виды биометрии.
В случае ошибки идентификации в результате обмена с iDP (Microsoft Entra ID) необходимо поместить в JSON формате следующее содержимое:
- json
{
"security": {
"requestedAuthnContext": false
}
}
Открыть окно авторизации в веб-интерфейсе Пассворка и выполнить вход через SSO для проверки корректной настройки:
