Не удалось выйти из системы SAML WSO2 IS 5.0

Я использую simpleSAMLphp с SAML (WSO2 IS 5.0) для входа в свое приложение, если я попытаюсь выйти из системы через 60 минут, появится эта ошибка:

TID: [0] [IS] [2014-12-02 11:10:36,346] ERROR {org.wso2.carbon.identity.sso.saml.processors.LogoutRequestProcessor} -  No Established Sessions corresponding to Session Indexes provided. {org.wso2.carbon.identity.sso.saml.processors.LogoutRequestProcessor}
TID: [0] [IS] [2014-12-02 11:10:36,438] ERROR {org.apache.catalina.core.StandardWrapperValve} -  Servlet.service() for servlet [bridgeservlet] in context with path [/] threw exception {org.apache.catalina.core.StandardWrapperValve}
java.lang.NullPointerException
        at java.lang.String.replace(Unknown Source)
        at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.sendResponse(SAMLSSOProviderServlet.java:433)
        at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.handleLogoutReponseFromFramework(SAMLSSOProviderServlet.java:579)
        at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.handleRequest(SAMLSSOProviderServlet.java:161)
        at org.wso2.carbon.identity.sso.saml.servlet.SAMLSSOProviderServlet.doGet(SAMLSSOProviderServlet.java:91)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
        at org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:37)
        at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
        at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
        at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
        at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178)
        at org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
        at org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56)
        at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
        at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141)
        at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
        at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

Если попробовать менее 15 минут, все работает нормально!

Я попытался изменить файл Identity.xml здесь (с 3600 на 36000):

<SSOService>
    <SessionTimeout>36000</SessionTimeout> <!-- remember me session timeout in seconds -->
</SSOService>

Но сеанс не был обновлен этим значением после перезапуска службы.


person Alessandro Gomes    schedule 02.12.2014    source источник


Ответы (1)


Да... это известная проблема в свежей сборке Identity Server 5.0.0. На сервере идентификации не сохраняется сеанс единого входа. Он просто хранится в кеше, который будет аннулирован через 15 минут. Поскольку вы пытаетесь выйти из системы через 60 минут, вы можете увидеть эту ошибку. Нет смысла обновлять значение SessionTimeout. Общедоступную версию jira можно найти здесь. Это уже исправлено и будет доступно в следующем выпуске.

person Asela    schedule 02.12.2014