针对同一域中的应用程序的Wildfly 8.2 SSO注销问题

时间:2015-04-09 12:13:00

标签: java single-sign-on wildfly wildfly-8 jdbcrealm

我有一些奇怪的行为,我不确定为什么。我有两个在Tomcat 7中运行良好的应用程序,但在Wildfly 8.2和9Beta2中表现不正确。

  1. 在Tomcat中,我可以登录一个应用程序,转到第二个应用程序,我可以看到我的登录状态是正确的,在第二个应用程序中注销,返回第一个应用程序,我退出那里。这是正确的。

  2. 在Tomcat中,我可以登录一个应用程序,转到第二个应用程序,我可以看到我的登录状态是正确的,返回到第一个应用程序,在第一个应用程序中注销,返回到第二个应用程序,我在那里退出了。这是正确的。

  3. 在Wildfly中,我登录到第一个应用程序,转到第二个应用程序,我可以看到我的登录状态是正确的,退出第二个应用程序,返回到第一个应用程序,但我仍然记录in。不正确。

  4. 在Wildfly中,我登录到第一个应用程序,转到第二个应用程序,我可以看到我的登录状态是正确的,返回第一个应用程序,退出第一个应用程序,转到第二个应用程序,我也在那里登出。正确的。

  5. 为什么Wildfly第一次测试失败(上面的3.)?

    任何指针都会非常感激。

    以下是我文件中的一些摘录:

    来自standalone.xml

    <security-realm name="DataSourceRealm">
        <authentication>
            <jaas name="app"/>
        </authentication>
    </security-realm>
    
    <security-domain name="app" cache-type="default">
         <authentication>
             <login-module code="Database" flag="requisite">
                  <module-option name="password-stacking" value="useFirstPass"/>
                  <module-option name="dsJndiName" value="jdbc/icedb"/>
                  <module-option name="principalsQuery" value="select PASSWORD from WSV_USR_PRFL_DEF where USR_PRFL_DEF_ID=?"/>
                  <module-option name="rolesQuery" value="select USR_GRP_DEF_ID, 'Roles' from WSV_USR_GRP_MAP where USR_PRFL_DEF_ID = ?"/>
                  <module-option name="unauthenticatedIdentity" value="guest"/>
              </login-module>
              <login-module code="RoleMapping" flag="requisite">
                   <module-option name="rolesProperties" value="file:${jboss.server.config.dir}/app.properties"/>
                   <module-option name="replaceRole" value="false"/>
              </login-module>
          </authentication>
     </security-domain>
    
    <subsystem xmlns="urn:jboss:domain:undertow:2.0">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default" socket-binding="http"/>
                <host name="default-host" alias="localhost">    
                     <single-sign-on path="/"/>
                     .....
    

    来自各种应用程序(WAR)jboss-web.xml:

    <jboss-web>
        <context-root>/APPNAME</context-root>
        <security-domain flushOnSessionInvalidation="true">app</security-domain>
    </jboss-web>
    

    来自我的logout.java:

    @WebServlet(name="logout", urlPatterns={"/lo.xhtml"}, loadOnStartup=2)
    public class Logout extends HttpServlet{
    
    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        if (request.getSession(false) != null) {
            HttpSession ses = request.getSession(false);
            ses.invalidate(); // remove session.
        }
        request.logout();
        response.sendRedirect(request.getContextPath());
    }
    

    }

0 个答案:

没有答案