Visual Studio не может использовать веб-сервис, содержащий политику UsernameToken - PullRequest
2 голосов
/ 06 февраля 2011

Я получаю ошибки при попытке добавить ссылку на веб-сервис в Visual Studio 2010. Веб-сервис реализован на Java с использованием стека JAX-WS / Metro / GlassFish и содержит политику UsernameToken. Вот выдержка из WSDL:

<wsp:Policy
        xmlns:wsp="http://www.w3.org/ns/ws-policy"
        xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        wsu:Id="UsernameToken">
    <sp:SupportingTokens>
        <wsp:Policy>
            <sp:UsernameToken sp:IncludeToken=".../IncludeToken/AlwaysToRecipient" />
        </wsp:Policy>
    </sp:SupportingTokens>
</wsp:Policy>

Когда я пытаюсь добавить ссылку на этот веб-сервис в Visual Studio, я получаю следующие предупреждения:

Custom tool warning:
  The following Policy Assertions were not Imported:
  XPath://wsdl:definitions[@targetNamespace='http://archfirst.org/bfoms/tradingservice.wsdl']/wsdl:binding[@name='TradingWebServicePortBinding']
  Assertions:
    <sp:SupportingTokens xmlns:sp='http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702'>..</sp:SupportingTokens>

Custom tool warning:
  Endpoint 'TradingWebServicePort' at address 'http://localhost:8080/bfoms-javaee/TradingService'
  is not compatible with Silverlight 4. Skipping...

Custom tool warning:
  No endpoints compatible with Silverlight 4 were found. The generated client
  class will not be usable unless endpoint information is provided via the
  constructor.

Почему Visual Studio не может импортировать утверждение?

P.S. Мне удалось импортировать и протестировать веб-сервис с помощью инструмента SoapUI.

1 Ответ

3 голосов
/ 06 февраля 2011

WCF по умолчанию поддерживает только токен имени пользователя для защищенного транспорта = HTTPS (или с безопасностью сообщений, обеспечиваемой сертификатами, но безопасность сообщений не поддерживается Silverlight вообще). Существует способ создать пользовательскую привязку, чтобы разрешить токен имени пользователя для незащищенного транспорта, но allowInsecureTransport , вероятно, не поддерживается Silverlight 4 (я также не нашел его при создании пользовательскогосвязывание).

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

Вы можете попытаться создать прокси-сервис в своем хостинговом приложении.Эта служба будет вызываться приложением Silverlight и будет вызывать службу Java.

...