#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.