Использование SSL для связи клиент / сервер через сокеты TCP / IP без веб-сервера - PullRequest
1 голос
/ 01 июня 2011

У меня есть серверное приложение, использующее механизм прослушивания TCP с SSL поверх него с использованием класса SslStream, очень похожего на то, что описано в этом потоке: Прослушиватель Tcpip сокетов потоков SSL так много путаницы

Однако нашими клиентами являются мобильные устройства всех ОС (iOS, Android и т. Д.).У меня есть сертификат на стороне сервера, но все, что я действительно хочу от своих клиентов в качестве аутентификации, - это пара строк user / pwd, заданная протоколом Basic Authentication.

Если исходное соединение от клиента предоставляет мне эти учетные данные, всехорошо - я разбираю запрос, извлекаю их и делаю мои проверки.Однако, если они не поставляются - как мне их попросить?

1 Ответ

2 голосов
/ 01 июня 2011

Код состояния HTTP 401 вместе с заголовком WWW-Authenticate: Basic используется для запроса HTTP-клиента на отправку строки имени пользователя / пароля, как показано в этом примере

Запрос клиента (без аутентификации):

GET /private/index.html HTTP/1.11
Host: localhost

Ответ сервера:

HTTP/1.1 401 Authorization Required
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:18:15 GMT
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-Length: 311

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
  <HEAD>
    <TITLE>Error</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
  </HEAD>
  <BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>

Запрос клиента (имя пользователя "Aladdin", пароль "open sesame"):

GET /private/index.html HTTP/1.1
Host: localhost
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
...