如何解密从Shibboleth IdP收到的SAMLResponse

时间:2014-02-19 08:39:36

标签: java encryption shibboleth opensaml service-provider

我是一名大学生,试图在java中为WebSSO实现服务提供者插件。我使用Shibboleth IdP作为身份提供者。我已经能够将身份验证请求发送到IdP,并通过servlet成功接收来自IdP的响应。我尝试解码响应,并能够获得XMLObject。现在的问题是响应是加密的。所以当我使用时

Assertion assertion = response.getAssertions().get(0);

它基本上返回null。但是当我使用

Assertion assertion = response.getEncryptedAssertions().get(0);

它不是空的。所以它基本上意味着响应是加密的。现在我不知道如何解密SAMLReponse的流程。任何指针,代码或建议都是受欢迎的。

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容(将yourCredential替换为您的Credential对象):

StaticKeyInfoCredentialResolver keyresolver =
  new StaticKeyInfoCredentialResolver(yourCredential);

Decrypter samlDecrypter = new Decrypter(null, keyresolver, new InlineEncryptedKeyResolver());

Assertion assertion = samlDecrypter.decrypt(response.getEncryptedAssertions().get(0));

如果您的场景更复杂,可以在shibboleth的wiki上找到更详细的示例:Link