동일한 인증 쿠키를 사용하도록 구성된 동일한 서버에 두 개의 MVC3 사이트가 있습니다.ASP .NET Cross Site Forms 인증은 제품이 아닌 Dev에서 작동합니다.
첫 번째 사이트는 Windows 인증을 사용하는 인트라넷 사이트입니다. 이 사이트에는 사용자가 인증되었는지 여부를 확인하는 간단한 액션 하나가 있습니다. 사용자가 있었던 경우 응답에 추가하는 FormsAuthentication 쿠키가 만들어집니다. 이 쿠키는 사용자의 AD 그룹에서 결정한 일반 사용자를 위해 생성됩니다. 응답은 폼 인증을 사용하는 두 번째 사이트로 사용자를 리디렉션합니다.
로컬 컴퓨터에서 실행하면 모든 것이 위에서 설명한대로 작동합니다. 이것을 로컬 웹 서버에 배포하면 그렇지 않습니다. 나는 사용자의 그룹이 올바르게 결정되었고 그것이 쿠키에 대해 유효한 사용자를 생성 하는지를 테스트했으며, 웹 서버에서 이것이 올바른지 확인했다. 여기
내가 위의 모든 일을 해요 방법은 다음과 같습니다
이첫째,이 두 사이트는 암호화 및 암호 해독에 동일한 동일한 시스템 키를 사용했다.
Site1에 쿠키를 만들 때 사이트 2에 생성 된 쿠키와 동일한 이름과 도메인을 가지고 있는지 확인합니다.
var cookie = FormsAuthentication.GetAuthCookie(userName, false);
cookie.Domain = FormsAuthentication.CookieDomain; //This is the Domain of my 2nd site as they are different
HttpContext.Response.Cookies.Add(cookie); //Add my cookie to the response
HttpContext.Response.RedirectPermanent(urlForSite2);
다시 로컬 컴퓨터에서 실행할 때 문제없이 작동합니다. 그러나 배포 할 때 요청에서 쿠키를 전달하지 않거나 응답에서이를 무시하고 있지만 이러한 경우 중 하나를 확인하는 방법을 모르겠습니다.
내가 필요한 답변을 얻는 데 도움이된다면 어떻게하는지에 대해 더 자세한 내용을 질문 할 수 있습니다.
동일한 서버 컴퓨터에 있어야합니까? 동일한 컴퓨터 작업과 다른 서버에있을 때는 작동하지 않습니다. machineKey가 같다고 확신합니다. –
@JulianoOliveira - Forms Auth는 서버 팜 (별도의 컴퓨터)에서 작동하므로 machine.config의 machineKey 태그에 대한 모든 특성 (validationKey, decryptionKey, 유효성 검사 및 암호 해독)이 동일한 지 확인해야합니다. 서버가 다른 하위 도메인을 나타내는 경우 FormsAuthentication.SetAuthCookie를 호출 한 후 내 대답의 코드를 사용해야합니다. –