如何在 embedded-tomcat 中使用 digest.sh

how to use digest.sh in embedded-tomcat

我知道 $CATALINE_HOME/bin/digest.sh 用于生成可以在 tomcat_users.xml 中使用的散列密码,但是我如何在项目中使用嵌入式 tomcat 时实现相同的行为因为它没有 bin/digest.sh?

更新:

我发现 tomcat 的 RealmBase.java 有一个方法 digest() 与 digest.sh 的作用相同,但是,自 tomcat 9 以来它已被弃用我正在使用 tomcat 9. 有谁知道这个方法的新实现是什么?

digest.sh 用于生成密码哈希。如果您需要生成密码哈希,只需从 Tomcat 的主页下载 tomcat 存档和 运行 脚本。

嵌入式Tomcat没有这个脚本。

处理散列密码的主要方法是CredentialHandler#mutatedigest.sh也使用了这种方法。它将提供的密码转换为其存储形式。

您可以通过多种方式检索 CredentialHandler

  • 来自 Tomcat 对象,使用 tomcat.getEngine().getRealm().getCredentialHandler()。为此,如果不是 运行、
  • ,则需要启动 Realm
  • 从 servlet,通过检索 Globals.CREDENTIAL_HANDLER ("org.apache.catalina.CredentialHandler") servlet 上下文属性。