IIS7 - Сервер разработки для защиты паролем - PullRequest
8 голосов
/ 05 августа 2009

У меня есть сервер разработки под управлением IIS 7.0 с веб-приложением ASP.NET MVC, которое аутентифицируется с помощью проверки подлинности с помощью форм / членства.

Мне нужно, чтобы посторонние пользователи не могли просматривать этот сайт. Однако наши клиенты должны иметь возможность ввести простое имя пользователя / пароль для получения доступа.

После этого они смогут взаимодействовать с веб-приложением с помощью проверки подлинности с помощью форм, как если бы они только что пришли на незащищенный сайт.

Есть предложения?

Ответы [ 4 ]

6 голосов
/ 05 августа 2009

В моем предыдущем ответе говорилось, что формы auth и базовый http auth могут жить бок о бок в интегрированном режиме II7. Я был совершенно неправ и с тех пор принял простое решение.

Используя пользовательский модуль HttpModule, вы можете добавить базовую аутентификацию вдоль сторонних регулярных форм auth

public class CustomBasicAuthHttpModule : IHttpModule
{
    private HttpApplication httpApplicationContext;

    public void Dispose()
    {
    }

    public void Init(HttpApplication context)
    {
        this.httpApplicationContext = context;
        context.BeginRequest += this.OnBeginRequest;
        context.EndRequest += this.OnEndRequest;
    }

    private void OnBeginRequest(object sender, EventArgs e)
    {
        // your logic of checking Auth header goes here
        if (this.httpApplicationContext.Request.Headers["Authorization"] != "Basic base64-encoded-user:pass")
        {
            this.httpApplicationContext.Response.StatusCode = 401;
            this.httpApplicationContext.Response.End();
        }
    }

    private void OnEndRequest(object sender, EventArgs e)
    {
        if (this.httpApplicationContext.Response.StatusCode == 401)
        {
            this.httpApplicationContext.Response.AddHeader("WWW-Authenticate", "Basic");
        }
    }

тогда в вашем web.config

  <system.webServer>
    <modules>
      <add name="CustomBasicAuthHttpModule" type="Namespace.CustomBasicAuthHttpModule, AssemblyName"/>
    </modules>
  </system.webServer>
2 голосов
/ 03 июня 2010

Я только что сделал это с Helicon Ape . Бесплатная лицензия включает в себя 3 сайта, что для меня было достаточно хорошо.

Если вы используете это на сайте, просто не забудьте проверить, активирована ли лицензия для сайта (меню Пуск> helicon> ape> manager, help, manager License).

0 голосов
/ 20 октября 2010

Как указывает Аарон, в IIS7 это не так просто. Теперь, с другой стороны, этот старый трюк в лучшем случае небезопасен, и есть лучшие способы сделать это сейчас, и возможность использовать все методы аутентификации со всеми приложениями имеет много преимуществ. Есть несколько способов обойти это, например:

a) сохранение сайта разработки за VPN, к которому ваши клиенты могут получить доступ.
б) обратное проксирование сайта и разрешение прокси-серверу выполнять http-аутентификацию.
в) Более сложным было бы создать приложение с демонстрационным режимом. Хитрость заключается в том, чтобы заставить его включаться или выключаться с первого запроса, заданного специальной магической строкой запроса. Проверьте это в Session_Start (), затем пометьте пользователей, которые приходят с ним, и получите прибыль.

0 голосов
/ 05 августа 2009

Мы написали специальный модуль для IIS, который позволяет автоматически пропускать определенные диапазоны IP-адресов и предоставляет кому-либо еще диалог входа в систему. Как только они вошли в систему, он сохранил этот факт в своей сессии и просто пропустил запросы.

Работает хорошо, может применяться ко всему на сайтах или службах IIS.

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