3

我正在尝试为 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 作为领域名称。

我启动 Web 应用程序,转到http://localhost:8080/manager/html并使用标准表单进行提示。以用户身份输入tomcat ,密码为testor,我按回车只得到 401。当然,我一次又一次地尝试得到 401。

据我所知,我可能最终会通过 SSL 进行 BASIC 身份验证,因为 ant 无法进行摘要。

但是有没有办法做到这一点?

4

5 回答 5

2

我用 Tomcat 8.0.32 尝试了 KiaMorot 的答案,但没有奏效。当我在生成摘要密码时添加选项“-s 0”(盐长度为零)时,它确实有效:

sudo /opt/apache-tomcat-8.0.32/bin/digest.sh -s 0 -a MD5 '开发者:用户数据库:我的明文密码'

在我的命令的这个引用中,我省略了我的明文密码并将其替换为字符串“我的明文密码”。请保留单引号,否则 shell 会解释密码中的特殊字符。

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

于 2016-04-12T11:17:46.053 回答
1

以下对我有用:

digest.sh -a MD5 tomcat:UserDatabase:testor
于 2010-08-19T19:03:55.587 回答
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>digest.bat -a MD5 tomcat:UserDatabase:testor

如果所有这些都得到满足,那么您的设置应该可以像我的情况一样完美地工作。

请注意,对于 tomcat7 和 tomcat8MD5作为摘要算法是必须的。

于 2015-08-06T08:05:39.883 回答
1

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

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

使用密码为:8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

*重要提示:必须使用“-s 0”(salt 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>
于 2017-06-15T15:53:25.397 回答
0

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

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

于 2015-09-24T19:11:33.010 回答