Tomcat 9 DIGEST with JDBCRealm - 只接受摘要,不接受密码



新安装的 tomcat 9 - 并将应用程序从 tomcat 8 迁移到 tomcat 9。

要验证我的配置,请将JDBCRealm与mysql数据库一起使用。下面的配置在 tomcat 8 上运行得很好,但在 tomcat 9 上只直接接受密码摘要,而不是直接接受"人类"密码(摘要存储在表中tomcat_users),而不是通常的密码。因此,当在FORM登录页面中提交人类可读密码时,摘要算法MD5似乎不会在这里执行。

服务器内部的配置.xml 是

<Realm className="org.apache.catalina.realm.JDBCRealm" connectionName=“..." connectionPassword=“..." connectionURL="jdbc:mysql://127.0.0.1:3306/TOMSCHEMA" digest="MD5" driverName="org.gjt.mm.mysql.Driver" roleNameCol="role_name" userCredCol="password" userNameCol="user_name" userRoleTable="tomcat_users_roles" userTable="tomcat_users"/>

对于一个应用程序,身份验证方法是 FORM,对于另一个应用程序内的相应 API,身份验证方法是 DIGEST。两个应用在交叉上下文中相互查看。应用程序的 Web .xml包含:

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>NAME</realm-name>
    <form-login-config>
        <form-login-page>/WEB-INF/security/protected/login.jsp</form-login-page>
        <form-error-page>/WEB-INF/security/protected/error.jsp</form-error-page>
    </form-login-config>
</login-config>

这里可能出了什么问题?这一切都非常"标准"...为了再次使用DIGEST进行FORM身份验证页面,我做了什么shell,就像我对tomcat 8一样使用DIGEST输入人类密码?

提前非常感谢

问候

现在您需要在服务器中添加.xml额外的行以符合旧的消化方法:

     <Realm className="org.apache.catalina.realm.JDBCRealm"
        driverName="org.apache.derby.jdbc.EmbeddedDriver"
        connectionURL="jdbc:derby:/tomcat/db/zzz;create=false"
        connectionName="zzz"
        connectionPassword="zzz"
        userTable="login"
        userNameCol="login"
        userCredCol="passwd"
        userRoleTable="roles"
        roleNameCol="role"
      >
        <CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler"
          algorithm="MD5"
          iterations="1"
          saltlenght="0"
        />
      </Realm>

相关内容

  • 没有找到相关文章

最新更新