Ошибка маршалинга при использовании OPENSAML2 в среде сервлетов (веб-сервер Tomcat)

#java #servlets #single-sign-on #saml #opensaml

#java #сервлеты #единый вход #saml #opensaml

Вопрос:

Я пытаюсь настроить своего поставщика услуг с использованием библиотек OpenSaml2. Я пытаюсь настроить сервлет, который будет принимать HttpRequest из браузера пользователя и на основе параметров запроса я хочу создать пакет запроса аутентификации SAML.

Я могу создать пакет SAML, однако я хочу, чтобы Base64 кодировал SAML, чтобы я мог перенаправить пользовательский браузер на сервер поставщика удостоверений. Для этого я пытаюсь маршалировать запрос аутентификации SAML, используя ‘org.opensaml.saml2.core.impl.AuthnRequestMarshaller#маршалл (AuthnRequest)’.

Это отлично работает, когда я пытаюсь это сделать вне среды веб-сервера (автономное JAVA-приложение). Однако, когда я запускаю его как компонент сервлета, я получаю сообщение об ошибке «Нет маршаллера, доступного для {urn:oasis:names:tc:SAML:2.0:assertion}Эмитента, дочернего элемента {urn:oasis:names:tc:SAML:2.0:protocol}AuthnRequest», где эмитент — этокомпонент объекта AuthnRequest.

Я использую веб-сервер Tomcat 5.5.34. Было бы неплохо, если бы кто-нибудь помог мне разобраться, что здесь происходит. Это помогло бы и другим, пытающимся написать своих собственных поставщиков услуг. На удивление, для этого доступно очень мало документации.

Спасибо, Kaustubh

Ответ №1:

Вам необходимо иметь следующие банки внутри общего / одобренного каталога Tomcat..

  • resolver-2.9.1.jar
  • serializer-2.9.1.jar
  • xalan-2.7.1.jar
  • xercesImpl-2.9.1.jar
  • xml-apis-2.9.1.jar

Вот пример поставщика услуг SAML2 [также включает пример войны].

Ответ №2:

Ответ Прабата точен. Я столкнулся с той же проблемой и решил ее, одобрив xalan и xerces в Sun iJDK. Ознакомьтесь с официальным руководством с сайта Shibboleth. Посмотрите в разделе «Установка библиотеки» требования к развертыванию OpenSAML.