Wildfly 9会话已过期,但除非浏览器已关闭,否则无法进

时间:2015-11-09 17:40:43

标签: session authentication jboss7.x wildfly wildfly-8

我在Wildfly 9.0.2.Final中设置了一个自定义security-domain,用于测试,如下所示:

<security-domain name="LDAPAuth" cache-type="default">
<authentication>
  <login-module code="LdapExtended" flag="required">
    <module-option name="java.naming.factory.initial"
                   value="com.sun.jndi.ldap.LdapCtxFactory"/>
    <module-option name="java.naming.provider.url"
                   value="ldap://localhost:389"/>
    <module-option name="java.naming.security.authentication" value="simple"/>
    <module-option name="baseCtxDN" value="ou=People,dc=acme,dc=com"/>
    <module-option name="baseFilter" value="(uid={0})"/>
    <module-option name="rolesCtxDN" value="ou=Roles,dc=acme,dc=com"/>
    <module-option name="roleFilter" value="(member={1})"/>
    <module-option name="roleAttributeID" value="cn"/>
    <module-option name="searchScope" value="ONELEVEL_SCOPE"/>
  </login-module>
</authentication>
</security-domain>

在我的web.xml中,我在security-domain中引用了此login-config名称(LDAPAuth)。

当我提供在本地LDAP中配置的有效用户名和密码时,我被允许进入,否则验证失败。这非常有效。问题是,一旦我进行了一次身份验证,除非我关闭浏览器窗口并打开一个新窗口,否则我再也不会提示。如果我在我的代码中手动调用session.invalidate();,如果会话自然过期(我将其设置为1分钟进行测试),或者即使我重新启动服务器,也没有关系!我是Wildfly的新手,但我与其他应用服务器合作的经验告诉我,我应该在上述任何一种情况下重新提示,所以我缺少什么?

1 个答案:

答案 0 :(得分:1)

您的BASIC中可能配置了 web.xml 身份验证方法。这意味着您的浏览器会保留(记住)身份验证数据,并在应用程序服务器请求时发送它们。因此它不会再次询问用户。使用 FORM 身份验证可以避免此行为。