gpt4 book ai didi

tomcat - 如何在 tomcat6 中使用带有 BASIC 身份验证的散列密码?

转载 作者:行者123 更新时间:2023-11-28 22:03:51 31 4
gpt4 key购买 nike

我想在 tomcat-users.xml 中使用带有 BASIC 身份验证的散列密码。我将 digest="SHA"添加到领域定义中。 UserDatabase 部分在 $TOMCAT_HOME/conf/server.xml 中定义如下:

<GlobalNamingResources>
<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>
...
<Engine>
...
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
digest="SHA"
resourceName="UserDatabase" />
...
</Engine>

但是在重启后tomcat仍然将所有在$TOMCAT_HOME/conf/tomcat-users.xml中定义的密码视为纯文本密码。

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<user username="guest" password="e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4" roles="role1" />
</tomcat-users>

即我可以使用用户名/密码 guest/e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4 登录,但不能使用 guest/secret 登录。

请指出我做错了什么?

最佳答案

您的解决方案应该适用于 Tomcat 7,但从 Tomcat 8 开始,您必须在 Realm 中指定 CredentialHandler 部分,如下所示:

Tomcat 6...7:

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
digest="sha"
resourceName="UserDatabase" />

Tomcat 8:

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase">
<CredentialHandler
className="org.apache.catalina.realm.MessageDigestCredentialHandler"
algorithm="sha" />
</Realm>

注意:有关更安全的散列,如 PBKDF2WithHmacSHA512,请参阅 this answer .

关于tomcat - 如何在 tomcat6 中使用带有 BASIC 身份验证的散列密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299286/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com