Tomcat Digest与Manager WebApp

时间:2010-06-05 02:23:14

标签: tomcat md5 digest

我正在尝试为tomcat管理器应用程序设置摘要密码。

我有

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase" digest="MD5"/>
在我的tomcat server.xml中,

将管理器Web应用程序的web.xml更改为使用摘要,并将域名更改为TESTING:

<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>TESTING</realm-name>
  </login-config>

然后我使用包含的bat文件生成md5哈希:

C:\tomcat6\bin>digest.bat -a MD5 tomcat:TESTING:testor
tomcat:TESTING:testor:1926e50988667dbd5deda9df02b82f28

然后我在tomcat-users.xml中有一个用户使用该消化的哈希作为密码:

<!-- testor -->
  <user username="tomcat" password="1926e50988667dbd5deda9df02b82f28" roles="manager"/>

我还修改了401.jsp页面,使用摘要和TESTING作为领域名称。

我启动了网络应用,转到http://localhost:8080/manager/html,系统会显示标准表单。以用户身份输入 tomcat ,以及 testor 作为密码,我点击输入只获得401.我当然会再次尝试获得401.

我可能最终会使用基于SSL的BASIC身份验证,因为据我所知,ant无法进行摘要。

但无论如何要做到这一点?

5 个答案:

答案 0 :(得分:2)

我尝试了KiaMorot对Tomcat 8.0.32的回答,但它没有用。当我添加选项&#34; -s 0&#34; (盐长度为零)生成消化密码时:

sudo /opt/apache-tomcat-8.0.32/bin/digest.sh -s 0 -a MD5&#39;开发者:UserDatabase:我的明文密码&#39;

在我的命令引用中,我省略了我的明文密码,并将其替换为字符串&#34;我的明文密码&#34;。请保留单引号,否则shell将解释您密码中的特殊字符。

您可以按如下方式检查是否省略了-s选项。如果我在没有-s选项的情况下多次执行digest.sh命令,虽然每次重复的命令行都相同,但我会得到不同的结果。

答案 1 :(得分:1)

以下适用于我:

digest.sh -a MD5 tomcat:UserDatabase:testor

答案 2 :(得分:1)

我相信你错过了server.xml中定义资源名称的行。

 <Resource
    auth="Container"
    description="User database that can be updated and saved"
    factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
    name="UserDatabase"  #<--------------NOTE
    pathname="conf/tomcat-users.xml"
    type="org.apache.catalina.UserDatabase"/>

来自name定义的属性<Resource>的值必须与resourceName定义中的属性<Realm>的值匹配,例如

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
   resourceName="UserDatabase"  #<------------NOTE
   digest="MD5"/>

这必须与<realm-name>中的web.xml配置相匹配,例如

<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>UserDatabase</realm-name> #<------------NOTE
</login-config>

不要忘记按如下方式生成密码:

  

C:\ tomcat6 \ bin&gt; digest.bat -a MD5 tomcat:UserDatabase:testor

如果满足所有这些要求,您的设置应该像我的情况一样完美无缺。

请注意,对于tomcat7和tomcat8 MD5,因为摘要算法是必须

答案 3 :(得分:0)

一切都很好。但是你用什么路径来更新web.xml?它应该是/webapps/manager/WEB-INF/web.xml这里更改loginconfig。

并确保您使用的是什么版本导致8.0.26不是生成md5密码的稳定版本。

答案 4 :(得分:0)

1)生成密码: /bin>digest.bat -s 0 -a sha-256

实施例: /bin>digest.bat -s 0 -a sha-256 admin

使用的密码是: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

*重要提示:您必须使用“-s 0”(盐0),否则无效。

2)将密码粘贴到tomcat-users.xml文件中。

示例:

<!-- for password “admin” -->
<user username="tomcat" password="8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" roles="manager-gui,manager,admin"></user>

3)配置server.xml以使用SHA-256摘要基于哈希的密码:

                   

4)将您的web.xml配置为使用“DIGEST”密码并更新RealmName以匹配上述(在HTMLManager部分中)

 <catalina_home>/webapps/manager\WEB-INF\web.xml

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

Full context:
  <servlet>
    <servlet-name>HTMLManager</servlet-name>
    <servlet-class>org.apache.catalina.manager.HTMLManagerServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>

… SNIPPED_FOR_BREVITY ...   

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

    <multipart-config>
      <!-- 50MB max -->
      <max-file-size>52428800</max-file-size>
      <max-request-size>52428800</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>
  </servlet>