Java-клиент использует .NET WCF через SSL (WS-Policy не поддерживается) - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть служба .NET 4.0 WCF, размещенная в IIS на Windows Server 2008, которая работает нормально по HTTP. Служба WCF используется третьей стороной, которая использует Appian Process Modeler для настройки клиента WCF (не то, чтобы это было актуально, но я подумал, что упомяну это).

РЕДАКТИРОВАТЬ: Таким образом, тот факт, что они используют Appian Process Modeler, может иметь значение. Это клиент на основе Java, поэтому это означает, что мы пытаемся заставить клиент Java использовать службу .NET WCF с использованием WS-Policy через SSL.

РЕДАКТИРОВАТЬ # 2: так как теперь я знаю, что Java потребляет службу .NET, это исправление, которое я могу сделать на своем конце, чтобы позволить Java использовать мой сервис по SSL, или есть исправление, которое мой клиент можно установить, чтобы позволить их Java-коду использовать службу .NET с использованием WS-Policy?

После перехода от тестирования к нашей производственной среде, когда наш клиент обновляет свою ссылку на службу, чтобы указать на новый производственный URL, он получает следующую ошибку:

Конечная точка BasicHttpBinding_IInterface содержит ссылки на тему WS-Policy, которая еще не поддерживается. Эта конечная точка недоступна для выбора. (APNX-2-4041-003)

При сравнении двух документов WSDL (не-SSL / test, SSL / production) я обнаружил следующие два различия, оба относящиеся к WS-Policy (это ТОЛЬКО два различия, кроме URL, в документе WSDL) :

<wsp:Policy wsu:Id="BasicHttpBinding_IInterface_policy">
    <wsp:ExactlyOne>
      <wsp:All>
        <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
          <wsp:Policy>
            <sp:TransportToken>
              <wsp:Policy>
                <sp:HttpsToken RequireClientCertificate="false"/>
              </wsp:Policy>
            </sp:TransportToken>
            <sp:AlgorithmSuite>
              <wsp:Policy>
                <sp:Basic256/>
              </wsp:Policy>
            </sp:AlgorithmSuite>
            <sp:Layout>
              <wsp:Policy>
                <sp:Strict/>
              </wsp:Policy>
            </sp:Layout>
          </wsp:Policy>
        </sp:TransportBinding>
      </wsp:All>
    </wsp:ExactlyOne>
  </wsp:Policy>

И

<wsp:PolicyReference URI="#BasicHttpBinding_IInterface_policy"/>

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

Итак, мой вопрос: как настроить WCF для ответа по SSL без требований WS-Policy?

Вот конфигурация, которую мы используем на сервере:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="basicHttps">
                <security mode="Transport">
                    <transport clientCredentialType="None" />
                    <message />
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client />
    <services>
      <service name="Namespace.API.IInterface_Implementation">
        <endpoint address=""
                  binding="basicHttpBinding"
                  bindingConfiguration="basicHttps"
                  contract="Namespace.API.Interfaces.IInterface"/>
        <endpoint address="mex"
                  binding="mexHttpsBinding"
                  contract="IMetadataExchange"/>

      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

1 Ответ

1 голос
/ 15 декабря 2011

Согласно Microsoft, это не представляется возможным.

См. здесь и здесь .

Режимы аутентификации и соответствующие префиксыи пространства имен обсуждаются в MSDN .Это может дать вам некоторые дополнительные идеи.

...