2010-09-28 13 views
1

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

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

   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; 
       } 

ответ

1

Поскольку ваше сообщение предполагает, что вы хотите сделать это, чтобы избежать покупки SSL-сертификата до того, как ваше тестирование будет выполнено ete, я хотел спросить: чтобы сэкономить некоторое время, вы могли бы просто создать свой собственный самозаверяющий сертификат, используя 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

Я сделал несколько дальнейших исследований и выяснил, что такие компании, как Verisign, позволяют вам загружать сертификаты тестирования SSL. http://www.verisign.com/ssl/buy-ssl-certificates/free-ssl-certificate-trial/ Я действительно думал об этом, но хотел избежать головной боли. Я думаю, что делать что-то подобное, но может быть лучшим выбором. –

+0

P.S. Я принимаю ваш ответ частично из-за того, что он близок к тому, что я собираюсь делать, и частично, поэтому остальная часть сообщества перестает избивать меня за то, что я не принимаю ответы на вопросы, которые не имеют правильного или неправильного ответа. –

+0

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

0

Я искал нечто подобное сегодня, но мои знания не на 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> 

явно не тестировал, но аналогичный конфиг просто работал для меня, и это может заставить вас начать ...

+0

Когда я сделал это он, казалось, сломал логин способности к сайту. –

2

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

+0

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

1

Это экстремальное явление, но вы можете разрешить анонимные и без 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. 
+0

, что было бы здорово для чего-то вроде twitter api, но для этого требовалось войти в систему. к сожалению, мне пришлось свалить проект из-за отсутствия финансирования. –

Смежные вопросы