首页 > 代码库 > Tomcat 保护资源

Tomcat 保护资源

最近做了个项目,是在之前的adapter上面,做个功能维护的,也就是简单的CRUD,但是问题来了,这个功能没有做权限,也没有做登录,这个放在网络上就是裸奔啊.后来想到了可以借用tomcat的Realm做个认证,反正使用的人也不多,也就是几个人去做下调整.

现在说怎么使用Realm吧

在web.xml中,添加

<security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected Resource</web-resource-name>
            <url-pattern>/management/*</url-pattern>
        </web-resource-collection>

        <auth-constraint>
            <role-name>toptown</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>UserDatabase</realm-name>
    </login-config>

    <security-role>
        <role-name>toptown</role-name>
    </security-role>

这个就不多说了,就是访问的url 匹配management/*,那么是需要 toptown这个role,使用Basic认证.注意

<login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>UserDatabase</realm-name>
    </login-config>

这里使用的real-name是 UserDatabase,

     <auth-constraint>
            <role-name>toptown</role-name>
        </auth-constraint>

    <security-role>
        <role-name>toptown</role-name>
    </security-role>

的role-name需要一致.

然后配置

tomcat/conf/tomcat-user.xml 添加一个role,和user,并指定user的role.

web.xml的role必须是这里定义的一个,并且至少有一个用户使用了该role,否则web.xml的配置就没用了,

<role rolename="toptown"/>
<user username="toptown" password="t0pt0wn"  roles="toptown"/>

然后配置tomcat/conf/server.xml

将如下的配置开启

 <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>

这里的UserDatabase与web.xml指定需要一致.

然后重启tomcat后,访问指定的url,发现需要弹出登陆窗口.输入密码后即可访问了.

这样对一些简单的应用,如果不需要复杂的权限,但是需要一些简单的登陆操作,可以使用这种方式.

Tomcat 保护资源