Проверка подлинности имени пользователя для WCF WebService - PullRequest
0 голосов
/ 14 декабря 2010

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

Я создал сертификат, который находится в LocalMachine\My.

  • У меня есть консольприложение, которое размещает WCF WebService.
  • У меня есть веб-сайт ASP.NET, который подключается к WebService.

Я следовал советам по этому сайту и другим, а также документации, но, похоже, что-то не хватает, так как мой ASP.NETвеб-сайт все еще может подключаться к WebService без аутентификации.

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

Заранее спасибо

Вот информация:

Консольное приложение (хостинг WebService)

Program.cs

Хост WebService (консольное приложение) используетследующий код в

ServiceHost host = new ServiceHost(typeof(MyService));
host.Open();

App.Config (сокращенно)

<services>
  <service behaviorConfiguration="MetaDataBehaviour" name="MyService_Provider.MyService">
    <clear />
    <endpoint address="myService" binding="wsHttpBinding" contract="MyService_Provider.IMyService"
        listenUriMode="Explicit" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8080" />
      </baseAddresses>
    </host>
  </service>
</services>

MyService Provider

App.Config (сокращенно)

 <system.serviceModel>
    <bindings />
    <client />
    <services>
      <service behaviorConfiguration="MyService_Provider.Service1Behavior"
        name="MyService_Provider.MyService">
        <endpoint address="" binding="wsHttpBinding" contract="MyService_Provider.IMyService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8732/Design_Time_Addresses/MyService_Provider/Service1/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyService_Provider.Service1Behavior">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="MyService_Provider.CredentialsValidator,MyService_Provider"/>
            <serviceCertificate findValue="mycert" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName"/>
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

1 Ответ

0 голосов
/ 14 декабря 2010

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

...