2017-09-01 16 views
0

エラー使用:SAMLアサーション復号Javaコードに

Exception in thread "main" org.opensaml.xml.io.UnmarshallingException: the assertion does not appear to be encrypted 
    at AssertionDecrypter.unmarshallEncryptedAssertion(AssertionDecrypter.java:162) 
    at AssertionDecrypter.decryptAssertion(AssertionDecrypter.java:119) 
    at AssertionDecrypter.<init>(AssertionDecrypter.java:67) 
    at Saml2AssertionEncoding.main(Saml2AssertionEncoding.java:112) 
Caused by: java.lang.ClassCastException: org.opensaml.saml1.core.impl.ResponseImpl cannot be cast to org.opensaml.saml2.core.EncryptedAssertion 
    at AssertionDecrypter.unmarshallEncryptedAssertion(AssertionDecrypter.java:157) 
    ... 3 more 

私のJavaコード

enter image description here

マイポンポン

<dependency> 
     <groupId>org.opensaml</groupId> 
     <artifactId>opensaml-core</artifactId> 
     <version>3.1.1</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.santuario</groupId> 
     <artifactId>xmlsec</artifactId> 
     <version>2.0.8</version> 
    </dependency> 

    <dependency> 
     <groupId>org.opensaml</groupId> 
     <artifactId>opensaml</artifactId> 
     <version>2.6.4</version> 
    </dependency> 
    <dependency> 
     <groupId>org.opensaml</groupId> 
     <artifactId>opensaml-saml-impl</artifactId> 
     <version>3.3.0</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <!-- <groupId>org.opensaml</groupId> <artifactId>xmltooling</artifactId> 
      <version>1.3.1</version> 
     <groupId>org.opensaml</groupId> 
     <artifactId>xmltooling</artifactId> 
     <version>1.4.4</version> --> 
      <groupId>org.opensaml</groupId> 
      <artifactId>xmltooling</artifactId> 
      <version>1.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.jcabi</groupId> 
     <artifactId>jcabi-aspects</artifactId> 
     <version>0.22</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>1.8.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.jcabi</groupId> 
     <artifactId>jcabi-xml</artifactId> 
     <version>0.16.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-nop</artifactId> 
     <version>1.7.5</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.opensaml</groupId> 
     <artifactId>openws</artifactId> 
     <version>1.4.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.opensaml</groupId> 
     <artifactId>opensaml</artifactId> 
     <version>2.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.1.0.RELEASE</version> 
    </dependency> 
</dependencies> 
+0

**原因:java.lang.ClassCastException:org.opensaml.saml1.core.impl.ResponseImplをorg.opensaml.saml2.coreにキャストできません.EncryptedAssertion **が根本原因です。そして、コードそのものに関連する部分をリンクしないでください。 – nullpointer

答えて

0

をあなたがencryをデバッグする必要があると思われますpted XML要素。 document.getDocumentElements()の内容が正しいXMLであることを確認できますか?

私はそれがnullか空であると思います。上記の関数から生のXML要素を正常に取得した後、XMLをプレーンテキストに復号化することができます。たとえば、このサイトSAML Assertion Decryption - SAML Decrypt XML Tool - Decrypt SAML Response

0

[OK]を2つ間違っているようです。

あなたが誤ってレスポンスオブジェクトを解読しようとしていて、含まれているアサーションではないようです。あなたが唯一のアサーションが応答して送信されていることを知っていると仮定すると

Response response = unmarshaller.unmarshall(...); 
return (EncryptedAssertion) response.getEncryptedAssertions().get(0) 

を行う必要があります。

SAML 1の応答メッセージが表示され、SAML 2が表示されていないようです。 SAML 1の専門家ではありませんが、暗号化アサーションはサポートされていないようです。

最初にメッセージを送信してプロトコルバージョンを並べ替えてから、レスポンスオブジェクトではなく暗号化されたアサーションを返すようにしてください。

関連する問題