Администрирование
Настройки SSO
Конфигурация SSO c Keycloak
15мин
перед настройкой sso убедитесь, что в config env параметр app url соответствует текущему домену пассворка, пример — app url=https //passwork example com это нужно, чтобы idp смог скачать metadata также сервер пассворка должен работать по https протоколу для примера используются следующие имена серверов провайдер (idp) — keycloack passwork local сервер пассворка (sp) — passwork example com создание приложения с помощью импорта файла в keycloack получить и отредактировать файл для создания приложения с стороны idp https //archbee doc uploads s3 amazonaws com/w jxazppyuprqlll6w3gi p8dupj3g05u1ng3e6ojgj 20250218 112103 json json "clientid" "https //your host/api/v1/sso/metadata", "adminurl" "https //your host/api/v1/sso/acs", "baseurl" "https //your host/ ", "saml logout url" "https //your host/api/v1/sso/sls" открыть веб интерфейс keycloack и перейти в — clients → import client выполнить следующие действия импортировать изменённый файл приложения; задать имя создаваемого приложения; отключить — encrypt assertions ; отключить — client signature required сохранить внесённые изменения при необходимо можно изменить уникальный идентификатор пользователя (nameid) внутри saml assertion после сохранения предыдущих действий рекомендуем указывать username или email , в зависимости от выбранного значения логин пользователя в пассворке может иметь следующие форматы username username\@passwork local настройка передачи ролей пользователя в saml assertion перейти и создать общий набор настроек для приложения (sp) — client scopes → create client scope выполнить следующие действия задать имя; type — default ; protocol — saml открыть вкладку mappers и создать утверждение атрибутов для передачи дополнительных атрибутов пользователя из keycloak (idp) в пассворк (sp) добавление утверждения для передачи email add predefined mapper → x500 email ; открыть добавленное утверждение из шаблона и изменить saml attribute name — email ; saml attribute nameformat — basic добавление утверждения для передачи firstname add mapper → from predefined mappers → x500 surname ; открыть добавленное утверждение из шаблона и изменить property — firstname ; saml attribute name — firstname ; saml attribute nameformat — basic назначить на созданное приложение (sp) созданный набор настроек (client scope) — clients → пассворк → перейти на вкладку client scopes → add client scope выбрать из списка созданный набор passwork client scope с assigned type — default настройка и заполнение параметров единого входа (sso) в пассворке заполнение значений « атрибуты пользователя » авторизоваться в веб интерфейсе пассворка, перейти в — настройки и пользователи → настройки sso и заполнить атрибуты сопоставления атрибут электронной почты — email ; атрибут полного имени — firstname заполнение значений «поставщик удостоверений → пассворк» открыть конфигурацию поставщика услуг (idp) — realm settings → general → endpoints скопировать следующие значения параметров xml entityid="https //keycloack passwork local/realms/master" \<md\ singlelogoutservice location="https //keycloack passwork local/realms/master/protocol/saml"/> \<md\ singlesignonservice location="https //keycloack passwork local/realms/master/protocol/saml"/> пример xml вывода открыть — настройки и пользователи → настройки sso и заполнить значения идентификатор (entity id) — https //keycloack passwork local/realms/master url адрес входа — https //keycloack passwork local/realms/master/protocol/saml url адрес выхода — https //keycloack passwork local/realms/master/protocol/saml заполнение значения «сертификат» открыть и скопировать сгенерированный ssl сертификат в base64 формате — realm settings → keys → certificate скопированный ssl сертификат поместить в соответствующее поле — настройки и пользователи → настройки sso открыть окно авторизации в веб интерфейсе пассворка и выполнить вход через sso для проверки корректной настройки возможные ошибки в случае возникновения ошибок, они будут помещены в лог php ответ от sso не может быть корректно расшифрован, так как неправильно скопирован отпечаток сертификата или это отпечаток неверного сертификата onelogin saml2 error invalid response lasterrorreason signature validation failed saml response rejected in /var/www/app/modules/admin/sso/ssocontroller php 78\nstack trace \n#0 \[internal function] passwork\\\modules\\\admin\\\sso\\\ssocontroller >acsaction()\n#1 \[internal function] phalcon\\\dispatcher\\\abstractdispatcher >callactionmethod()\n#2 \[internal function]\ phalcon\\\dispatcher\\\abstractdispatcher >dispatch()\n#3 /var/www/public/index php(91) phalcon\\\mvc\\\application >handle()\n#4 {main} неправильно указано текущее значение хоста в параметре app url файла config env onelogin saml2 error invalid array settings sp acs url invalid, sp sls url invalid in /var/www/app/vendors/php saml/lib/saml2/settings php 122\nstack trace \n#0 /var/www/app/vendors/php saml/lib/saml2/auth php(152) onelogin saml2 settings > construct()\n#1 /var/www/app/modules/admin/sso/ssoservice php(53) onelogin saml2 auth > construct()\n#2 /var/www/app/modules/admin/sso/ssocontroller php(33) passwork\\\modules\\\admin\\\sso\\\ssoservice >getauth()\n#3 \[internal function] passwork\\\modules\\\admin\\\sso\\\ssocontroller >loginaction()\n#4 \[internal function] phalcon\\\dispatcher\\\abstractdispatcher >callactionmethod()\n#5 \[internal function] phalcon\\\dispatcher\\\abstractdispatcher >dispatch()\n#6 /var/www/public/index php(91) phalcon\\\mvc\\\application >handle()\n#7 {main}, referer у пользователя отсутствует атрибут, по которому выполняется вход onelogin saml2 error invalid response lasterrorreason the status code of the response was not success,was responder > urn\ oasis\ names\ tc\ saml 2 0\ status\ invalidnameidpolicy in /var/www/app/modules/admin/sso/ssocontroller php 78\nstack trace \n#0 \[internal function]\ passwork\\\modules\\\admin\\\sso\\\ssocontroller >acsaction()\n#1 \[internal function] phalcon\\\dispatcher\\\abstractdispatcher >callactionmethod()\n#2 \[internal function]\ phalcon\\\dispatcher\\\abstractdispatcher >dispatch()\n#3 /var/www/public/index php(91) phalcon\\\mvc\\\application >handle()\n#4 {main}