Java 解密Saml令牌时获取错误

Java 解密Saml令牌时获取错误,java,spring-security,saml-2.0,adfs2.0,spring-saml,Java,Spring Security,Saml 2.0,Adfs2.0,Spring Saml,我在解密saml令牌时出错。但是,此问题并不一致,它在重新启动服务器后工作。直到昨晚它还正常工作:( 早些时候,我得到了无效密钥大小错误,我在 但我不确定这是否会对美国安全政策法产生任何影响 但此解密异常未得到解决且不一致。重新启动服务器后,它将开始工作 在过去的2-3天里,我尝试了所有的方法。我认为问题发生在元数据刷新之后,所以我尝试将下面的属性添加到ResourceBackedMetadataProviderbean中,但没有成功 <property name="parserPool"

我在解密saml令牌时出错。但是,此问题并不一致,它在重新启动服务器后工作。直到昨晚它还正常工作:(

早些时候,我得到了无效密钥大小错误,我在 但我不确定这是否会对美国安全政策法产生任何影响

但此解密异常未得到解决且不一致。重新启动服务器后,它将开始工作

在过去的2-3天里,我尝试了所有的方法。我认为问题发生在元数据刷新之后,所以我尝试将下面的属性添加到ResourceBackedMetadataProviderbean中,但没有成功

<property name="parserPool" ref="parserPool"/>
<property name="minRefreshDelay" value="120000"/>
<property name="maxRefreshDelay" value="300000"/>


然后我调试WebsProfileConsumerImpl.java代码,认为这可能是与此相关的问题,所以我签出了最新的代码并创建了新的jar并添加到我的项目中,但运气不佳。

在花了一周的时间调试和谷歌搜索之后,我决定用一点小技巧解决这个问题

<property name="parserPool" ref="parserPool"/>
<property name="minRefreshDelay" value="120000"/>
<property name="maxRefreshDelay" value="300000"/>
我从gitHub Repository的Master分支签出Spring Saml源代码,构建jar并将其导入到我的项目中。我认为这个问题与我的类似,所以我尝试使用最新的代码,但没有成功

<property name="parserPool" ref="parserPool"/>
<property name="minRefreshDelay" value="120000"/>
<property name="maxRefreshDelay" value="300000"/>
因此,我决定调试xmlTooling.jar代码并找到确切的故障点,然后在
xmlchipher.java
中用下面的代码重写下面的方法
decryptKey(EncryptedKey EncryptedKey,String algorithm)

Cipher c = constructCipher(encryptedKey.getEncryptionMethod()
                    .getAlgorithm(), encryptedKey.getEncryptionMethod()
                    .getDigestAlgorithm());

Instead of calling 
    c.init(4, key, oaepParameters);
used below code and removed if/else block
    c.init(4, key);
您可以从中签出自定义jar

您需要在pom.xml文件中用下面的行更新saml依赖项,以使用此自定义jar

<dependency>
    <groupId>org.springframework.security.extensions</groupId>
    <artifactId>spring-security-saml2-core</artifactId>
    <version>1.0.1.RELEASE</version>

    <exclusions>
            <exclusion>
                    <artifactId>xmlsec</artifactId>
                    <groupId>org.apache.santuario</groupId>
            </exclusion>
    </exclusions>
</dependency>

<dependency>
    <artifactId>xmlsec</artifactId>
    <groupId>org.apache.santuario</groupId>
    <version>1.5.6-custom</version>
</dependency>

org.springframework.security.extensions
spring-security-saml2-core
1.0.1.1发布
xmlsec
org.apache.santuario
xmlsec
org.apache.santuario
1.5.6-定制
如果有人找到更好的解决方案,请告诉我