【问题标题】:Tomcat 8.5 digested authenticationTomcat 8.5 摘要式身份验证
【发布时间】:2017-08-03 09:06:50
【问题描述】:

我正在尝试在 CentOS 7 上的 Tomcat 8.5 上设置摘要式身份验证。我查看/关注了各种文章,包括 - How to use digest authentication in Tomcat 8.5? - 但在执行了所有必需的步骤后,它不起作用。我已经为管理器和主机管理器应用程序设置了这个,但密码永远不会例外,并且 localhost_access 日志报告 401 错误。使用基本身份验证可以访问这些应用程序。

我的 server.xml 是这样配置的:

    <!-- Use the LockOutRealm to prevent attempts to guess user     passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
         <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase">
           <CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="SHA-256" />
         </Realm>
   </Realm>

每个应用程序的 web.xml 已被编辑为:

     <!-- Define the Login Configuration for this Application -->
  <login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>UserDatabase</realm-name>
  </login-config>

密码创建者:

    /opt/tomcat/bin/digest.sh -s 0 -a sha-256 -h org.apache.catalina.realm.MessageDigestCredentialHandler "username":UserDatabase:"password"

tomcat-user.xml 中的密码已经换成这个了。

我还在 server.xml 中检查了以下部分中的“名称”是否与 server.xml 和 web.xml 的 lockoutrealm 部分中定义的匹配

     <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"/>

在进行这些更改后,我还重新启动了 tomcat 服务,我什至重新启动了服务器 - 抓着稻草.....

当我尝试通过浏览器登录时,我不断收到如下提示,如果我取消,我会看到标准的 401 错误屏幕

Browser login box

我知道我一定错过了什么,但我已经做了一段时间了,只是看不到它是什么。

【问题讨论】:

    标签: tomcat authentication


    【解决方案1】:

    我在 MacOS High Sierra 上运行时遇到了同样的问题。 (我最终将部署到 CentOS 7。)短版本,使用 MD5 而不是 SHA。正如https://tomcat.apache.org/tomcat-8.5-doc/realm-howto.html#Digested_Passwords 模糊描述的那样,我可以使用 MD5 获得摘要,如下所示:

    1) 首先,您的 web.xml 文件中定义的 是任意的;它是 server.xml 文件中定义的独立构造。但是,您需要知道它。

    2)显然,在中的server.xml中的元素中设置“algorithm=md5”属性

    3) 为 MD5 运行 digest.sh 时,必须指定“-a md5 -s 0 -i 1”。

    4) 通过摘要命令散列的“密码”必须是 userid:realm-name:password 的串联。这使用 web.xml 中的 值。

    我已尝试使用 SHA-256 执行上述步骤,但没有成功。我最好的猜测是命令行中使用的“提供程序默认值”与内部使用的不同,并且没有记录。 MD5 哈希就是这种情况,Tomcat 文档明确声明使用“-s 0”标志,这不是默认值。

    【讨论】:

    • 非常感谢它完美运行!也适用于服务器正在运行的 Web 应用程序。
    猜你喜欢
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 2013-08-29
    • 1970-01-01
    • 2011-07-09
    • 2023-03-06
    相关资源
    最近更新 更多