Tomcat摘要与Manager WebApp

Tomcat摘要与Manager WebApp,tomcat,md5,digest,Tomcat,Md5,Digest,我正在尝试为tomcat manager应用程序设置摘要密码 我有 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" digest="MD5"/> 然后,我在tomcat-users.xml中找到了一个用户,并将该摘要哈希作为密码: <!-- testor --> <user username="tomc

我正在尝试为tomcat manager应用程序设置摘要密码

我有

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase" digest="MD5"/>
然后,我在tomcat-users.xml中找到了一个用户,并将该摘要哈希作为密码:

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

我还修改了401.jsp页面,使用摘要和测试作为域名

我启动web应用程序,转到并收到标准表单的提示。输入tomcat作为用户,输入testor作为密码,我按enter键只得到一个401。当然,我会一次又一次地申请401

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


但到底有没有办法做到这一点

以下内容对我有用:

digest.sh -a MD5 tomcat:UserDatabase:testor

我认为您缺少了定义资源名称的
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"/>
这必须与
web.xml
中的
配置相匹配,例如

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

消化
UserDatabase#digest.bat-一个MD5 tomcat:UserDatabase:testor

如果所有这些都完成了,你的设置应该像我的情况一样完美无瑕


请注意,对于tomcat7和tomcat8
MD5
as摘要算法是一个必须的

一切正常。但是,您使用什么路径更新web.xml?此处应为/webapps/manager/WEB-INF/WEB.xml更改登录配置


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

我用Tomcat 8.0.32尝试了KiaMorot的答案,但没有成功。当我在生成摘要密码时添加“-s 0”(salt lenth zero)选项时,它确实起了作用:

<!-- testor -->
  <user username="tomcat" password="1926e50988667dbd5deda9df02b82f28" roles="manager"/>
sudo/opt/apache-tomcat-8.0.32/bin/digest.sh-s0-aMD5“开发者:用户数据库:我的明文密码”

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

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

1)生成密码: /bin>digest.bat-s0-asha-256

例如: /bin>digest.bat-s0-asha-256管理员

要使用的密码是: 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配置为使用“摘要”密码,并更新RealmName以匹配上述内容(在HTMLManager部分)

/webapps/manager\WEB-INF\WEB.xml
消化
用户数据库
完整背景:
HTMLManager
org.apache.catalina.manager.HTMLManagerServlet
调试
2.
…为了简洁起见剪掉了。。。
消化
用户数据库
52428800
52428800
0

感谢您提供有关-s 0(Salt 0)的说明。此帮助EDI能够使其与SHA-256配合使用。通过此步骤(缺少此步骤),配置您的web.xml以使用“摘要”密码,并更新RealmName以匹配上述内容(在HTMLManager部分)/webapps/manager\WEB-INF\WEB.xml完整上下文:HTMLManager org.apache.catalina.manager.HTMLManager.servlet…为了简洁起见剪掉了…DIGEST UserDatabase@KiaMorot你能解释为什么必须使用MD5吗?@atom88你能解释一下你是如何让SHA-256工作的吗?我能让MD5工作Tomcat 8.5.32中的king。但当我更改为SHA-256时,它不起作用。两者之间的唯一更改是1.server.xml:
(从“MD5”更改);2.生成密码:
digest.sh-s0-a MD5 uname:UserDatabase:password
VS
digest.sh-s0-a SHA-256 uname:UserDatabase:password
;3.更新conf/tomcat-users.xml中的
password
字段以获取用户:uname如果问题得到解决,您可以接受答案吗?!?!
<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>UserDatabase</realm-name> #<------------NOTE
</login-config>
<!-- for password “admin” -->
<user username="tomcat" password="8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" roles="manager-gui,manager,admin"></user>
 <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>