Наш клиент попросил у нас сделать наше веб-приложение доступным из Интранета и Интернета. Когда пользователь попытался получить доступ к веб-сайту из Интранета, пользователь должен войти в систему немедленно (Windows Auth)... Пользователь должен иметь открытый доступ (например, Home, Coffee shop), но в этом случае он должен использовать свои учетные данные и сервер проверяет, действительно ли это.
Все советы?
Это стандартный способ интегрированной проверки подлинности Windows. Если вы находитесь внутри интрасети (зарегистрировались в домене), IE автоматически отправит ваши учетные данные, когда веб-сайт вернет 401.2 (не указан метод auth). Когда вы не находитесь в домене, необходимо будет получить учетные данные, поскольку с сервера клиента нельзя связаться с клиентским компьютером.
Это не то же самое, что и "сложное" решение, о котором вы говорили. Это решение сложно, потому что оно также использует проверку подлинности форм, которая вам здесь не нужна (AFAIK).
Мы решили вообще не использовать Windows Auth. Клиент хочет остаться в системе, если он находится в Интранете. поэтому мы сделали следующее (и клиент в порядке с этим)
Еще одна причина не использовать Windows Auth. Пользователь хочет выйти из системы в любое время, чтобы использовать разные учетные данные для выполнения некоторых специальных задач.
Обычно клиенты не знают, чего именно хотят, поэтому мы начнем мечтать и усложнить ситуацию. "Просто заставляет меня войти в систему" для доверенных IP-адресов, и он останется в системе в течение N дней.