Ух ты ... если у тебя все еще есть эта проблема, у тебя больше терпения, чем у меня ... но на всякий случай вот мои мысли:
- http://schemas.xmlsoap.org/specs/ws-security/ws-security.htm#ws-security__toc6201567 - предполагает, что это проблема чтения тега.
- Одна вещь, которая бросается в глаза, это то, что я не вижу ссылки, связывающей подпись с ключевой информацией. Конечно, я бы предположил, что элемент KeyInfo описывает сертификат, который использовал закрытый ключ для создания SignatureValue, но я не вижу частичку XML, которая сообщает об этом программному обеспечению. Я не думаю, что включение KeyInfo достаточно, возможно, на него должна быть ссылка.
- Если бы не это, я бы дважды проверил это по схеме и, возможно, по независимому источнику, проверяющему схему. Ошибка на уровне заголовка заставляет меня думать о формате, а не о содержимом.
Это мое первое предположение, и это всего лишь предположение, не связанное с вашей системой и не пытавшееся делать кучу разных вещей. Если это не сработает, это моя общая логическая цепочка для этого типа ошибки:
- Формат - XML правильный по схеме?
- Подпись - для подписи нужны три вещи: данные, ключ, набор алгоритмов для ее создания. Проверьте все три - правильны ли данные, верен ли ключ, подходят ли алгоритмы для ключа и как будет обрабатываться сообщение? Кроме того, правильно ли имеются ссылки на ключевые элементы и элементы данных в вашей библиотеке?
- Внешние источники информации - в этом случае ваша ключевая информация ссылается на сертификат, который предположительно извлекается откуда-то еще - например, хранилище сертификатов LDAP. Итак ... может ли ваш код добраться до этого внешнего источника, является ли источник данных и сеть доступными из того места, где вы запускаете код? и т.д.
- Если PKI - проверка сертификата / доверие - что система должна делать за кулисами, чтобы доверять подписывающему лицу? OCSP проверяет? Поиск в LDAP? Цепочка к доверенному корню? и т. д. Правильно ли работает алгоритм доверия и имеет ли он все, что ему нужно - например, доступ к респонденту OCSP, правильно настроенное хранилище сертификатов и т. д.
Я переупорядочиваю эти шаги, основываясь на своем предположении о том, что означает ошибка. Ошибки не настолько интуитивны, поэтому я часто выполняю все эти шаги на случай, если моя интерпретация ошибки неверна. Кроме того, я могу предотвратить проблему позже ...