Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / настроить безопасность WCF сервиса / 3 сообщений из 3, страница 1 из 1
27.01.2012, 22:17
    #37636048
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настроить безопасность WCF сервиса
для того чтоб разобраться, сделал тестовое приложение (проект приложен к сообщению)
приложения общаются друг с другом (аля Remoting)
теперь нужно авторизовать клиентов
вот конфиги, с которыми все работает без включения безопасности
сервер
Код: 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.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="WcfLibrary.ServerImplementation" >
        <endpoint
         address="net.tcp://localhost:3315/TestServer"
         binding="netTcpBinding"
         contract="WcfLibrary.IServerService"
         bindingConfiguration="InsecureTcp" />
      </service>
    </services>

    <bindings>
      <netTcpBinding>
        <binding name="InsecureTcp">
          <security mode="None"></security>
          <readerQuotas maxStringContentLength="152428800"
          maxArrayLength="152428800"
          maxBytesPerRead="4096"/>
        </binding>
      </netTcpBinding>
    </bindings>
  </system.serviceModel>

</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.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    
    <client>
      <endpoint
        name="WcfLibrary.ServerImplementation"
        address="net.tcp://localhost:3315/TestServer"
        binding="netTcpBinding"
        contract="WcfLibrary.IServerService"
        bindingConfiguration="InsecureTcp"
          />
    </client>

    <bindings>
      <netTcpBinding>
        <binding name="InsecureTcp">
          <security mode="None" />
          <readerQuotas maxStringContentLength="152428800"
          maxArrayLength="152428800"
          maxBytesPerRead="4096"/>
        </binding>
      </netTcpBinding>
    </bindings>
    
  </system.serviceModel>
</configuration>




в гугле смог выяснить что для простой авторизации нужно сделать класс
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    public class CustomValidator : UserNamePasswordValidator
    {
        public override void Validate(string userName, string password)
        {
            if ((userName != "user1") || (password != "123"))
            {
                throw new SecurityTokenException("Validation Failed!");
            }
        }
    }


в описании службы указать behavior
Код: xml
1.
2.
<service name="WcfLibrary.ServerImplementation"
               behaviorConfiguration="ServerBehavior">


далее
Код: xml
1.
2.
3.
4.
5.
6.
<bindings>
      <netTcpBinding>
        <binding name="InsecureTcp">
          <security mode="Message">
            <message clientCredentialType="UserName"/>
          </security>


и описать behavior на который ссылались выше, указав класс который должен проверять логин/пароль
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<behaviors>
      <serviceBehaviors>
        <behavior name="ServerBehavior">
          <serviceMetadata httpGetEnabled="false" httpGetUrl=""/>
          <serviceDebug includeExceptionDetailInFaults="false" />
          <serviceCredentials>
            <userNameAuthentication
              userNamePasswordValidationMode="Custom"
              includeWindowsGroups="false"
              customUserNamePasswordValidatorType="WcfLibrary.CustomValidator, WcfLibrary" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>


но с такими параметрами не запускается даже "сервер"... и не знаю как дополнить конфиг клиента (((
все что попадается в гугле - ориентировано под сертификаты, либо web (там другие секции, не пойму куда что тулить)
тут же нужен "простой" вариант

подскажите как нужно изменить эти конфиги, либо ткните носом в подобные примеры
WinForms, C#, .NET 4
...
Рейтинг: 0 / 0
30.01.2012, 11:02
    #37637826
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настроить безопасность WCF сервиса
Кифирчик,

ошибки покажи.
...
Рейтинг: 0 / 0
30.01.2012, 14:06
    #37638190
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
настроить безопасность WCF сервиса
AlexeiK,
попытка запустить сервер



я там за сертификат ничего не указывал (
конфиг
Код: 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.
58.
59.
60.
61.
62.
63.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <!--<service name="WcfLibrary.ServerImplementation" >
        <endpoint
         address="net.tcp://localhost:3315/TestServer"
         binding="netTcpBinding"
         contract="WcfLibrary.IServerService"
         bindingConfiguration="InsecureTcp" />
      </service>-->
      <service name="WcfLibrary.ServerImplementation"
               behaviorConfiguration="ServerBehavior">
        <endpoint
         address="net.tcp://localhost:3315/TestServer"
         binding="netTcpBinding"
         contract="WcfLibrary.IServerService"
         bindingConfiguration="InsecureTcp" />
      </service>
    </services>

    <bindings>
      <netTcpBinding>
        <binding name="InsecureTcp">
          <security mode="Message">
            <message clientCredentialType="UserName"/>
          </security>
          <readerQuotas maxStringContentLength="152428800"
          maxArrayLength="152428800"
          maxBytesPerRead="4096"/>
        </binding>
      </netTcpBinding>
    </bindings>
    <!--<bindings>
      <netTcpBinding>
        <binding name="InsecureTcp">
          <security mode="None"></security>
          <readerQuotas maxStringContentLength="152428800"
          maxArrayLength="152428800"
          maxBytesPerRead="4096"/>
        </binding>
      </netTcpBinding>
    </bindings>-->

    <behaviors>
      <serviceBehaviors>
        <behavior name="ServerBehavior">
          <serviceMetadata httpGetEnabled="false" httpGetUrl=""/>
          <serviceDebug includeExceptionDetailInFaults="false" />
          <serviceCredentials>
            <userNameAuthentication
              userNamePasswordValidationMode="Custom"
              includeWindowsGroups="false"
              customUserNamePasswordValidatorType="WcfLibrary.CustomValidator, WcfLibrary" />
          </serviceCredentials>
     
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

</configuration>


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


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