как применить XML-подпись к исходящим сообщениям SOAP - PullRequest
4 голосов
/ 17 августа 2010

Я сгенерировал заглушки и привязки, используя cxf codegen. Все работает нормально, однако сервер по-прежнему отклоняет сообщение из-за проблем безопасности. В основном у меня есть 3 уровня, чтобы позаботиться о каждом из которых требуются сертификаты (которые у меня есть).

  1. SSL-шифрование на канале
  2. подпись сертификата на конкретном элементе данных
  3. сертификат XML Подпись на данных полезной нагрузки.

Чтобы немного приправить суп, я не имею полного контроля над действительной подписью и сертификатами. По сути, мне нужно извлечь правильные данные, отправить их на подпись и повторно ввести подписанные данные в транзакцию.

Сертификаты, к которым у меня есть доступ, находятся в хранилище сертификатов Windows на локальном компьютере (SSL и некоторая подпись)

Читая документацию, фреймворк, по-видимому, сильно зависит от конфигурации voodoo magic. К сожалению, большинство ссылок, которые я нашел, тратят много времени на подробное объяснение того, как генерировать сертификаты, но довольно скудно от того, как мы действительно их используем.

Используя CXF, как мне этого добиться?

Как получить доступ к соответствующим хукам и с помощью какого кода я могу вставить подпись в сообщение?

Спасибо

1 Ответ

2 голосов
/ 29 марта 2011

Оказалось, что CXF обладает всеми возможностями для создания правильной подписи с самого начала. Наша проблема заключалась в том, что принимающая сторона подписи не принимает эту стандартную подпись. Мы должны были создать собственную систему сигнатур, которая обеспечила бы все мелкие и эзотерические фокусы, требуемые для плохой реализации сервера. Префикс пространства имен должен был быть установлен на очень конкретное значение независимо от объявления пространства имен транзакции. Пробел иногда приходилось урезать, иногда нет, и т.д. ...

Поэтому мы создали перехватчик и внедрили его в список out-перехватчиков, вот и все. На самом деле это было немного сложнее, потому что они настаивали на том, чтобы мыльная транзакция была подписана сертификатом, расположенным на USB-ключе конечного пользователя. Наша система централизует все интерфейсы, поэтому нам пришлось немного потренироваться, чтобы все заработало, но в итоге все хорошо.

Я думал, что цель использования стандарта состояла в том, чтобы предоставить стандартное средство для выполнения действий, ну ... Некоторые люди, кажется, думают, что они лучшие эксперты, чем эксперты, которые создают стандарт и настаивают на добавлении своего собственного маринада к баночка. кто-то должен сказать им, что добавление соленых огурцов в малиновое варенье не улучшает его вкус.

...