java.lang.RuntimeException: wXb6Vnl31u :: Ошибка для HTML= 001 003 004 005 006 007 008 009
010

Настройка миграции из АД

011 012

Точечная синхронизация и множественная миграция настраиваются 013 одновременной в одном конфигурационном файле. Конфигурационный файл 014 находиться по адресу:

015 016
017  /mybpm/configs/AdConfig.txt
018  
019  
020  
021  
022 023

Этот файл уже должен существовать и в нём некоторые поля уже 024 имеют значения по умолчанию. Не трогайте те настройки, которые уже 025 есть, если вы точно не знаете что делаете.

026 027

В первую очередь необходимо настроить доступ к АД по протоколу 028 LDAP для этого нужно попросить у администратора параметры доступа к 029 АД и заполнить следующие поля:

030 031
032  adUsername=cn=greetgo,ou=temp,dc=hq,dc=bc
033  adPassword=anyPassword
034  adPort=389
035  adBase=dc=hq,dc=bc
036  adHost=10.0.0.1
037  useSSL=false
038  
039  
040  
041  
042 043

Здесь приведены значения для понимания как они должны выглядеть. 044 У вас они будут другими, но похожими. Следует отметить, что 045 некоторые параметры можно передать через переменные окружения, 046 например логин и пароль, чтобы они в конфиге не были доступны в 047 открытом виде. Для этого нужно вначале эти переменные окружения 048 определить. Например вы определили сделующие переменные 049 окружения:

050 051
052  AD_LOGIN=cn=greetgo,ou=temp,dc=hq,dc=bc
053  AD_PASSWORD=very-big-secret
054  
055  
056  
057  
058 059

И теперь нужно из конфига на них сослаться, для этого поменять 060 следующие параметры на такие:

061 062
063  adUsername:ENV=AD_LOGIN
064  adPassword:ENV=AD_PASSWORD
065  
066  
067  
068  
069 070

Т.е. нужно к ключу добавить окончание :ENV, которое 071 говорит, что правее равно содержится имя переменной окружения, из 072 которой нужно читать значение данного параметра.

073 074

Синхронизация рабочих групп

075 076

Для того, чтобы синхронизировать рабочие группы нужно заполнить 077 параметр:

078 079
080  adGroupFieldCode=
081  
082  
083  
084  
085 086

Если этот параметр равен пустой строке, то рабочие группы 087 синхронизировать не будут. Если же нужно синхронизация этого 088 параметра, то нужно у рабочей группы создать поле для синхронизации 089 с АД. Например вы создали у БО "Рабочая группа" поле:

090 091
092  Название поля: Код роли из АД
093  Тип поля: Текстовая строка (INPUT_TEXT)
094  Код поля: AD_ROLE
095  
096  
097  
098  
099 100

Тогда нужно в конфиге задать этот параметр так:

101 102
103  adGroupFieldCode=AD_ROLE
104  
105  
106  
107  
108 109

Т.е. его значение должно соответствовать коду этого поля.

110 111

После этого, при синхронизации с АД этот пользователь будет 112 добавляться ко всем группам, которые соответствуют тем ролям, 113 которые приходят из АД для этого пользователя.

114 115

Например, вы создали рабочие группы:

116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
ИмяЗначение поля AD_ROLE
Центральная группа рассылокCN=Central,OU=Группы рассылок,DC=ok,DC=kz
Проблемные кредитыCN=problem,OU=DC=ok,DC=kz
Подключён к VPNCN=vpn_user,OU=Groups,DC=ok,DC=kz
142 143

И пользователь example в АД содержит две роли: 144 CN=Central,OU=Группы рассылок,DC=ok,DC=kz и 145 CN=problem,OU=DC=ok,DC=kz. А в системе он находиться в 146 двух группах: Проблемные кредиты и Подключён к 147 VPN. То при входе в систему он будет исключён из группы 148 Подключён к VPN и добавлен в группу: Центральная 149 группа рассылок. А в группе Проблемные кредиты 150 он останется.

151 152

Также пользователь будет исключён из всех остальных групп, даже 153 тек, в которых поле AD_ROLE будет не заполнено.

154 155

Настройка множественной миграции

156 157

Множественную миграцию нужно дополнительно настраивать. Для 158 этого нужно в конфигурационном файле:

159 160
161  /mybpm/scheduler/core/MigrateFromAdScheduler.scheduler-config.txt
162  
163  
164  
165  
166 167

Настроить расписание запуска в параметре:

168 169
170  migrate = 02:00
171  
172  
173  
174  
175 176

В данном случае настроен запуск в 2 часа ночи. Какие сюда можно 177 вносить данные более детально читайте в самом файле - там вначале 178 всё расписано.

179 180

После установки этого параметра, ночью запуститься множественная 181 миграция и все пользователи из АД будут скопированы в систему.

182 183

Логирование миграции из АД

184 185

В конфигурационном файле:

186 187
188  /mybpm/logging/structure.txt
189  
190  
191  
192  
193 194

Нужно настроить вывод логов для миграции из АД. Вот эти строки 195 это настраивают.

196 197
198  category AdMigration
199      level TRACE
200      assign_to adMigration
201  
202  destination adMigration to_file migration/ad
203      layout trace
204      level TRACE
205  
206  destination tracer_ad_1 to_file traces2/ad_1
207      layout trace
208      level TRACE
209  
210  category tracer_ad_1
211      level TRACE
212      assign_to tracer_ad_1
213  
214  
215  
216  
217 218

Эти строки настраивают файлы логирования: 219 migration/ad.log и traces2/ad_1.log. В 220 этих логах будут сохраняться состояния миграции и некоторые 221 полезные данные. Например в файле ad_1 появляются роли 222 из АД, которые назначены только что зашедшему в систему 223 АД-пользователю.

224
225 226 at kz.greetgo.md_reader.util.MdUtil.xmlTextToDoc(MdUtil.java:80) at kz.greetgo.md_reader.core.MdConverter.prepareHtmlFileFrom(MdConverter.java:136) at kz.greetgo.md_reader.core.MdConverter.convert(MdConverter.java:208) at kz.greetgo.md_reader.controller.RenderController.downloadToc(RenderController.java:360) at kz.greetgo.md_reader.controller.RenderController.request(RenderController.java:108) at jdk.internal.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at kz.greetgo.md_reader.interceptors.TextReplaceFilter.doFilter(TextReplaceFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.io.IOException: Server returned HTTP response code: 429 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:2000) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1397) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1333) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.startPE(XMLDTDScannerImpl.java:732) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.skipSeparator(XMLDTDScannerImpl.java:2101) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDecls(XMLDTDScannerImpl.java:2064) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDTDExternalSubset(XMLDTDScannerImpl.java:299) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1165) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1040) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:943) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825) at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:247) at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:342) at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122) at kz.greetgo.md_reader.util.MdUtil.xmlTextToDoc(MdUtil.java:71) ... 48 more