2013-02-21 6 views
0

우리는 PC (Windows 7, IIS 7.5)에서 두 응용 프로그램 간의 인증을 사용하려고 시도하고 있습니다. 그러나 문제는 교차 사이트 인증이 작동하지 않는이 사이트 (Windows Web Server 2008, IIS 7.0)를 게시하려고 할 때입니다 !!여러 응용 프로그램에서 양식 인증

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) 

:

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

우리는 뒤에 코드에서이 같이하는 Pathes를 확인하려고 :

긴 invistigation 후 우리는 오류가 두 번째 사이트에 다음과 같은 코드에서 발생한 것을 발견 web.config에서 :

 <authentication mode="Forms"> 

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

    </authentication> 

친절한 조언 우리는 IIS의 차이점은 무엇입니까? 로컬 PC 및 서버.

감사합니다.

+0

둘 다 동일한 도메인에 게시됩니까? –

+0

예, 동일한 도메인에서 모든 도메인이 separete에 있습니다. 예 : sub1.mydomain.com.jo, sub2.mydomain.com.jo – Ibsuser

+0

이에 대한 특별한 구성이 있습니까? – Ibsuser

답변

2

브라우저가 첫 번째 사이트에서 두 번째 사이트로 인증 쿠키를 보내지 않았을 가능성이 큽니다. 쿠키 경로와 도메인을 확인하십시오. 두 사이트는 모두 동일한 도메인에 있어야하며 쿠키 경로는 공통 루트로 설정되어야합니다.

자세한 내용은이 링크를 참조하십시오 : Cookie Domains and Paths

이 문제 해결에 도움을 요청에서 전송되는 쿠키를 볼 수 피들러 또는 방화범이 끌려와 같은 유틸리티를 사용하여 인증 쿠키는 사이트 1로 설정되었는지 확인하려면를 (사용자가 로그인 한 곳)도 사이트 2로 전송됩니다.

사이트가 동일한 서버에 있지 않으면 동일한 machineKey 구성을 사용하는지 확인하십시오.

+0

나는 내 게시물을 편집하고 도메인 및 경로와 관련된 몇 가지 코드를 언급했습니다. – Ibsuser

+0

Fiddler 또는 Firebug를 사용하여 쿠키가 전송되고 있는지 확인하십시오. 그렇지 않은 경우 Fiddler/Firebug 로그를 사용하여 첫 번째 사이트의 쿠키에 대한 실제 쿠키 경로와 도메인을 확인하십시오. 전송 중이면 서버에서 수신하지만 티켓을 확인할 수 없으므로 사이트를 호스팅하는 모든 컴퓨터에서 machineKey 설정이 동일하게 구성되어 있는지 확인하십시오. – Maxam

+0

감사합니다. 나는 방화 광을 사용하려고했는데 문제가있는 것으로 보인다. Firebug 그리드에서 domin이 나를 .ASPXFORMSAUTH에 대한 도메인으로 표시하지 않는다는 것을 알았습니다.이 노드는 첫 번째 하위 도메인 만 표시합니다. 수동으로 내 도메인 (.mydomain.com.jo)으로 변경하려고 시도했을 때 문제가 없었습니다. web.config 파일에서 변경되었지만 헛되지 않았습니다. 코드 및 구성 파일에서 어떻게 해결할 수 있습니까? – Ibsuser

관련 문제