powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / The caller was not authenticated при обращении к сервису
20 сообщений из 20, страница 1 из 1
The caller was not authenticated при обращении к сервису
    #37809487
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет, сервис написан с использоваением 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
The caller was not authenticated при обращении к сервису
    #37809555
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleLover,

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

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

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

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

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

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



Я сколько не читал так и не понял что туда надо подставлять, в коде даже из статьи есть коммент
...
Рейтинг: 0 / 0
The caller was not authenticated при обращении к сервису
    #37809835
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<!--
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
The caller was not authenticated при обращении к сервису
    #37809874
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchOracleLover,

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

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

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

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

*рыдаю*

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

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


(сервис работает под NetworkService)
...
Рейтинг: 0 / 0
The caller was not authenticated при обращении к сервису
    #37810009
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
The caller was not authenticated при обращении к сервису
    #37810014
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
The caller was not authenticated при обращении к сервису
    #37810031
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svctraceviewer.exe может поможет .
...
Рейтинг: 0 / 0
The caller was not authenticated при обращении к сервису
    #37810032
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK,

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


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

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


?

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

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

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

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


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