【问题标题】:Wildfly 9 session expired but no authentication unless browser closedWildfly 9 会话已过期但没有身份验证,除非浏览器关闭
【发布时间】:2016-02-10 10:34:39
【问题描述】:

我在 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 中,我在 login-config 中引用了这个 security-domain 名称 (LDAPAuth)。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2014-09-26
    • 2011-03-07
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多