Основные данные аутентификации кодируются в заголовке запроса с именем «Авторизация» от клиента. Заголовок содержит закодированный в base64 результат «имя пользователя: пароль».
например. Аладдин: открытый кунжут = Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Более подробную информацию можно найти на странице Базовый доступ Auth википедии .
Для базовой аутентификации заголовок Авторизация должен быть добавлен к каждому запросу. Обычно браузер позаботится об этом после того, как пользователь введет свои учетные данные в диалоговое окно, представленное браузером. Если вы не хотите, чтобы ваши пользователи вводили эти учетные данные, то вашему серверу ASP.net нужно будет находиться между пользователем и сервером Apache (действующим в качестве обратного прокси-сервера), добавляя заголовки аутентификации в каждый запрос, который он передает от имени ваши пользователи.
Невозможно просто один раз зайти на ваш сервер и добавить для него «токен» в запрос, а затем перенаправить на сервер apache. Такой подход был бы возможен, если бы вы использовали формы / файлы cookie для аутентификации, а ваши серверы представлялись пользователю как в пределах одного домена (например, asp.domain.com & apache.domain.com), тогда файл cookie авторизации можно было бы установить на родительский домен (например, domain.com) и общий - см. Аутентификация с помощью форм для поддоменов .
Предполагая, что базовую схему аутентификации на сервере Apache нельзя легко изменить, похоже, что обратный прокси - лучший вариант. В обратном прокси-коде HttpWebRequest - это средство для создания каждого запроса к серверу apache и добавления к нему дополнительных заголовков аутентификации.
.net будет иметь дело с кодированием учетных данных в прокси-запросе, используя что-то вроде:
RemoteServer remoteServer = new RemoteServer(httpContext);
HttpWebRequest request = remoteServer.GetRequest();
request.PreAuthenticate = true;
request.Credentials = new NetworkCredential(UserName, SecurelyStoredPassword);