Проверка подлинности формы для нескольких приложений

Мы пытаемся использовать аутентификацию между двумя приложениями на наших ПК (Windows 7, IIS 7.5), и все идет хорошо. Но проблема в том, что когда мы пытаемся опубликовать эти сайты (веб-сервер Windows 2008, IIS 7.0), перекрестная аутентификация не работает!!

После долгого расследования мы обнаружили, что ошибка произошла в следующем коде, который находится на втором сайте:

Dim formsCookie As HttpCookie = Request.Cookies(FormsAuthentication.FormsCookieName)
    If (formsCookie IsNot Nothing) Then
    Else
    ' always null

Мы попытались проверить такие патчи в коде:

 Dim ticket As New FormsAuthenticationTicket(1, smsProfile, DateTime.Now, _
                                                       DateTime.Now.AddDays(1), True, AdminSessions.UserObj.Pid, _
                                                       FormsAuthentication.FormsCookiePath)
    Dim hash As String = FormsAuthentication.Encrypt(ticket)
    Dim cookie As New HttpCookie(
       FormsAuthentication.FormsCookieName,
       hash)
    If (ticket.IsPersistent) Then
        cookie.Expires = ticket.Expiration
    End If
    Response.Cookies.Add(cookie)
    Response.Redirect(smsPortal)

в web.config:

       <authentication mode="Forms">

        <forms name=".ASPXFORMSAUTH" enableCrossAppRedirects="true" domain="mydomain.com.jo" loginUrl="http://..." protection="All" path="/"/>

    </authentication>

Пожалуйста, сообщите нам, в чем разница между IIS в локальном ПК и сервере.

Благодарю.

1 ответ

Решение

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

Смотрите эту ссылку для более подробной информации: домены cookie и пути

Чтобы помочь в устранении неполадок, используйте утилиту, такую ​​как Fiddler или Firebug, чтобы просмотреть файлы cookie, отправляемые в запросе, и убедитесь, что файл cookie проверки подлинности, установленный сайтом 1 (где пользователь вошел в систему), также отправляется на сайт 2.

Если сайты не находятся на одном и том же сервере, также проверьте, используют ли они одинаковую конфигурацию machineKey.

Другие вопросы по тегам