2017-01-09 9 views
2

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

Супер простым решением было бы создать «черный список» полей, которые не должны регистрироваться. Проблема с этим - легко пропустить поле в постоянно растущем приложении.

Что я хочу сделать, это выяснить способ «белых списков» полей, которые должны быть зарегистрированы.

Это кажется сложным, но я не могу быть единственным человеком, который когда-либо нуждался в этом.

+0

Итак, вы хотите зарегистрировать запрос перед его зашифровкой и удалением чувствительных полей? Не могли бы вы аннотировать каждое поле, чтобы скрыть, а затем использовать собственный сериализатор? – pedrofb

+0

Значения полей зашифрованы, а не весь запрос, поэтому ведение журнала обычно происходит после того, как поля уже зашифрованы зашифрованными. Мы не можем аннотировать классы, потому что мы получаем wsdl от третьего лица. Каждый раз, когда мы восстанавливаем классы, нам нужно будет вернуться назад и добавить аннотации регистрации в классы снова. –

+0

Тогда белый список кажется приемлемым выбором. Черный список опасен, потому что сложно построить набор слов, и поставщик wsdl может изменять имена, которые могут пропускать элемент управления. Может быть, вы можете установить перехватчик после шифрования, чтобы оставить пустым поля, не входящие в белый список. – pedrofb

ответ

0

Я написал tool, который разрешает удаление анонимных/поддеревьев на основе подмножества выражений XPath. Я думаю, что более продвинутый подход будет использовать SAX-фильтр.