2

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

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

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

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

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

4

1 回答 1

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 上找到更详细的示例:链接

于 2014-02-19T09:00:35.757 回答