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


Практическое руководство. Настройка файлов Cookie проверки подлинности службы проверки подлинности WCF

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

В данном разделе описано, как настроить файл Cookie проверки подлинности (билет) для службы проверки подлинности ASP.NET при использовании последней в качестве службы Windows Communication Foundation (WCF). Файлы Cookie проверки подлинности настраиваются, когда необходимо сохранить данные пользователя в Cookie во время проверки подлинности.

Bb398778.alert_note(ru-ru,VS.90).gifПримечание.

В общем случае, хранение данных пользователя в свойствах профиля ASP.NET — это лучший вариант, чем хранение в файлах Cookie. Данные свойств профиля не привязаны к одному компьютеру и не ограничены временем существования файла Cookie. Кроме того, можно сохранять данные пользователя более безопасно в свойствах профиля. Настройка содержимого файлов Cookie полезна, если есть небольшое количество неконфиденциальных данных и не требуется использовать свойства профиля ASP.NET.

После проверки подлинности учетных данных пользователя и до установки файла Cookie проверки подлинности происходит событие CreatingCookie. Можно настроить файл Cookie проверки подлинности, создав обработчик событий для события CreatingCookie и управляя файлом Cookie проверки подлинности самостоятельно. Можно получить доступ к имени пользователя, паролю и учетным данным посредством объекта CreatingCookieEventArgs, передаваемого обработчику событий.

Используйте реализацию WCF службы проверки подлинности для входа пользователя в систему из клиентского приложения, которое может отправлять и получать сообщения SOAP 1.1, например, из приложения на Java.

  1. Необходимо создать обработчик событий для события CreatingCookie в файле Global.asax веб-приложения.

  2. В обработчике добавьте сведения в свойство CustomCredential Cookie.

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

    Sub AuthenticationService_CreatingCookie(ByVal sender As Object, _
                     ByVal e As System.Web.ApplicationServices.CreatingCookieEventArgs)
        Dim ticket As FormsAuthenticationTicket = New _
           FormsAuthenticationTicket _
            (1, _
             e.Username, _
             DateTime.Now, _
             DateTime.Now.AddMinutes(30), _
             e.IsPersistent, _
             e.CustomCredential, _
             FormsAuthentication.FormsCookiePath)
    
        Dim encryptedTicket As String = FormsAuthentication.Encrypt(ticket)
    
        Dim cookie As HttpCookie = New _
            HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
        cookie.Expires = DateTime.Now.AddMinutes(30)
    
        HttpContext.Current.Response.Cookies.Add(cookie)
        e.CookieIsSet = True
    End Sub
    
    void AuthenticationService_CreatingCookie(object sender, 
        System.Web.ApplicationServices.CreatingCookieEventArgs e)
    {
        FormsAuthenticationTicket ticket = new
              FormsAuthenticationTicket
                (1,
                 e.UserName,
                 DateTime.Now,
                 DateTime.Now.AddMinutes(30),
                 e.IsPersistent,
                 e.CustomCredential,
                 FormsAuthentication.FormsCookiePath);
    
        string encryptedTicket =
             FormsAuthentication.Encrypt(ticket);
    
        HttpCookie cookie = new HttpCookie
             (FormsAuthentication.FormsCookieName,
              encryptedTicket);
        cookie.Expires = DateTime.Now.AddMinutes(30);
    
        HttpContext.Current.Response.Cookies.Add(cookie);
        e.CookieIsSet = true;
    }
    
  3. В методе Application_Start файла Global.asax осуществите привязку обработчика событий к событию CreatingCookie.

    В следующем примере показано осуществление привязки обработчика к событию CreatingCookie.

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        AddHandler System.Web.ApplicationServices.AuthenticationService.CreatingCookie, _
            AddressOf Me.AuthenticationService_CreatingCookie
    End Sub
    
    void Application_Start(object sender, EventArgs e)
    {
        System.Web.ApplicationServices.AuthenticationService.CreatingCookie 
            += new EventHandler<System.Web.ApplicationServices.CreatingCookieEventArgs>
            (AuthenticationService_CreatingCookie);
    }
    
  4. Вызовите службу проверки подлинности из приложения, которое может принимать сообщения SOAP 1.1 от веб-службы.

Компиляция кода

Для работы предыдущих примеров необходимо настроить службу проверки подлинности на веб-сервере. Дополнительные сведения см. в разделе Практическое руководство. Включение службы проверки подлинности WCF.

Безопасность

При передаче конфиденциальных сведений, таких как учетные данные для проверки подлинности, осуществляйте доступ к службе проверки подлинности через SSL (с использованием протокола HTTPS). Дополнительные сведения о настройке SSL см. в разделе Настройка SSL (Руководство пользователя IIS 6.0) (на английском языке).

См. также

Основные понятия

Общие сведения о службе проверки подлинности Windows Communication Foundation

Ссылки

AuthenticationService

CreatingCookieEventArgs