Исключение безопасности WCF - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть консольное приложение, которое используется для запуска (открытия) моих служб wcf. У меня есть веб-приложение, которое использует эти службы.Как я могу реализовать безопасность на транспортном уровне с аутентификацией?

У меня есть это до сих пор: service:

 WSHttpBinding binding = new WSHttpBinding(SecurityMode.Transport);
 binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
 ServiceHost svh = new ServiceHost(Type.GetType(MyClass);       
 svh.AddServiceEndpoint(IMyClass, binding, "https://localhost:9090/ServiceTest");                       
 ServiceMetadataBehavior sb = new ServiceMetadataBehavior();
 sb.HttpsGetEnabled = true;
 sb.HttpsGetUrl = new Uri("https://localhost:9090/ServiceTest");
 svh.Description.Behaviors.Add(sb);
 svh.Open();

Клиент:

 WSHttpBinding binding = new WSHttpBinding(SecurityMode.Transport);
 binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
 EndpointIdentity endpointIdentity = EndpointIdentity.CreateDnsIdentity("localhost");
 EndpointAddress endPoint = new EndpointAddress(new Uri("https://localhost:9090/ServiceTest"), endpointIdentity, new AddressHeaderCollection());    
 ChannelFactory<T> engineFactory = new ChannelFactory<T>(binding, endPoint);
 T MyService = engineFactory.CreateChannel();

Сначала я запускаю консольное приложение... и все мои сервисы открыты.
но когда я вызываю метод в сервисе из веб-приложения, я получаю исключение, говорящее:

 An error occurred while making the HTTP request to 
 https://localhost:9090/ServiceTest. This could be due to the fact that the
 server certificate is not configured properly with HTTP.SYS in the HTTPS case. This 
 could also be caused by a mismatch of the security binding between the client and the 
 server.

когда я гуглю ... я обнаружил, что янужно установить ssl сертификаты на iis ... но мои службы размещены в консольном приложении ... тогда как я могу установить эти сертификаты?Кроме того, как я могу установить имя пользователя и пароль, чтобы разрешить использование службы?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011

Посмотрите здесь .

Вам необходимо настроить сертификат.

0 голосов
/ 15 апреля 2011

+ 1 в ответе @Aliostad.

Другой вариант для вас - использовать другую привязку, если можете. По умолчанию безопасность транспорта можно получить с помощью NetTcpBinding , например, без необходимости настраивать сертификаты. Этот подход будет гораздо меньше работы.

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