powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Какой биндинг нужен для этого
13 сообщений из 13, страница 1 из 1
Какой биндинг нужен для этого
    #39108532
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне необходимо настроить службу на кастомную basic-аутентификацию.
Свой класс для этого написал и внес в конфиг.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<behaviors>
      <serviceBehaviors>
        <behavior name="mySer">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="My.Service.Core.UserNameValidator, My.Service" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>



Вопрос с биндингом
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<basicHttpBinding>
        <binding name="basicHttpBinding_Service" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647" />
          <security mode="Message">
            <message clientCredentialType="UserName"  />
          </security>
        </binding>
      </basicHttpBinding>



Если я все правильно понимаю, то для моего биндинга нужен wsHttp и еще сертификат.
Вопрос: какой биндинг мне нужен, чтобы сообщения бегали по https с кастомной Basic-аутентификацией
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39108862
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavluha,
Нужен basicHttpBinding, а юзера и пароль добавлять в header реквеста.
Код: c#
1.
2.
3.
4.
5.
      var base_64_encoded_credentials = BasicHTTPAuthenticationEncoder.base_64_encode_credentials(
                client.ClientCredentials.UserName.UserName, client.ClientCredentials.UserName.Password);

        HttpRequestMessageProperty request = new HttpRequestMessageProperty();
        request.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " + base_64_encoded_credentials;
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39108889
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavluha,

Давайте уточним - вам нужна именно Basic-аутентификация (т.е. та, что описана в стандарте HTTP)? Или вам просто нужна аутентификация по пользователю и паролю с использованеим своего собствнного верификатора, а какой способ передачи credentials будет использован - вам всё равно?

Если первое, то вам подйдет либо wsHttpBinding, либо basicHttpBinding
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<basicHttpBinding>
	<binding>
		<security mode="Transport">
			<transport clientCredentialType="Basic"/>
		</security>
	</binding>
</basicHttpBinding>
<wsHttpBinding>
	<binding>
		<security mode="Transport">
			<transport clientCredentialType="Basic"/>
		</security>
	</binding>
</wsHttpBinding>



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

Если второе, то подойдут вараинты
Код: 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.
<basicHttpBinding>
	<binding>
		<security mode="TransportWithMessageCredential">
			<message clientCredentialType="UserName"/>
		</security>
	</binding>
	<binding>
		<security mode="Message">
			<message clientCredentialType="UserName"/>
		</security>
	</binding>
</basicHttpBinding>
<wsHttpBinding>
	<binding>
		<security mode="TransportWithMessageCredential">
			<message clientCredentialType="UserName"/>
		</security>
	</binding>
	<binding>
		<security mode="Message">
			<message clientCredentialType="UserName"/>
		</security>
	</binding>
</wsHttpBinding>



Но, при security mode="Message" нужно указывать сертификат для шифрования сообщений, а для security mode="TransportWithMessageCredential" будет зависить как хостите: если под IIS, то нужно только настроить https там, а если в своем приложении, то сертификат тоже потребуется (но тут уже не очень точно помню - надо проверять)
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39108920
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МихаилР,

Просто нужна аутентификация по пользователю и паролю с использованием своего собственного верификатора без сертификата.
По вашему описанию подойдет второй вариант по https?

Код: xml
1.
2.
3.
4.
5.
6.
7.
<wsHttpBinding>
	<binding>
		<security mode="TransportWithMessageCredential">
			<message clientCredentialType="UserName"/>
		</security>
	</binding>
</wsHttpBinding>
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39109075
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavluhaПросто нужна аутентификация по пользователю и паролю с использованием своего собственного верификатора без сертификата.
По вашему описанию подойдет второй вариант по https?


Если вы размещаете сервис под IIS, то да.
А вот как настраивать https (а здесь потребуется именно он), для хостинга в собственном приложении, я, к сожалению, не помню. Т.е. если вы используетете https вам всё равно нужен сертификат для шифрования и аутентификации сервера, вопрос только в сложности настройки.
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39109294
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРТ.е. если вы используетете https вам всё равно нужен сертификат для шифрования и аутентификации сервера
Неправда. Вовсе не обязательно.
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39109296
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но ТС очень упорот, так как ответ я ему дал во втором же посте. Но дело, конечно, его...
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39109605
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronМихаилРТ.е. если вы используетете https вам всё равно нужен сертификат для шифрования и аутентификации сервера
Неправда. Вовсе не обязательно.
А как можно обойтись в https без использования сертификата? На сколько я помню, и SSL, и TLS спецификации включают передачу открытой части сертификата сервера уже при установдлении соединения.
Каким обсразом вы можете использовать https без сертификата я не представляю.
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39109888
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРAxeleronпропущено...

Неправда. Вовсе не обязательно.
А как можно обойтись в https без использования сертификата? На сколько я помню, и SSL, и TLS спецификации включают передачу открытой части сертификата сервера уже при установдлении соединения.
Каким обсразом вы можете использовать https без сертификата я не представляю.
В IIS его можно утановить в позицию игнорировать.
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39110604
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronВ IIS его можно утановить в позицию игнорировать.
Простите, вы какую имеете в виду настройку?
Если ту, что на картинке, то это игнорирование клиентского сертификата, который используется для подтверждения подлинности клиента и действительно является необязательным.
А мы говорим здесь о серверной части.
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39110987
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилР,

На сервере игнорирование валидации сертификата выполняется так:
Код: c#
1.
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39111073
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronНа сервере игнорирование валидации сертификата выполняется так:
Честно говоря, я не не очень понял, к чему вы привели этот код:
- во-первых, класс ServicePointManager отвечает за управление настройками исходящих (т.е. посылаемых с клиента) соединений. Мы же говорим о настройке входящих соединений
- во-вторых, данная проверка (делегат, который вы передаете в ServerCertificateValidationCallback ) по сути отвечает на вопрос - можно ли доверять сертификату, который вам прислал сервер, но она не позволяет создать SSL соединение без сертификата.
...
Рейтинг: 0 / 0
Какой биндинг нужен для этого
    #39111100
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилР,
Все верно, но я говорю не о том, что сертфицикат не нужен, а том, что его можно игнорировать. Например, в процессе разработки или создать свой собственный. Возможно, не совсем ответ на вопрос ТСа.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Какой биндинг нужен для этого
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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