1

我正在尝试使用 OpenSAML2 库设置我的服务提供者。我正在尝试设置一个 servlet,它将接受来自用户浏览器的 HttpRequest,并根据我想创建一个 SAML 身份验证请求数据包的请求参数。

我能够创建 SAML 数据包,但是我想对 SAML 进行 Base64 编码,以便我可以将用户浏览器重定向到身份提供程序服务器。为此,我尝试使用“org.opensaml.saml2.core.impl.AuthnRequestMarshaller#marshall(AuthnRequest)”来编组 SAML 身份验证请求。

当我在 Web 服务器环境(独立的 JAVA 应用程序)之外尝试它时,它工作得很好。但是,当我将它作为 servlet 组件运行时,我收到一条错误消息:“No marshaller available for {urn:oasis:names:tc:SAML:2.0:assertion}Issuer, child of {urn:oasis:names:tc:SAML:2.0 :protocol}AuthnRequest”,其中 Issuer 是 AuthnRequest 对象的一个​​组件。

我正在使用 Tomcat 5.5.34 网络服务器。如果有人能帮我弄清楚这里发生了什么,那就太好了。它也会帮助其他人尝试编写自己的服务提供者。令人惊讶的是,可用于此的文档非常少。

谢谢,考斯图布

4

2 回答 2

2

您需要在Tomcat common/endorsed 目录中有以下jars ..

  • 解析器-2.9.1.jar
  • 序列化程序-2.9.1.jar
  • xalan-2.7.1.jar
  • xercesImpl-2.9.1.jar
  • xml-apis-2.9.1.jar

是 SAML2 服务提供者的示例 [还包括示例 WAR]。

于 2011-10-01T04:20:13.060 回答
0

Prabath 的回答很到位。我遇到了同样的问题,并通过在 Sun iJDK 中支持 xalan 和 xerces 解决了这个问题。查看Shibboleth 网站的官方指南。在“安装库”下查看 openSAML 部署要求。

于 2012-08-24T13:27:42.310 回答