Что означает «wsse: InvalidSecurity»? - PullRequest
1 голос
/ 07 января 2009
An error was discovered processing the <wsse:Security> header

Это вопрос WS-Security, кстати ...

Я не вижу ничего плохого в моей конечной точке WS (кроме того факта, что она работает на двигателе TIBCO BW!). Есть ли у кого-то «априор» с такой ошибкой? Я понимаю, что заголовок WS-Security может быть поврежден в любом месте, предположительно, чтобы получить эту ошибку, но есть НЕКОТОРЫЕ 90% -ные процентили на какую-то распространенную ошибку.

Вот защищенный SOAP - клиент является автономной java (WSS4J 1.5.0), выполняющей подписывание только на этом этапе.

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header>
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
            <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-20237898">
                <ds:SignedInfo>
                    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                    <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
                    <ds:Reference URI="#id-18414151">
                        <ds:Transforms>
                            <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                        </ds:Transforms>
                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                        <ds:DigestValue>DvjhvAtEVxwntL/RjMCNhId57cg=</ds:DigestValue>
                    </ds:Reference>
                </ds:SignedInfo>
                <ds:SignatureValue>
YbOB3FRduCr5rutpIvch9sDZfZToy3pjm+Kyl/Oqz6cAPqMVKqvKBb4P7ebnzP/3SVjm+PfLqlE5
BGgcT3Vz93apyg+eY1rAIYUs7K1Zt9F5ejMmij6HQpQTGpyM9BUXJi1x5bt9GuMtD0SK939bIIE2
ZUyZ0jPJp/wUhMonskw=
</ds:SignatureValue>
                <ds:KeyInfo Id="KeyId-15734641">
                    <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="STRId-3852606">
                        <ds:X509Data>
                            <ds:X509IssuerSerial>
                                <ds:X509IssuerName>CN=Mark Hesketh,OU=asdf,O=DVA,L=Canberra,ST=ACT,C=AU</ds:X509IssuerName>
                                <ds:X509SerialNumber>1231310305</ds:X509SerialNumber>
                            </ds:X509IssuerSerial>
                        </ds:X509Data>
                    </wsse:SecurityTokenReference>
                </ds:KeyInfo>
            </ds:Signature>
        </wsse:Security>
    </soapenv:Header>
    <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-18414151">
        <message xmlns="http://www.tibco.com/schemas/CertificateWork/Resources/Schema.xsd" text="Sample msg with SHA1 signature"/>
    </soapenv:Body>
</soapenv:Envelope>

1 Ответ

1 голос
/ 12 октября 2009

Ух ты ... если у тебя все еще есть эта проблема, у тебя больше терпения, чем у меня ... но на всякий случай вот мои мысли:

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

Это мое первое предположение, и это всего лишь предположение, не связанное с вашей системой и не пытавшееся делать кучу разных вещей. Если это не сработает, это моя общая логическая цепочка для этого типа ошибки:

  1. Формат - XML ​​правильный по схеме?
  2. Подпись - для подписи нужны три вещи: данные, ключ, набор алгоритмов для ее создания. Проверьте все три - правильны ли данные, верен ли ключ, подходят ли алгоритмы для ключа и как будет обрабатываться сообщение? Кроме того, правильно ли имеются ссылки на ключевые элементы и элементы данных в вашей библиотеке?
  3. Внешние источники информации - в этом случае ваша ключевая информация ссылается на сертификат, который предположительно извлекается откуда-то еще - например, хранилище сертификатов LDAP. Итак ... может ли ваш код добраться до этого внешнего источника, является ли источник данных и сеть доступными из того места, где вы запускаете код? и т.д.
  4. Если PKI - проверка сертификата / доверие - что система должна делать за кулисами, чтобы доверять подписывающему лицу? OCSP проверяет? Поиск в LDAP? Цепочка к доверенному корню? и т. д. Правильно ли работает алгоритм доверия и имеет ли он все, что ему нужно - например, доступ к респонденту OCSP, правильно настроенное хранилище сертификатов и т. д.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...