В нашем центре обработки данных запущено веб-приложение asp.NET, в которое мы хотим, чтобы клиент входил в систему с помощью единого входа. Это было бы очень легко, если бы мы могли использовать интегрированную безопасность IIS. Однако мы не можем этого сделать. У нас нет доверия к контроллеру домена заказчика. И мы хотим, чтобы сайт был доступен для общего интернета. Только когда люди подключаются из клиентской сети, они должны автоматически войти в систему.
У нас есть список учетных записей домена и способ запроса DC через LDAP в коде asp.net. Когда в IIS разрешен анонимный доступ, IIS никогда не запрашивает учетные данные в браузере. И поэтому наше приложение никогда не получает учетные данные пользователей.
Существует ли способ заставить браузер отправлять учетные данные (и, таким образом, использовать единый вход), когда IIS принимает анонимный запрос.
Обновление:
Я попытался отправить 401: неавторизованный, www-authenticate: NTLM заголовки самостоятельно. Далее, как говорит мне Фидлер, IIS получает полный контроль и обрабатывает всю цепочку запросов. Как я понимаю из различных источников, IIS берет имя пользователя и отправляет запрос обратно в браузер. Браузер возвращается с зашифрованным ответом, и IIS подключается к контроллеру домена для аутентификации пользователя с помощью этого ответа.
Однако в моем сценарии IIS находится в другом домене Windows, чем клиенты, и не имеет возможности аутентифицировать пользователей. По этой причине создание отдельного сайта с включенной аутентификацией Windows также не будет работать.
На данный момент у меня есть варианты, которые я изучаю:
- Создание доверительного отношения между нашим хостинговым доменом и клиентским доменом (наш ИТ-отдел этим не очень доволен)
- Использование прокси-сервера NTML для пересылки запросов проверки подлинности IIS на контроллер домена клиентов (у нас есть доступное VPN-подключение для подключения через LDAP)