我在Bluemix上创建了在Java Liberty Runtime上运行的Web应用程序。使用SSO SAML enterprise provider服务完成登录。登录用户重定向到我的应用程序后,在每个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>
但它没有帮助。所以我正在寻找如何增加超时或者我可以以不同的方式检索用户凭据?
答案 0 :(得分:2)
您需要将可选元素<authCache>
添加到server.xml
文件,以更改身份验证缓存的默认值。
正如您在问题中提到的,默认值为10分钟。要将其更改为60分钟,您需要在server.xml
文件中包含以下内容:
<authCache initialSize="50" maxSize="25000" timeout="60m"/>
文档here提供了更多详细信息,并解释了initialSize
和maxSize
选项,我保留了上述这两项的默认值,只更新了timeout
。
如果使用推送war文件的默认方法部署应用程序,则需要使用其他方法使用自定义server.xml
文件部署应用程序。有关推送Liberty配置文件应用程序的选项(更具体的检查部分服务器目录和打包服务器),请查看文档here。
在这种情况下,您可能还需要检查当前部署的server.xml
文件并修改该版本以添加<authCache>
元素。
您可以通过运行以下命令获取该文件的副本:
$ cf files <your_app_name> app/wlp/usr/servers/defaultServer/server.xml