Что такое «область» в аутентификации IIS и как это связано с параметрами SSL-сертификата? - PullRequest
8 голосов
/ 04 февраля 2011

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

void ReplyWithAuthHeader()
{
    HttpContext currentContext = HttpContext.Current;
    context.Response.StatusCode = 401;
    context.Response.AddHeader( "WWW-Authenticate",
       String.Format("Basic realm=\"{0}\"", "myname.mycompany.com"));
}

Сайт получает сертификат SSL, созданный с помощью утилиты makecert, и «выдается» на «myname.mycompany.com». Вызывающий объект создает запрос:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create( serverUrl );
CredentialCache cache = new CredentialCache();
cache.Add( new Uri( serverUrl ), "Basic", new NetworkCredential( "UserName", "password" ) );
request.Credentials = cache;

, где serverUrl начинается с https://, и когда запрос обрабатывается сервером, сервер отправляет ответ "WWW-Authenticate", а затем на стороне клиента создается исключение "Невозможно записать данные в транспортное соединение: установленное соединение было прервано программным обеспечением на вашем хост-компьютере. " текст.

Очевидно, что на уровне согласования SSL что-то не так, и я не могу представить, что это такое. Я предполагаю, что это может быть что-то, связанное с царством.

У меня вопрос - что такое realm и как оно связано с именем стороны, которой был выдан сертификат SSL, когда соединение установлено по SSL?

Ответы [ 2 ]

10 голосов
/ 04 февраля 2011

Чтобы ответить на ваш вопрос «что такое сфера?», Некоторые копипасты из RFC 2617 :

Директива области (без учета регистра) требуется для всех схем аутентификацииэто проблемаЗначение области (с учетом регистра) в сочетании с каноническим корневым URL-адресом (absoluteURI для сервера, чей abs_path пуст; см. Раздел 5.1.2 из [2]) сервера, к которому осуществляется доступ, определяет пространство защиты.Эти области позволяют разделить защищенные ресурсы на сервере на набор защитных пространств, каждое со своей собственной схемой аутентификации и / или базой данных авторизации.Значение области - это строка, обычно назначаемая исходным сервером, которая может иметь дополнительную семантику, специфичную для схемы аутентификации.Обратите внимание, что может быть несколько проблем с одной и той же схемой аутентификации, но с разными областями.

Что касается вашего вопроса, как он связан с вашим сертификатом SSL: это не так.Самый простой способ выяснить, что происходит не так, просто получить доступ к URL в вашем браузере.Вы должны получить довольно четкое описание проблемы (имя хоста не соответствует сертификату, ненадежный центр сертификации, срок действия истек и т. Д.).

5 голосов
/ 04 февраля 2011

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

Нет никакой связи между SSL и тем, что происходит с HTTP, если вам удалось договориться о соединении и отправить запрос и получить ответ, SSL не будет вашей проблемой. Вы можете просто пытаться написать соединение, которое было закрыто. В этом случае я загружаю закрытый ключ в Wireshark и более внимательно смотрю на то, что происходит на уровне протокола, как TCP / IP, так и HTTP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...