【问题标题】:how to use digest.sh in embedded-tomcat如何在嵌入式 tomcat 中使用 digest.sh
【发布时间】:2021-12-07 05:37:54
【问题描述】:

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

更新:

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

【问题讨论】:

    标签: tomcat tomcat9 embedded-tomcat-8 embedded-tomcat


    【解决方案1】:

    处理散列密码的中心方法是CredentialHandler#mutate,这也是digest.sh 使用的方法。它将提供的密码转换为其存储的形式。

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

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

    【讨论】:

      【解决方案2】:

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

      嵌入式 Tomcat 没有此脚本。

      【讨论】:

      • 我有一个使用嵌入式 tomcat 的项目,现在要求加密 tomcat-users.xml 的密码,通过编程我能够使用 tomcat-embed api 设置纯文本密码和另外,如果手动设置哈希密码,我可以使用 org.apache.catalina.realm.MessageDigestCredentialHandler; 类获取,但是是否有任何类似的类可以加密类似于手动执行的 digest.sh 的字符串。
      猜你喜欢
      • 2017-01-22
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 2015-10-30
      相关资源
      最近更新 更多