Добрый день, Коллеги!
1. На community видел упоминание что есть инструкция как влючить логирование синхронизации с LDAP кто может, прошу поделится.
2. При добавлении пользователя через синхронизацию с LDAP пользователь помешается в группу "Все сотрудники компании", как коректно отключить этот механизм мне надо чтоб пользователь был только в тех группах с которыми он синхронизирован через LDAP?
3. Есть учетка в LDAP числится в нужной группе которая синхронизирована с организационной ролью BPM другие учетки есть а этой нет. Куда копать?
установка он сайт.
Нравится
Здравствуйте, Алексей
По Вашим вопросам:
1. Настройка логирования LDAP
- Открываем файл log4net.config в папке <site>/Terrasoft.WebApp
- Находим фильтр:
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="Terrasoft.Core.LDAP" />
<acceptOnMatch value="false" />
</filter>
Если данный фильтр отсутствует, то добавляем. Пример:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="Data Source=#SQLServer#; Initial Catalog=syslog; Persist Security Info=True; MultipleActiveResultSets=True; User ID=svc-log4net; Password=FoaFkplBSl0Iqqdbo2a7fj6JfdyE1jmu; Pooling = true; Max Pool Size = 100" />
<commandText value="INSERT INTO [dbo].[log4net] ([Date],[Host],[Site],[Thread],[Level],[Logger],[User],[Message],[Exception]) VALUES (@log_date, @log_host, @log_site, @log_thread, @log_level, @log_logger, @log_user, @log_message, @log_exception)" />
<bufferSize value="1" />
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="Terrasoft.Core.LDAP" />
<acceptOnMatch value="false" />
</filter>
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
</parameter>
- Находим атрибут appender
<appender name="ldapAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString">
<converter>
<name value="AspNet" />
<type value="log4net.Util.PatternStringConverters.AspNetPatternConverter,log4net.Util.PatternStringConverters" />
</converter>
<conversionPattern value="${TEMP}\BPMonline\Site_%AspNet{SiteId}\%AspNet{ApplicationPath}\Log\" />
</file>
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy_MM_dd'\\LDAP.log'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %username %logger %method - %message%newline" />
</layout>
</appender>
Если не находим, то добавляем. Пример:
</appender>
<appender name="ldapAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString">
<converter>
<name value="AspNet" />
<type value="log4net.Util.PatternStringConverters.AspNetPatternConverter,log4net.Util.PatternStringConverters" />
</converter>
<conversionPattern value="${TEMP}\BPMonline\Site_%AspNet{SiteId}\%AspNet{ApplicationPath}\Log\" />
</file>
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy_MM_dd'\\LDAP.log'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %username %logger %method - %message%newline" />
</layout>
</appender>
<root>
<level value="WARN" />
<appender-ref ref="AdoNetAppender" />
</root>
- Находим атрибут logger
<logger name="Terrasoft.Core.LDAP" >
<level value="ALL" />
<appender-ref ref="ldapAppender" />
</logger>
и устанавливаем уровень логирования в ALL, вместо INFO или DEBUG
Если не находим, то добавляем. Пример:
<root>
<level value="WARN" />
<appender-ref ref="AdoNetAppender" />
</root>
<logger name="Terrasoft.Core.LDAP" >
<level value="ALL" />
<appender-ref ref="ldapAppender" />
</logger>
</log4net>
2. Если имеется ввиду то что, к примеру, создается пользователь (Администратор) который должен получить роль "Системные администраторы" а получает дополнительно роль "Все сотрудники компании" - то это корректное поведение приложения так как по логиге пользователь получает все родительские роли полученной роли, а так как роль системных администраторов является дочерней ролью Всех сотрудников компании то это правильно.
3. Необходимо сравнить атрибуты пользователелей в AD который попал в приложение при синхронизации и который не попал и уже после отталкиваться от результатов.