Является ли basicHttpBinding единственным вариантом для подключения клиента .Net 2.0 к службе WCF? - PullRequest
2 голосов
/ 24 октября 2008

Это продолжение этого вопроса . Я пытаюсь избежать использования метода сертификата x509, так как это делает мой клиент более сложным. Если basicHttpBinding - не единственный вариант, где приведены примеры других методов привязки.

Мои клиенты в .Net 2.0, у меня нет доступа к пространству имен System.ServiceModel, так как оно не появлялось до 3.0.

Обновление: чтобы быть ясно, клиенты: .Net 2.0, веб-сервис: .net3.5 / WCF

Ответы [ 2 ]

3 голосов
/ 24 октября 2008

Проблема не в несоответствии между службами .Net 2.0 и WCF и различными привязками - они (за некоторыми заметными исключениями, которые не должны быть проблемой в вашем случае) очень совместимыми протоколами.

WSE 3.0 (который работает на платформе 2.0 .Net) особенно близок. Вы можете использовать это как с basicHttpBinding, так и с wsHttpBinding и несколькими настройками. Статья Джимми Сковронски здесь и статья MSDN здесь охватывают большинство основ.

Вы также можете кодировать пользовательскую привязку, которая позволит вам преодолеть несколько несовместимостей между WSE и WCF (например, мандат для безопасного транспорта при использовании WCF и базовой аутентификации)

Ваша проблема, насколько я понимаю, заключается в том, как управлять аутентификацией. В предыдущем вопросе вы исключили аутентификацию Windows. Kerberos работает как в WCF, так и в WSE, но это еще сложнее.

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

Ответ Торана - хорошее начало для использования базовой аутентификации.

Я думаю, что, возможно, хорошим подходом было бы сначала посмотреть на требования со стороны .Net 2.0 (и WSE *) - создать механизм аутентификации, который соответствует развертываниям вашего клиента, а затем выяснить, как принять эту аутентификацию с WCF.

WCF может принимать практически все, что может отправить WSE 3.0 (с единственными исключениями, о которых я могу подумать, - это версия спецификации адресации и несколько более жесткие требования безопасности)

1 голос
/ 24 октября 2008

Вам может потребоваться SSL + Имя пользователя / Пароль с BasicHttp.

Во-первых, ниже показано, что ваш клиент будет использовать в .NET 2.0 для аутентификации с вашей службой WCF.

Dim client As WebServiceClient = New WebServiceClient("basicHttpWebService")
client.ClientCredentials.UserName.UserName = "username"
client.ClientCredentials.UserName.Password = "password"

Далее образец конфигурации для вашей службы WCF, требующий учетных данных поставщика SSL + членства

       <bindings>
            <basicHttpBinding>
                <binding name="basicHttp">
                    <security mode="TransportWithMessageCredential">
                        <transport/>
                        <message clientCredentialType="UserName"/>
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <behaviors>
            <serviceBehaviors>
                <behavior name="NorthwindBehavior">
                    <serviceMetadata httpGetEnabled="true"/>
                    <serviceAuthorization principalPermissionMode="UseAspNetRoles"/>
                    <serviceCredentials>
                        <userNameAuthentication userNamePasswordValidationMode="MembershipProvider"/>
                    </serviceCredentials>
                </behavior>
            </serviceBehaviors>
        </behaviors>

Единственное, в чем я не уверен, так это в том, что для использования первого раздела в клиентском приложении может потребоваться установка CTP-расширений WCF / WPF, потому что я обычно щелкаю правой кнопкой мыши и добавляю ссылку на службу вместо добавления ASMX. веб-ссылка "- если так, это расширение для VS2005 требует установки .NET 3.0. Но с помощью простого «добавления веб-ссылки» вы все равно сможете ввести имя пользователя / пароль ... Я просто не знаю, как будет выглядеть этот vb / c # ...

...