对于我的应用程序,我有一个REST服务的组合;和一个网站。两者都在同一个网络应用程序中。
为了确保安全,我将此安全域添加到了standalone.xml。 (MyAuthClass
是一个基本的身份验证扩展,可以通过第三方系统进行身份验证)
<subsystem xmlns="urn:jboss:domain:security:1.2">
<security-domains>
<security-domain name="my-authentication" cache-type="infinispan">
<authentication>
<login-module code="com.myAuthClass.Impl" flag="required"/>
</authentication>
</security-domain>
<security-domain name="other" cache-type="default">
...
我正在使用cache-type="default"
,但后来我适应了infinispan,所以我可以设定一个寿命。据我了解,我设置了一个特殊缓存。
<subsystem xmlns="urn:jboss:domain:infinispan:2.0">
<cache-container name="security" default-cache="auth-cache" module="org.wildfly.clustering.web.infinispan" aliases="standard-security-cache">
<local-cache name="auth-cache" batching="true">
<expiration lifespan="10000"/>
</local-cache>
</cache-container>
我现在的行为令人沮丧。当我使用REST测试工具(如Poster)时,我看到我存储的主体有10秒到期。但是,当我访问该网站并浏览并点击相同的REST端点时,我看不到任何超时。
我对这个配置工作相当新,所以我想我只是遗漏了一些东西,或者我的浏览器正在做一些棘手的活着,我不知道。
有没有人看过这种行为,并且知道在使用infinispan和基本身份验证扩展时在浏览器中强制执行超时的解决方案?
答案 0 :(得分:3)
我在写完这个问题后几乎立即解决了这个问题......
同样在Standalone.xml中,有一个网站正在使用的缓存容器。巧妙地命名为web
<cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan"> ...
我最终做的是设置缓存过期,现在我似乎得到了预期的行为。我也在安全上下文中保留了到期日期,因为当有人使用我们的服务时,这就是推动REST超时的原因。
最终的Web缓存配置:
<cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan">
<local-cache name="passivation" batching="true">
<expiration lifespan="10000"/>
<file-store passivation="true" purge="false"/>
</local-cache>
<local-cache name="persistent" batching="true">
<expiration lifespan="10000"/>
<file-store passivation="false" purge="false"/>
</local-cache>
</cache-container>