Настройка SSO Авторизации Для BookStack

от автора

Одним из наиболее удачных сервисов (среди мне известных ) для хранения внутренней документации является BookStack. По тому как его развернуть и выполнить Базовую настройку можно прочитать на ОФ сайте, там прекрасная документация. Но вот вопрос настройки авторизации SSO используя ADFS информация достаточно поверхностная, да и то что в инете можно найти требует достаточно глубоких знаний темы. Посему решил поделиться компиляцией информации по данному вопросу

Настройка BookStack

Не требуется много настроек, просто отредактируйте .envфайл, 

 nano /var/www/bookstack/.env

Добавив в конец файла следующее содержимое:

AUTH_METHOD=saml2 AUTH_AUTO_INITIATE=true SAML2_NAME=ADFS SAML2_EMAIL_ATTRIBUTE=mail SAML2_EXTERNAL_ID_ATTRIBUTE=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn SAML2_DISPLAY_NAME_ATTRIBUTES=displayName SAML2_IDP_ENTITYID=https://adfs.*****.com/FederationMetadata/2007-06/FederationMetadata.xml SAML2_AUTOLOAD_METADATA=true SAML2_IDP_SSO=https://adfs.******.com/adfs/ls SAML2_IDP_SLO=null SAML2_IDP_AUTHNCONTEXT=true SAML2_USER_TO_GROUPS=true SAML2_GROUP_ATTRIBUTE=groups SAML2_REMOVE_FROM_GROUPS=false    #APP_DEBUG=true #SAML2_DUMP_USER_DETAILS=true #SAML2_ONELOGIN_OVERRIDES=<json_format_data>

Настройка ADFS Сервера

Создадим Relaying Party trusts

 Откроем оснастку Relaying Party trusts после Нажмем Add Relaying Party trusts

Далее выбираем Claims aware  жмем Start

Выберем Источник данных

Выбираем пункт Enter data about the relying parity manually

Зададим Display Name

Даем Любое понятное название в поле Display Name

Кофигурация Сертификатов

Пропускаем конфигурацию сертификата  нажав next

Конфигурация URL

 Выберем пункт «Enable support for the SAML2.0» после чего в поле укажем 

https://book.***Ваш домен***.com/saml2/acs

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

 В поле Relying party trust identifilers вставим 

https://book.*******.com/saml2/metadata

и нажмем ADD

Выберем политику авторизации

в предстаавленном списке выберем Permit everyone 

На вкладке finish Уберем галочку напротив Configure claims issuance policy for this application

Настройка Точек подключения

 Откроем свойства  созданного Party trusts и перейдем во вклаку Endpoints

Проверим созданную   assertion consumer endpoint 

После чего создадим Logout Endpoints для этого нажмем 

и заполним в соответствии с скриншотом

Настройка выдачи  требований  

Создадим правило соответствия полей значений

в появившемся окне нажмите Add Rule 

Заполняем поле следующим образом 

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]  => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", "mail", "groups", "displayName"), query = ";userPrincipalName,otherMailbox,tokenGroups,displayName;{0}", param = c.Value);

Создадим правило преобразования значения

нажмите Add Rule 

Заполняем поле следующим образом 

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"]  => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress");

Готово, можно проверять

Траблшуттинг

 для тестирования работы ADFS, чтобы посмотреть в браузере в формате json информацию которую возвращает ADFS Сервер можно  раскоментировать в файле .env

APP_DEBUG=true SAML2_DUMP_USER_DETAILS=true SAML2_ONELOGIN_OVERRIDES=<json_format_data>

В этом режиме АВТОРИЗАЦИЯ БУДЕТ ОТКЛЮЧЕНА


ссылка на оригинал статьи https://habr.com/ru/articles/847644/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *