2011-09-29 55 views
1

我正在嘗試使用OpenSAML2庫設置我的服務提供者。我試圖設置一個servlet,它將接受來自用戶瀏覽器的HttpRequest,並基於請求參數創建一個SAML認證請求包。在Servlet環境(Tomcat Web服務器)中使用OPENSAML2時發生編組錯誤

我能夠創建SAML數據包,但是我希望Base64對SAML進行編碼,以便我可以將用戶瀏覽器重定向到身份提供商服務器。爲了做到這一點,我試圖使用'org.opensaml.saml2.core.impl.AuthnRequestMarshaller#marshall(AuthnRequest)'編組SAML身份驗證請求。

當我在Web服務器環境(獨立JAVA應用程序)之外嘗試它時,此工作正常。但是,當我將它作爲servlet組件運行時,出現一個錯誤,提示「沒有marshaller可用於{urn:oasis:names:tc:SAML:2.0:assertion}發行人,{urn:oasis:names:tc:SAML:2.0 :protocol} AuthnRequest「,其中Issuer是AuthnRequest對象的組件。

我使用的是Tomcat 5.5.34 webserver。如果有人能幫我弄清楚這裏發生了什麼,那會很好。這將有助於其他人嘗試編寫自己的服務提供商。令人驚訝的是非常少的文檔可用於此。

感謝, Kaustubh

回答

2

你需要有Tomcat的common/endorsed目錄內的下列jar ..

  • 解析器-2.9.1.jar
  • 串行-2.9.1.jar
  • 的Xalan-2.7.1.jar
  • xercesImpl-2.9.1.jar
  • XML的API-2.9.1.jar

Here是SAML2服務提供者[也包含示例WAR]的示例。

0

Prabath的答案是在點上。我遇到了同樣的問題,並通過在Sun iJDK中批准xalan和xerces來解決此問題。查看Shibboleth site官方指南。查看「安裝庫」下的openSAML部署要求。

相關問題