WSO2 генерирует исключение EmptyStackException при попытке федеративного входа - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть два сервера идентификации WSO2, работающие на одной и той же машине, один - сервер идентификации, другой - на сервере федеративной идентификации для репликации федеративного входа в систему. При доступе из приложения весенней загрузки клиента сервер идентификации выдает следующее исключение. Нужен совет ..

ОШИБКА {org. apache .catalina.core.ContainerBase. [Catalina]. [Localhost]. [/ Oauth2]. [OAuth2Endpoints]} - Servlet.service ( ) для сервлета [OAuth2Endpoints] в контексте с путем [/ oauth2] вызвала исключение java .util.EmptyStackException в java .util.Stack.peek (стек. java: 102)

Моя версия WSO2: 5.9.0

Подробные журналы:

ОШИБКА {org. apache .catalina.core.ContainerBase. [Catalina]. [Localhost]. [ /oauth2].[OAuth2Endpoints]} - Servlet.service () для сервлета [OAuth2Endpoints] в контексте с путем [/ oauth2] вызвало исключение java .util.EmptyStackException в java .util.Stack.peek (Stack. java: 102) в java .util.Stack.pop (Stack. java: 84) в org.wso2.carbon.context.internal.CarbonContextDataHolder.endTenantFlow (CarbonContextDataHolder. java: 1295) в орг. wso2.carbon.context.PrivilegedCarbonContext.endTenantFlow (PrivilegedCarbonContext. java: 75) в org.wso2.carbon.identity.oauth.endpoint.authz.OAuth2AuthzEndpoint.autho rize (OAuth2AuthzEndpoint. java: 250) в sun.reflect.GeneratedMethodAccessor246.invoke (Неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43.tg. вызвать (Method. java: 483) в org. apache .cxf.service.invoker.AbstractInvoker.performInvocation (AbstractInvoker. java: 179) в org. apache .cxf.service.invoker.AbstractInvoker. вызвать (AbstractInvoker. java: 96) в орг. apache .cxf.jaxrs.JAXRSInvoker.invoke (JAXRSInvoker. java: 193) в орг. apache .cxf.jaxrs.JAXRSInvoker.invoke (JAXRSInvoker. java: 103) в орг. apache .cxf.interceptor.ServiceInvokerInterceptor $ 1.run (ServiceInvokerInterceptor. java: 59) в орг. apache .cxf.interceptor.ServiceInvokerInterceptor.handle *essage * (ServiceInvokerInceptor : 96) в орг. apache .cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain. java: 308) в орг. apache .cxf.transport.ChainInitiationObserver.onMessage * ChainInitiationObserver: орг. apache .cxf.transport.http.Abst ractHTTPDestination.invoke (AbstractHTTPDestination. java: 267) в org. apache .cxf.transport.servlet.ServletController.invokeDestination (ServletController. java: 234) в org. apache .cxlet.rans. ServletController.invoke (ServletController. java: 208) в орг. apache .cxf.transport.servlet.ServletController.invoke (ServletController. java: 160) в орг. apache .cxf.transport.servlet. CXFNonSpringServlet.invoke (CXFNonSpringServlet. java: 216) в org. apache .cxf.transport.servlet.AbstractHTTPServlet.handleRequest (AbstractHTTPServlet. java: 30158t. AbstractHTTPServlet.doGet (AbstractHTTPServlet. java: 225) в javax.servlet.http.HttpServlet.service (HttpServlet. java: 634) в орг. apache .cxf.transport.servlet.AbstractHTServ java: 276) в орг. apache .catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain. java: 231) в орг. apache .catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain. 166) в org. apache .tomcat.websocket.server.WsFilter.doFilter (WsFilter. java: 53) в org. apache .catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain. java: 193) в org. apache .catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain. java: 166) на org.wso2.carbon.webapp.mgt.filter.AuthorizationHeaderFilter.doFilter (AuthorizationHeaderFilter. java: 85) или apache .catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain. java: 193) в орг. apache .catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain. java: 166socar) ui.filters.cache.ContentTypeBasedCachePreventionFilter.doFilter (ContentTypeBasedCachePreventionFilter. java: 53) в org. apache .catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain. * 10 *. *. *. java at. core.ApplicationFilterChain.doFilter (ApplicationFilterChain. java: 166) в орг. apache .catalina.filters.HttpHeaderSecurityFilter.doFilter (HttpHeaderSecurityFilter. java: 126) в флоте. internalDoFilter (ApplicationFilterChain. java: 193) в орг. apache .catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain. java: 166) в орг. apache .catalina.core.StandardWrapperValve. java: 202) в орг. apache .catalina.core.StandardContextValve.invoke (StandardContextValve. java: 96) в org. apache .catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase. java: 490) в org. apache .catalina.core.StandardHostValve.invoke (StandardHostValve. java: 139) в org. apache .catalina.valves.ErrorReportValve.invoke (ErrorReportValve. java: 92) в org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke (TenantContextRewriteValve. java: 80) или 80). carbon.identity.authz.valve.AuthorizationValve.invoke (AuthorizationValve. java: 100) в org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke (AuthenticationValve. java: 74) в org.wso2. carbon.tomcat.ext.valves.CompositeValve.continueInvocation (CompositeValve. java: 99) в org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves (TomcatValveContainer. java: 49 или 49). carbon.tomcat.ext.valves.CompositeValve.invoke (CompositeValve. java: 62) в org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke (CarbonStuckThreadDetectionValve. apache 146 * 146). * .catalina.val ves.AbstractAccessLogValve.invoke (AbstractAccessLogValve. java: 678) в org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke (CarbonContextCreatorValve. java: 57) в org.tom. valve.RequestCorrelationIdValve.invoke (RequestCorrelationIdValve. java: 116) в org.wso2.carbon.tomcat.ext.valves.RequestEncodingValve.invoke (RequestEncodingValve. java: 49) в org. * 11.cat. StandardEngineValve.invoke (StandardEngineValve. java: 74) в орг. apache .catalina.connector.CoyoteAdapter.service (CoyoteAdapter. java: 343) в орг. apache .coyote.http11.Http11Processor.service ( Http11Processor. java: 408) в орг. apache .coyote.AbstractProcessorLight.process (AbstractProcessorLight. java: 66) в орг. apache .coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol. java: 853) в орг. apache .tomcat.util. net .NioEndpoint $ SocketProcessor.doRun (NioEndpoint. java: 1587) в орг. apache .tomcat.util. net .SocketProcessorBase.run ( SocketProcessorBase. java: 49) в java .uti l.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1142) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 617) в орг. apache .tomcat. threads.TaskThread $ WrappingRunnable.run (TaskThread. java: 61) в java .lang.Thread.run (Thread. java: 745)

