Включить базовую HttpBinding без SSL в WCF - PullRequest
1 голос
/ 28 сентября 2010

Идея заключается в том, что для моего тестирования, прежде чем я обязуюсь приобрести сертификат SSL, я хочу включить службу WCF в не-ssl режиме.Я делал это в прошлом, используя этот код, но, судя по всему, не могу понять, как перевести его в файл web.config.

Если кто-то может указать мне правильное направлениеВы бы пошли об этом переводе, который был бы очень признателен.

                Binding basicBinding = null;
                if (RegistryConnectionStringFactory.UseSslForCommunications)
                {
                    basicBinding = new BasicHttpBinding();
                    (basicBinding as BasicHttpBinding).Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
                    (basicBinding as BasicHttpBinding).Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

                    creds.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.MembershipProvider;
                    creds.UserNameAuthentication.MembershipProvider = Membership.Provider;
                }
                else
                {
                    HttpTransportBindingElement transport = new HttpTransportBindingElement()
                    {
                        AuthenticationScheme = System.Net.AuthenticationSchemes.Basic
                    };
                    basicBinding = new CustomBinding(transport);

                    svcHost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new AspNetUsernamePasswordValidator();
                    svcHost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom;
                }

Ответы [ 4 ]

2 голосов
/ 12 октября 2011

Это крайность, но вы можете разрешить анонимные и не-SSL, установив режим безопасности «none». Анонимность также может повлиять на ваше тестирование, поэтому, вероятно, не рекомендуется.

<binding name="HttpBasicSecurityConfig">
  <security mode="None">
  </security>
</binding>

С http://msdn.microsoft.com/en-us/library/ms731172.aspx:

Учетные данные транспорта в привязках

Type   Description
None   Specifies that the client does not need to present any credential. This translates to an anonymous client.
2 голосов
/ 28 сентября 2010

Что не так с подходом на основе конфигурации для BasicHttpBinding? Вы просто используете учетные данные TransportWithMessageCredential и UserName для связи по HTTPS или учетные данные TransportCredentialOnly и Basic для связи по HTTP.

1 голос
/ 28 сентября 2010

Поскольку ваша публикация предполагает, что вы хотите сделать это, чтобы избежать покупки SSL-сертификата до завершения тестирования, я хотел спросить: чтобы сэкономить время, не могли бы вы просто создать свой собственный самозаверяющий сертификат, используя makecert?

Если это так, эти заметки могут помочь.

Чтобы создать файлы ключей корневого сертификата ...

makecert  -r -pe -n "CN=My Own Authority,O=My Company,C=US" -ss CA -sr CurrentUser -a sha1 -sky signature -sv mycert.pvk mycert.cer

Чтобы создать файл .PFX ...

makecert -pe -n "CN=localhost" -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -ic mycert.cer -iv mycert.pvk -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -sv localhost.pvk localhost.cer
pvk2pfx -pvk localhost.pvk -spc localhost.cer -pfx localhost.pfx

Затем с помощью оснастки «Сертификаты» импортируйте файл mycert.cer в доверенные корневые центры сертификации на локальном компьютере, чтобы сообщить тем приложениям, работающим на локальном компьютере, что любой сертификат, подписанный вашим собственным органом, является доверенным.

Затем вы импортируете файл localhost.pfx в Личное хранилище на локальном компьютере. (В результате этого сертификат становится доступным для IIS, чтобы он сам мог объявить себя сервером с именем localhost.)

Подробное описание того, как импортировать файл .PFX в IIS 7, приведено здесь: http://www.digicert.com/ssl-support/pfx-import-export-iis-7.htm

0 голосов
/ 28 сентября 2010

Я тоже сегодня смотрел на нечто подобное, но мои знания не на 100% полны.

Для привязки вам нужно будет сделать что-то вроде этого:

   <bindings>
  <customBinding>
    <binding name="CustomBinding">
      <httpTransport authenticationScheme="Basic"/>
    </binding>
  </customBinding>

Тогдавам нужно создать serviceBehaviour для пользовательской проверки:

        <behavior name="serviceBehavior" >
      <serviceAuthorization principalPermissionMode="UseAspNetRoles"roleProviderName="CustomRolesProvider" />
      <serviceCredentials>
        <userNameAuthentication customUserNamePasswordValidatorType ="AspNetUsernamePasswordValidator [Fully qualified name]" userNamePasswordValidationMode="Custom" />
      </serviceCredentials>

явно не проверено, но подобная конфигурация просто работает для меня, и она может помочь вам начать ...

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