从Tomcat单点登录中排除管理器

时间:2012-08-06 14:52:28

标签: tomcat single-sign-on jaas tomcat-valve tomcat-manager

在Tomcat服务器上使用JAAS for SSO没有Apache。 SSO控制对几个相关应用程序的访问,并且运行良好。最近我开始从Ant迁移到Maven,为了使用Maven的Tomcat插件,我需要设置Tomcat Manager应用程序,这是我以前不需要的。我能够使用BASIC身份验证或CLIENT-CERT身份验证以及服务器上的其他Web应用程序来启动和运行。

我遇到的问题是当用户在管理器中进行身份验证时,其他Web应用程序的会话被删除 - IE登录到webapp,登录到Manager,刷新webapp,重定向到登录页面。

我能够通过在上下文级别定义SSO阀门以及在主机级别定义域来缓解这种重叠。这仍然允许SSO在通过浏览器在webapps之间导航时工作。但是,交叉上下文AJAX请求以及什么不返回“用户未登录”错误,直到我访问其他有问题的Web应用程序。使用此方法,Manager的身份验证与其他Web应用程序实际上是隔离的。

简而言之,我正在寻找使用JAAS身份验证模块通过SSL /数据库身份验证为我的Web应用程序提供SSO的最佳方法,但强制Tomcat将Manager从SSO中排除。 IE SSO通过SSL进行Webapps 1,2,3,但UN / PW身份验证独立于Manager的SSO,身份验证在两者之间独立。

有办法做到这一点吗?

当前配置:

<Engine name="Catalina" defaultHost="localhost">

  <Host name="localhost" appBase="webapps"
        unpackWARs="true" autoDeploy="false"
        xmlValidation="false" xmlNamespaceAware="false">

    <Realm className="org.apache.catalina.realm.JAASRealm" appName="CustomLogin"
           userClassNames="com.foo.bar.User" roleClassNames="com.foo.bar.Role"
           useContextClassLoader="true" debug="false"/>
    <Valve className="org.apache.catalina.authenticator.SingleSignOn"/>

    <Context path="/Webapp1" docBase="webapp1">
        <ResourceLink name="jdbc/WEBAPP" global="jdbc/WEBAPP" type="java.sql.DataSource"/>
    </Context>

    <Context path="/Webapp2" docBase="webapp2">
        <ResourceLink name="jdbc/WEBAPP" global="jdbc/WEBAPP" type="java.sql.DataSource"/>
    </Context>

    <Context path="/Webapp3" docBase="Webapp3">
        <ResourceLink name="jdbc/WEBAPP" global="jdbc/WEBAPP" type="java.sql.DataSource"/>
    </Context>

    <Context path="/manager" docBase="manager" AntiJARLocking="false" antiResourceLocking="false" privileged="true" reloadable="false">
        <Realm className="org.apache.catalina.realm.MemoryRealm"></Realm>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="manager_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
    </Context>
  </Host>
</Engine>

使用此配置,所有Web应用程序和管理器都在SSO的控制之下,并且发生上述重叠 - IE通过SSL登录到webapp1,然后通过UN / PW登录,然后刷新webapp1,重定向到登录页面。 / p>

将SSO阀移动到webapps的上下文可以解决此问题,但会导致“用户未登录”响应以进行跨上下文AJAX请求。

0 个答案:

没有答案