1 Ответ

3 голосов
/ 09 февраля 2020

Я мог бы локально воспроизвести эту проблему в IS 5.9.0, выполнив следующие действия:

  • Сконфигурируйте OAuth SP в первичном IS
  • Сконфигурируйте провайдер идентификации SAML в основной IS
  • Настройка поставщика услуг SAML в объединенном IDP.

Когда поставщик услуг OAuth в основном IS вызывает / oauth2 / authorize endpoint, могут быть получены вышеуказанные журналы ошибок в консоли.

Существует аналогичная проблема, о которой сообщалось git концентратор в IS 5.9.0 для федерации SAML outboud, и она исправлена ​​с использованием новейшего средства проверки подлинности samlsso в последней IS (IS 5.10.0- бета).

Как уже упоминалось в проблеме git, эта ошибка возникает только при включении подписи запроса аутентификации Однако подписание запроса аутентификации не является обязательным, если вы не ожидаете дополнительных усилить защиту в процессе единого входа.

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

На стороне первичного IS:

  • Go для консоли MG сервера IS и откройте настройки поставщика удостоверений Go на вкладке Конфигурация федеративных аутентификаторов -> SAML2 Web SSO Configuration и откройте конфигурацию там.
  • Снять отметку Включить параметр подписи запроса аутентификации . enter image description here

На стороне федеративного IDP :

  • Go на консоли Federated IDP mgt и откройте настройки поставщика услуг
  • Go на вкладку Конфигурация входящей аутентификации -> SAML2 Web SSO Configuration и откройте там конфигурацию.
  • Снимите флажок Включите проверку подписи в запросах аутентификации и запросах на выход из системы если отмечен ранее.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...