Конфигурация SSO c AD FS
Перед настройкой SSO убедитесь, что в config.env параметр APP_URL соответствует текущему домену Пассворка, пример — APP_URL=https://passwork.example.ru
Для примера используются следующие имена серверов:
- Провайдер (IDP) — ad-fs.passwork.local
- Сервер Пассворка (SP) — passwork.example.ru
Добавление отношения доверия проверящей стороны
Открыть — Диспетчер серверов → Средства → Управление AD FS → Отношения доверия проверяющей стороны → Действия:

Поэтапно выполнить действия в — Мастер добавления отношений доверия проверяющей стороны:
- Поддерживающие утверждения;
- Ввод данных о проверяющей стороне вручную;
- Заполнить Отображаемое имя (пример: passwork-sp);
- Пропустить шаг — Настройка сертификата, нажать Далее;
- На шаге Настройка URL-адреса:
- Включить поддержку протокола SAML 2.0 WebSSO;
- Скопировать из Пассворка в — Настройки и пользователи → Настройки SSO — адрес URL ответа;
- Поместить в URL-адрес службы SAML 2.0 SSO проверяющей стороны — https://passwork.example.ru/api/v1/sso/acs
- На шаге Настройка идентификатора:
- Скопировать из Пассворка в — Настройки и пользователи → Настройки SSO — адрес Идентификатора;
- Поместить в Идентификатор отношения доверия проверяющей стороны — https://passwork.example.ru/api/v1/sso/metadata
- Пропустить шаг — Выбрать политику управления доступом, нажать Далее;
- Пропустить шаг — Готовность для добавления отношения доверия, нажать Далее;
Пример вывода созданного доверия в PowerShell
- PowerShell
Get-ADFSRelyingPartyTrust -Name "passwork-sp" # Команда для вывода
AllowedAuthenticationClassReferences : {}
EncryptionCertificateRevocationCheck : CheckChainExcludeRoot
PublishedThroughProxy : False
SigningCertificateRevocationCheck : CheckChainExcludeRoot
WSFedEndpoint :
AdditionalWSFedEndpoint : {}
ClaimsProviderName : {}
ClaimsAccepted : {}
EncryptClaims : True
Enabled : True
EncryptionCertificate :
Identifier : {https://passwork.example.ru/api/v1/sso/metadata}
NotBeforeSkew : 0
EnableJWT : False
AlwaysRequireAuthentication : False
Notes :
OrganizationInfo :
ObjectIdentifier : 03363cb7-5eef-ef11-b8b3-000c2993a976
ProxyEndpointMappings : {}
ProxyTrustedEndpoints : {}
ProtocolProfile : WsFed-SAML
RequestSigningCertificate : {}
EncryptedNameIdRequired : False
SignedSamlRequestsRequired : False
SamlEndpoints : {Microsoft.IdentityServer.Management.Resources.SamlEndpoint}
SamlResponseSignature : AssertionOnly
SignatureAlgorithm : http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
TokenLifetime : 0
AllowedClientTypes : Public, Confidential
IssueOAuthRefreshTokensTo : AllDevices
RefreshTokenProtectionEnabled : True
RequestMFAFromClaimsProviders : False
ScopeGroupId :
ScopeGroupIdentifier :
DeviceAuthenticationMethod :
Name : passwork-sp
AutoUpdateEnabled : False
MonitoringEnabled : False
MetadataUrl :
ConflictWithPublishedPolicy : False
IssuanceAuthorizationRules :
IssuanceTransformRules :
DelegationAuthorizationRules :
LastPublishedPolicyCheckSuccessful :
LastUpdateTime : 01.01.1900 5:00:00
LastMonitoredTime : 01.01.1900 5:00:00
ImpersonationAuthorizationRules :
AdditionalAuthenticationRules :
AccessControlPolicyName : Permit everyone
AccessControlPolicyParameters :
ResultantPolicy : RequireFreshAuthentication:False
IssuanceAuthorizationRules:
{
Permit everyone
}
Get-ADFSRelyingPartyTrust -Name "passwork-sp" | Select-Object -ExpandProperty SamlEndpoints # Команда для вывода
Binding : POST
BindingUri : urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
Index : 0
IsDefault : False
Location : https://passwork.example.ru/api/v1/sso/acs
Protocol : SAMLAssertionConsumer
ResponseLocation :
Открыть Свойства созданного Отношения доверия проверяющей стороны:

В Свойствах перейти в Конечные точки и выполнить следующие действия:
- Добавить SAML;
- Тип конечной точки — Завершение сеанса SAML;
- Привязка — Redirect;
- Скопировать из Пассворка в — Настройки и пользователи → Настройки SSO — адрес URL выхода;
- Поместить в Доверенный URL-адрес — https://passwork.example.ru/api/v1/sso/sls
- Применить изменения и закрыть Свойства.
Настройка правил обработки запросов от SP (Пассворка) в IDP (AD FS)
В зависимости от нужного вида логина пользователя в Пассворке, вы можете настроить правила обработки так, чтобы формат пользователя мог быть следующим:
- username
- username@passwork.local
Пожалуйста, выберите необходимый формат логина пользователя в Пассворке и выполните настройку.
В Отношения доверия проверяющей стороны встать на созданное доверие (passwork-sp) и открыть — Изменить политику подачи запросов:

Настройка правил обработки для username@passwork.local формата
Выполнить следующие действия:
- Добавить правило;
- Отправка атрибутов LDAP как утверждений;
- Имя правила утверждения — AttributeStatement;
- Хранилище атрибутов — Active Directory;
- Атрибут LDAP — User-Principal-Name;
- Тип исходящего утверждения — UPN.

Выполнить следующие действия:
- Добавить правило;
- Преобразование входящего утверждения;
- Имя правила утверждения — Name ID Format;
- Тип входящего утвеждения — UPN;
- Тип исходящего утверждения — Name ID;
- Формат ИД исходящего имени — Временный идентификатор.

Настройка правил обработки для username формата
Выполнить следующие действия:
- Добавить правило;
- Отправка атрибутов LDAP как утверждений;
- Имя правила утверждения — AttributeStatement;
- Хранилище атрибутов — Active Directory;
- Атрибут LDAP — SAM-Account-Name;
- Тип исходящего утверждения — E-Mail Address;

Выполнить следующие действия:
- Добавить правило;
- Преобразование входящего утверждения;
- Имя правила утверждения — Name ID Format;
- Тип входящего утвеждения — E-Mail Address;
- Тип исходящего утверждения — Name ID;
- Формат ИД исходящего имени — Временный идентификатор.

Настройка правил обработки дополнительных атрибутов для передачи в SP
Отредактировать созданное правило с именем AttributeStatement:
- Передавать в SP (Пассворк) Display-Name атрибут:
- Атрибут LDAP — Display-Name;
- Тип исходящего утверждения — прописать displayName;
- Передавать в SP (Пассворк) E-mail-Address атрибут:
- Атрибут LDAP — E-Mail-Addresses;
- Тип исходящего утверждения — прописать emailAddress;
