ASP.NET: требуется логин на основе маски сети - PullRequest
0 голосов
/ 22 декабря 2009

Мне нужно обеспечить безопасный доступ ко всем страницам в веб-приложении .NET - ИСКЛЮЧИТЬ запросы из:

  • локальной сети (в которой работает IIS сети)
  • IP-адресов в списке / сетевых масокперечисленные в базе данных

все остальные запросы должны быть перенаправлены в форму входа

Я думал о направлении HttpModule - но никогда не писал.Кто-нибудь может дать какие-нибудь идеи по этому поводу?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 22 декабря 2009

Использование HttpModule было бы лучшим способом сделать это. Вы можете использовать это для перехвата любых запросов перед выполнением страницы и перенаправления в форму входа в систему, если требуется.

public class SecurityModule : IHttpModule
{
    private HttpApplication m_HttpApplication;

    public void Init(HttpApplication context)
    {
        m_HttpApplication = context;
        m_HttpApplication.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);
    }

    public void Dispose()
    {
        // Do Nothing
    }

    private void OnPreRequestHandlerExecute(object sender, EventArgs e)
    {
        // Get IP address
        string ipAddress = m_HttpApplication.Context.Request.UserHostAddress;

        // Check if the IP address requires login
        bool requiresLogin = ValidateIpAddress(ipAddress);

        // Redirect if required
        if (requiresLogin)
            Response.Redirect("~/Login.aspx", true);
        }

        private bool ValidateIpAddress(string ipAddress)
        {
            // This method would check that the IP address is from the local
            // network or in the database and return true or false accordingly.

            return false;
        }
    }

Вам также необходимо изменить web.config и добавить ссылку на модуль:

<httpModules>
    <add name="SecurityModule" type="MyApp.SecurityModule, MyApp"/>
</httpModules>

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

0 голосов
/ 18 февраля 2010

Вот пользовательский модуль авторизации на основе регулярных выражений: http://code.google.com/p/talifun-web/wiki/RegexUrlAuthorizationModule

Реорганизацию в соответствии с вашими требованиями должно быть легко.

0 голосов
/ 22 декабря 2009

Я бы предпочел создать метод глобальной аутентификации для проверки по ip. Вызов этой функции в OnInit или OnLoad вашей MasterPage или в вашей собственной реализации System.Web.Page должен помочь.

Если пользователь должен войти в систему, установите случайный идентификатор в вашем сеансе для проверки (сохранение случайного идентификатора в вашей базе данных и сеансе). В вашем методе глобальной аутентификации теперь вы можете проверить допустимый диапазон ip или действительный (зарегистрированный в базе данных) токен сеанса.

...