wso2会话超时 - 时间戳无效?

时间:2016-06-27 11:28:01

标签: session wso2is

我们已经从WSO2 IS 5.0.0.SP1升级到WSO2IS 5.1.0,我们正在尝试修复会话过期。似乎用户已登录很长时间。

在登录屏幕上,我们默认选中了rememberMe(我们希望用户持续约14h = 840m)

我看到的是identity.xml中的多个超时参数:

    <SessionDataPersist>
        <Enable>true</Enable>
        <Temporary>false</Temporary>
        <SessionDataCleanUp>
            <Enable>true</Enable>
            <CleanUpTimeout>841</CleanUpTimeout>
            <CleanUpPeriod>30</CleanUpPeriod>
        </SessionDataCleanUp>
        <OperationDataCleanUp>
            <Enable>true</Enable>
            <CleanUpPeriod>30</CleanUpPeriod>
        </OperationDataCleanUp>
    </SessionDataPersist>
</JDBCPersistenceManager>

...

<TimeConfig>
    <SessionIdleTimeout>840</SessionIdleTimeout>
    <RememberMeTimeout>840</RememberMeTimeout>
</TimeConfig>

...

    <PersistanceCacheTimeout>900</PersistanceCacheTimeout>
    <SessionIndexCacheTimeout>900</SessionIndexCacheTimeout>

但似乎用户即使在第二天(24小时)也已登录

现在检查数据库的会话超时,我们看到time_created甚至放在将来(3.5天)。

select  session_id , session_type, time_created, operation, tenant_id from idn_auth_session_store where session_id='8d761e3d-c2c8-4a50-b58f-dc20822a0000'

8d761e3d-c2c8-4a50-b58f-dc20822a0000 | SAMLSSOSessionIndexCache | 1467171230156905138 | STORE     |         0

似乎1467171230156905138是星期三,29六月2016 03:33:50 GMT

问题是 - 将time_created用作到期时间戳还是错误转换的地方?如果它被用作到期日期 - 它在哪里真正配置?

编辑:

我从代码中看到的值是什么(我们不能只使用简单的ms时间戳?):

currentStandardNano = currentStandardNano + (currentSystemNano - FrameworkServiceDataHolder.getInstance().getNanoTimeReference());

这有效地将时间戳移动到服务器正常运行时间的值。这有什么理由吗?

感谢您的任何见解

1 个答案:

答案 0 :(得分:0)

这在Identity Server 5.1.0中被识别为一个问题,并且已针对将来的版本进行了修复。这已经讨论过here