我在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的新手,但我与其他应用服务器合作的经验告诉我,我应该在上述任何一种情况下重新提示,所以我缺少什么?
答案 0 :(得分:1)
您的BASIC
中可能配置了 web.xml
身份验证方法。这意味着您的浏览器会保留(记住)身份验证数据,并在应用程序服务器请求时发送它们。因此它不会再次询问用户。使用 FORM 身份验证可以避免此行为。