2013-02-21 2 views
0

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

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

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 в локальный ПК и сервер.

Спасибо.

+0

они оба опубликованы в том же домене? –

+0

Да в том же домене, каждый из них находится в поддомене separete. ex: sub1.mydomain.com.jo, sub2.mydomain.com.jo – Ibsuser

+0

Есть ли какая-то особенная конфигурация для этого? – Ibsuser

ответ

2

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

Смотрите эту ссылку для получения более подробной информации: Cookie Domains and Paths

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

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

+0

Я редактировал свой пост и упомянул некоторые коды, относящиеся к домену и пути. – Ibsuser

+0

Используйте Fiddler или Firebug, чтобы проверить, отправляется ли файл cookie. Если это не так, используйте журналы Fiddler/Firebug, чтобы проверить фактический путь и домен cookie в файле cookie с первого сайта. Если он отправляется, сервер получает его, но не может проверить этот билет, поэтому убедитесь, что параметры machineKey на всех компьютерах, на которых размещены сайты, настроены одинаково. – Maxam

+0

Спасибо. Я попытался использовать firebug, кажется, что нашел проблему. Я обнаружил, что domin в gridbug grid не показал мне мой домен для .ASPXFORMSAUTH, он показывает мне только первый поддомен. когда я пытался изменить его вручную в моем домене (.mydomain.com.jo), он отлично работает. Я изменяю это в файле web.config, но напрасно. Как я могу решить это в своем коде и файле конфигурации? – Ibsuser