代码之家  ›  专栏  ›  技术社区  ›  Shane Oliver

使用虚拟主机和别名的Tomcat安全配置

  •  0
  • Shane Oliver  · 技术社区  · 14 年前

    <Host name="domain1.com"  appBase="myApp"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
        <Alias>domain2.com</Alias>
    </Host>
    

    我们还想限制对web应用的访问(不同于使用站点的登录),所以我们使用了Tomcat安全性。

    以下是应用程序web.xml中的安全约束片段:

    <security-constraint>
        <web-resource-collection>
          <web-resource-name>HTMLManger and Manager command</web-resource-name>
          <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
           <!-- NOTE:  This role is not present in the default users file -->
           <role-name>manager</role-name>
        </auth-constraint>
     </security-constraint>
    
    <!-- Define the Login Configuration for this Application -->
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>My Realm</realm-name>
    </login-config>
    
    <!-- Security roles referenced by this web application -->
    <security-role>
        <description>
          The role that is required to log in to the Manager Application
        </description>
        <role-name>manager</role-name>
    </security-role>
    
    <error-page>
        <error-code>401</error-code>
        <location>/401.jsp</location>
    </error-page>
    

    下面是一个场景:当用户浏览domain1.com时,将显示基本身份验证弹出窗口。然后用户输入用户名和密码组合以进入站点。然后,用户希望登录到web应用程序(以便能够使用更多功能)。登录机制(使用acegi)也需要登录domain2.com。现在,在用户可以登录domain2.com之前,他/她需要为基本身份验证弹出窗口输入相同的凭据。所以基本上,用户需要使用tomcatweb安全两次,这是我们需要避免的。

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  1
  •   Sammyrulez    14 年前

    如果您有一个两级身份验证系统,那么您真的应该考虑像CAS这样的SSO。不推荐使用的Acegi插件和grails的新Spring安全插件都支持CAS。在互联网网站场景中,OpenID也可以是一个简单而廉价(免费)的选择。一级身份验证系统和更细粒度的角色建模也可以选择