我正在尝试为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无法进行摘要。
但无论如何要做到这一点?
答案 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>