【问题标题】:java.lang.SecurityException AWSCredentialsProvider Signer Information Does Not Matchjava.lang.SecurityException AWSCredentialsProvider 签名者信息不匹配
【发布时间】:2021-04-01 18:57:51
【问题描述】:

我正在使用 2 个 Amazon 提供的库:redshift-jdbc42-1.2.27.1051aws-java-sdk-core-1.11.600。两个库都在包com.amazonaws.auth 下定义了一个类AWSCredentialsProvider。当我尝试使用我的应用程序时,我得到了这个异常:

Caused by: java.lang.SecurityException: class "com.amazonaws.auth.AWSCredentialsProvider"'s signer information does not match signer information of other classes in the same package

我不确定如何解决这个问题。任何帮助将不胜感激!

【问题讨论】:

    标签: java aws-sdk


    【解决方案1】:

    我在 Amazon 的 Redshift JDBC 驱动程序文档中发现,他们说:

    如果您将 Amazon Redshift JDBC 驱动程序用于数据库 身份验证,您必须具有 AWS SDK for Java 1.11.118 或更高版本 你的 Java 类路径。如果您没有安装适用于 Java 的 AWS 开发工具包, 您可以使用包含 AWS 开发工具包的驱动程序。

    问题是因为我现在拥有两个库都提供的 AWS 开发工具包组件。现在,我不需要与驱动程序一起打包的 AWS 开发工具包,因为我可以从 AWS S3 开发工具包中使用它。事实上,Amazon 鼓励开发人员使用 Redshift JDBC 驱动程序,而无需预先打包 SDK:

    重要

    我们强烈建议使用 Amazon Redshift JDBC 驱动程序 尽可能不包含 AWS 开发工具包

    如果您遇到此问题并从 Maven 下载依赖项,您可以在此处找到非 aws-sdk 驱动程序:https://mvnrepository.com/artifact/com.amazon.redshift/redshift-jdbc42-no-awssdk

    【讨论】:

      【解决方案2】:

      您可以使用 Athena 的 jdbc jar 文件中提到的相同 aws-java-sdk-core-1.11.***.jar。要查找athena的sdk版本,解压AthenaJDBC42.jar文件,可以在pom文件\AthenaJDBC42\META-INF\maven\com.amazonaws\aws-java-sdk-core\pom.properties中找到版本。

      #Generated by Maven
      #Tue Jun 02 12:03:54 IST 2020
      **version=1.11.793**
      groupId=com.amazonaws
      artifactId=aws-java-sdk-core
      

      在连接到 S3 存储桶时使用相同版本的 aws-java-sdk-core-1.11.793.jar 可以解决该问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-14
        • 1970-01-01
        • 1970-01-01
        • 2012-02-11
        • 1970-01-01
        • 2011-02-22
        • 1970-01-01
        相关资源
        最近更新 更多