Поделиться через


Служебные программы проверки подлинности с помощью форм

Обновлен: Ноябрь 2007

Для управления проверкой подлинности с помощью форм можно использовать статические методы класса FormsAuthentication. Эти методы перечислены в приведенной ниже таблице.

Метод

Описание

Authenticate

Осуществляет попытку проверки учетных данных в настроенном хранилище при наличии предоставленных учетных данных.

Decrypt

Возвращает экземпляр класса FormsAuthenticationTicket, которому был передан зашифрованный билет проверки подлинности, полученный от объекта cookie HTTP.

Encrypt

Получив FormsAuthenticationTicket, формирует строку, содержащую зашифрованный билет проверки подлинности, подходящий для использования объектом cookie HTTP.

GetAuthCookie

Извлекает зашифрованный файл cookie проверки подлинности в виде экземпляра HttpCookie. Этот файл cookie не добавляется в коллекцию Cookies.

GetRedirectUrl

Возвращает URL-адрес перенаправления для запроса, который вызвал переадресацию на страницу входа в систему.

HashPasswordForStoringInConfigFile

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

Initialize

Инициализирует класс FormsAuthentication, считывая параметры конфигурации и получая значения cookie и значения шифрования для данного приложения.

RedirectFromLoginPage

Перенаправляет прошедшего проверку подлинности пользователя по первоначально запрошенному URL-адресу.

RenewTicketIfOld

Обновляет скользящий срок действия по FormsAuthenticationTicket.

SetAuthCookie

Создает билет проверки подлинности и присоединяет его к коллекции cookie для исходящего отклика.

SignOut

Удаляет билет проверки подлинности, задавая пустое значение для файла cookie проверки подлинности или текста URL-адреса. Этот метод удаляет как файлы cookie, созданные для данного сеанса, так и файлы длительного пользования.

874sbx60.alert_caution(ru-ru,VS.90).gifВажное примечание.
Хотя метод SignOut очищает билет от проверенного сеанса обозревателя, приложение все еще может быть уязвимо для атаки с повторением пакетов из нежелательного источника, получившего билет проверки подлинности с помощью прослушки. Сведения об использовании проверки подлинности с помощью форм для защиты от атаки с повторением пакетов см. в разделе SignOut.

В приведенной ниже таблице содержится список полезных свойств для управления билетами проверки подлинности с помощью форм.

Свойство

Описание

FormsCookieName

Возвращает имя файла cookie для данного приложения.

FormsCookiePath

Возвращает путь к файлу cookie для данного приложения.

CookiesSupported

Возвращает значение, позволяющее определить, поддерживает ли приложение проверку подлинности с помощью форм без использования файлов cookie.

CookieMode

Возвращает значение, позволяющее определить, настроено ли приложение для проверки подлинности с помощью форм без использования файлов cookie.

CookieDomain

Возвращает значение домена для файла cookie проверки подлинности с помощью форм.

DefaultUrl

Возвращает URL-адрес, который будет перенаправлен проверкой подлинности с помощью форм, если URL-адрес перенаправления не указан.

LoginUrl

Возвращает URL-адрес страницы входа, на которую будет перенаправлять проверка подлинности с помощью форм.

RequireSSL

Возвращает значение, указывающее, должен ли файл cookie быть передан с использованием протокола SSL.

SlidingExpiration

Возвращает значение, определяющее, включен ли скользящий срок действия.

EnableCrossAppRedirects

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

Для настройки режима работы проверки подлинности можно использовать методы класса FormsAuthentication. Их также можно использовать в обработчике страницы входа в систему, чтобы создавать избыточный код переадресации. В следующем примере кода показана веб-страница ASP.NET, которая проверяет подлинность пользователя и перенаправляет его на запрошенную страницу.

<html>
<head>
<script language="VB" runat=server>
    Sub SubmitBtn_Click(Source As Object, e As EventArgs)
        ' Try to authenticate credentials supplied by user.
        If FormsAuthentication.Authenticate _
                (UserName.Value, UserPassword.Value) Then
            Dim ticket As New FormsAuthenticationTicket _
                (UserName.Value, False, 5000)
            FormsAuthentication.RedirectFromLoginPage _
                (UserName.Value, Persist.Checked)
        End If
    End Sub
</script>
</head>

<body>
<form method=post runat=server>
    <table>
        <tr>
            <td>Name:</td>
            <td><input type="text" id="UserName" runat=server/>
        </tr>
        <tr>
            <td>Password:</td>
            <td><input type="password" id="UserPassword" runat=server/>
            </td>
        </tr>
    </table>
    <input type="checkbox" id="Persist" runat=server/>
    <!-- Use persistent cookie -->
    <br>
    <input type="submit" OnServerClick="SubmitBtn_Click" runat=server/>
</form>
</body>
</html>
<html>
<head>
<script language="C#" runat=server>
    void SubmitBtn_Click(Object Source, EventArgs e)
    {
        // Try to authenticate credentials supplied by user.
        if (FormsAuthentication.Authenticate(UserName.Value, 
                UserPassword.Value))
        {
            FormsAuthenticationTicket ticket = new 
                FormsAuthenticationTicket(UserName.Value, false, 5000);
                  
            FormsAuthentication.RedirectFromLoginPage(UserName.Value,
                Persist.Checked);
        }
    }
</script>
</head>

<body>

<form method=post runat=server>
    <table>
        <tr>
            <td>Name:</td>
            <td><input type="text" id="UserName" runat=server/></td>
        </tr>
        <tr>
            <td>Password:</td>
            <td><input type="password" id="UserPassword" runat=server/>
            </td>
        </tr>
    </table>
    <input type="checkbox" id="Persist" runat=server/>
    <!-- Use persistent cookie. -->
    <br>
    <input type="submit" OnServerClick="SubmitBtn_Click" runat=server/>
</form>
</body>
</html>

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

См. также

Ссылки

FormsAuthentication

FormsAuthenticationTicket

HttpCookie

Другие ресурсы

Безопасность веб-приложений ASP.NET

Поставщик службы проверки подлинности форм