Bluemix SAML和超时会话问题



我已经创建了在Bluemix上的Java Liberty Runtime上运行的Web应用程序。登录是通过使用SAML企业提供商的SSO服务来完成的。登录后,用户重定向到我的应用程序,在每次JAX-RS请求时,我都会通过以下代码获得用户的凭据:

    Subject s = WSSubject.getCallerSubject();     
    Object credential = s.getPrivateCredentials().iterator().next();
    String loginToken = credential.toString();

一切都很好,但如果用户空闲超过10分钟,然后执行任何ajax请求,WSSubject.getCallerSubject()返回null,我需要刷新应用程序。

我试图通过向web.xml添加以下属性来增加超时:

    <session-config>
        <session-timeout>60</session-timeout>
    </session-config>

但这无济于事。所以我正在研究如何增加超时时间,或者我可以用不同的方式检索用户凭据?

您需要将可选元素<authCache>添加到server.xml文件中,以更改身份验证缓存的默认值。

正如您在问题中提到的,默认值为10分钟。要将其更改为60分钟,您需要在server.xml文件中包含以下内容:

<authCache initialSize="50" maxSize="25000" timeout="60m"/>

这里的文档提供了更多详细信息,还解释了initialSizemaxSize选项,我在上面留下了这两个选项的默认值,刚刚更新了timeout

如果使用推送war文件的默认方法部署应用程序,则需要使用不同的方法来部署具有自定义server.xml文件的应用程序。有关推送Liberty配置文件应用程序的选项,请查看此处的文档(更具体的检查部分服务器目录打包服务器)。

在这种情况下,您可能还需要检查当前部署的server.xml文件,并修改该版本以添加<authCache>元素。

您可以通过运行以下命令获得文件的副本:

$ cf files <your_app_name> app/wlp/usr/servers/defaultServer/server.xml

最新更新