Кто-нибудь знает, почему Rampart не может найти токен SAML, сгенерированный собственной службой STS?
У меня есть развертывание Axis2 1.6.2 в Tomcat 7.0.28 с Rampart 1.6.2. Я использую службу Rampart STS для получения токена SAML по умолчанию. Токен, полученный клиентом, является действительным. (Я проверил подписи, профиль SAML и XML с помощью OpenSAML.)
Однако, когда я включаю этот токен в запрос веб-службы, запущенный в том же развертывании Axis2/Rampart, которое сгенерировало токен, Rampart выдает «Токен SAML отсутствует в запросе» (выданный RampartEngine.process()). Используя отдельную реализацию в NetKernel и OpenSAML, у меня нет проблем с доступом и проверкой токена SAML в одном и том же запросе. Эта проблема существует с Axis2/Rampart 1.5.1, когда я впервые попытался выполнить эту задачу.
Кто-нибудь знает, почему Rampart отклоняет собственный токен SAML? Вы нашли способ заставить Rampart принимать собственный токен SAML?
(Я работаю над этой проблемой время от времени больше года; я могу просто бросить и использовать Netkernel и OpenSaml и сделать все это самостоятельно; я теряю много поддержки SOAP, но, по крайней мере, я могу обрабатывать токен SAML ... с большой помощью OpenSAML. Я бы предпочел, чтобы Axis2/Rampart работал!)
У меня может быть частичный ответ на этот вопрос. Следуя исходному коду, я смог отследить «Отсутствие токена SAML» до строки в валидаторе, который проверяет только неподписанные токены SAML. Токены SAML должны быть подписаны. Я считаю, что это причина ошибки, но я не могу собрать модули вала, чтобы проверить это!
ОТВЕТ Я смог, наконец, собрать проект и проверить приведенное выше предположение, и это действительно решило проблему. Я изменил код для обращения как к подписанным, так и к неподписанным токенам. Отправил вопрос JIRA в Rampart и решение и надеюсь, что они решат его. Тем временем я сделал локальную версию Rampart-Core-*.jar для своего сервиса.