Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / The caller was not authenticated при обращении к сервису / 20 сообщений из 20, страница 1 из 1
24.05.2012, 12:26
    #37809487
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
Всем привет, сервис написан с использоваением wsHttpBinding, использует сертификат.

При локальном тестирование все гуд. Выкладываю сервис на продакшн, при вызове какого-либо метода падает с ошибкой

SecurityNegotiationExceptionThe caller was not authenticated by the service.

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

конфиг сервера
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="wsHttpEndpointBinding">
          <security>
            <message clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>
      <service name="TestService.Service1" behaviorConfiguration="TestService.Service1Behavior">
        <!-- Service Endpoints -->
        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsHttpEndpointBinding" contract="TestService.IService1">
          <!-- 
              Upon deployment, the following identity element should be removed or replaced to reflect the 
              identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
              automatically.
          -->
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="TestService.Service1Behavior">
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="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"/>
          <serviceCredentials>
            <clientCertificate>
              <authentication certificateValidationMode="PeerTrust"/>
            </clientCertificate>
            <serviceCertificate findValue="8cf9ef381e208a73ebd456d1af48971d98ba985b"
                                storeLocation="LocalMachine"
                                storeName="My"
                                x509FindType="FindByThumbprint" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>



конфиг клиента
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="WSHttpBinding_IService1" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                    allowCookies="false">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Message">
                        <transport clientCredentialType="Windows" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="Certificate" negotiateServiceCredential="true"
                            algorithmSuite="Default" />
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://testsrv.com/api3/Service1.svc"
                binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1" behaviorConfiguration="CustomBehavior2"
                contract="Service1.IService1" name="WSHttpBinding_IService1">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
        </client>
        <behaviors>
          <endpointBehaviors>
            <behavior name="CustomBehavior2">
              <clientCredentials>
                <clientCertificate findValue="5b9a8e6a3bc817ac3286c045725310187279b6c8"
                                   x509FindType="FindByThumbprint"
                                   storeLocation="LocalMachine"
                                   storeName="My" />
                <serviceCertificate>
                  <authentication certificateValidationMode="PeerTrust"/>
                </serviceCertificate>
              </clientCredentials>
            </behavior>
          </endpointBehaviors>
        </behaviors>
    </system.serviceModel>
</configuration>

...
Рейтинг: 0 / 0
24.05.2012, 12:50
    #37809555
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
OracleLover,

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

поэтому ставь https.
и назначай обычными средствами винды для нужного порта сертификат.
сертификат клиенту в хранилище сертификатов отправь.
...
Рейтинг: 0 / 0
24.05.2012, 12:55
    #37809568
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
AlexeiKOracleLover,

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

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

а клиенты данный сертификат автоматически получать будут?
...
Рейтинг: 0 / 0
24.05.2012, 13:26
    #37809658
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
Вообщем AlexeiK спасибо, данный способ простой и надежный, даже чертыхаться не надо.

Но, делал по этой статье и локально-то все работает, как-то стало даже интересно что не хватает при нелокальной работе.
...
Рейтинг: 0 / 0
24.05.2012, 13:47
    #37809705
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
Может поэтому?
Код: xml
1.
2.
3.
<identity>
     <dns value="localhost"/>
</identity>
...
Рейтинг: 0 / 0
24.05.2012, 13:48
    #37809707
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
...
Рейтинг: 0 / 0
24.05.2012, 14:35
    #37809833
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
LelouchМожет поэтому?
Код: xml
1.
2.
3.
<identity>
     <dns value="localhost"/>
</identity>



Я сколько не читал так и не понял что туда надо подставлять, в коде даже из статьи есть коммент
...
Рейтинг: 0 / 0
24.05.2012, 14:35
    #37809835
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
<!--
Upon deployment, the following identity element should be removed or replaced to reflect the
identity under which the deployed service runs. If removed, WCF will infer an appropriate identity
automatically.
-->



Я пробовал и убирать данный параметр - все равно
...
Рейтинг: 0 / 0
24.05.2012, 14:45
    #37809874
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
LelouchOracleLover,

Может поможет

вот опять же - contoso.com откуда они взяли?
...
Рейтинг: 0 / 0
24.05.2012, 15:04
    #37809943
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
OracleLover,

пример привели)
...
Рейтинг: 0 / 0
24.05.2012, 15:11
    #37809960
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
LelouchOracleLover,

пример привели)

*рыдаю*

ну а что там должно-то быть - адрес сервиса, адрес клиента, имя сертификата? :)
...
Рейтинг: 0 / 0
24.05.2012, 15:17
    #37809979
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
OracleLover,

а без понятия, просто имел такую же ошибку (аутентифкация Windows), но я никогда не использовал аутентификацию по сертификату. Поэтому что Вам надо указать - нефкурсе.
...
Рейтинг: 0 / 0
24.05.2012, 15:20
    #37809993
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
у меня в итоге используется такое:
Код: xml
1.
2.
3.
<identity>
	<servicePrincipalName value="host/askue-sub.vodokanalserverdb.local" />
</identity>


(сервис работает под NetworkService)
...
Рейтинг: 0 / 0
24.05.2012, 15:27
    #37810009
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
Lelouch,

The endpoint identity must match the certificate configured on the service side; otherwise
WCF will throw an exception at the moment of authenticating the service.
...
Рейтинг: 0 / 0
24.05.2012, 15:28
    #37810014
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
Код: xml
1.
2.
3.
4.
5.
6.
 < serviceCertificate
        findValue="CN=WCFServer"
        storeLocation="LocalMachine"
        storeName="My"
        x509FindType="FindBySubjectDistinguishedName"/ > 
 < /serviceCredentials > 


тогда
Код: xml
1.
2.
3.
<identity>
     <dns value="WCFServer"/>
</identity>
...
Рейтинг: 0 / 0
24.05.2012, 15:32
    #37810031
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
svctraceviewer.exe может поможет .
...
Рейтинг: 0 / 0
24.05.2012, 15:33
    #37810032
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
AlexeiK,

у можно использовать
Код: xml
1.
2.
3.
<identity>
        <certificate encodedValue="<Значение, полученное способом, указанным на MSDN>" />
</identity>


?
...
Рейтинг: 0 / 0
24.05.2012, 15:50
    #37810078
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
LelouchAlexeiK,

у можно использовать
Код: xml
1.
2.
3.
<identity>
        <certificate encodedValue="<Значение, полученное способом, указанным на MSDN>" />
</identity>


?

оно само у меня даже такое генерилось после обновления ссылки на сервис - один хер не помогало
...
Рейтинг: 0 / 0
24.05.2012, 16:12
    #37810144
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
OracleLover,

а ошибка таже?
...
Рейтинг: 0 / 0
24.05.2012, 17:41
    #37810334
OracleLover
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
The caller was not authenticated при обращении к сервису
LelouchOracleLover,

а ошибка таже?

Да
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / The caller was not authenticated при обращении к сервису / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]