폼 인증을 사용하여 두 개의 별도 IIS 웹 사이트 (공용 도메인 사용)에 SSO를 설정하려고합니다. auth 쿠키를 공통 도메인으로 설정하고 일치하는 컴퓨터 키를 사용하여 암호 해독을 사용하는 일반적인 방법을 사용하고 있습니다.폼 인증 SSO - User.Identity.IsAuthenticated == false 이유
이 도구는 내가 만든 테스트 사이트에서 아무런 문제없이 작동합니다. 그러나 기존 Web Forms 사이트에서이를 구현하려고 할 때 이해할 수없는 부분이 있습니다. 나는이 두 가지를 어떻게 다른 하나는 (로그 아웃됩니다 하나 개의 사이트에 로그인 할 때마다 추가 보너스로서
var cookie = FormsAuthentication.GetAuthCookie("username", false); // works
var ft = FormsAuthentication.Decrypt(cookie.Value); // returns correct info
var isAuthentication = User.Identity.IsAuthenticated; // false
:
나는 하나 개의 사이트에 로그인, 두 번째 사이트의 테스트 코드는 다음과 같은 결과를 가지고 .)
내가 여기에서 빠뜨리는 근본적인 것이 있어야합니다.
왜이있는 FormsAuthentication 티켓은 문제없이 해독 것으로 보인다하더라도, User.Identity.IsAuthenticated
세트 false
있나요?
업데이트 : 아래에 지적한대로 - FormsAuthentication.GetAuthCookie
은 기존 인증 쿠키를 얻는 유효한 방법이 아닙니다. 어느 날이 날 가져온다 : 브라우저에서 최상위 도메인 쿠키를 볼 수 있지만 요청에 표시되지 않습니다. 나는 이것이 문제가 발생한 곳이라고 생각한다.
해결 방법 : Web.config의에 의해 지정된 두 사이트는 닷넷 프레임 워크의 동일한 버전을 대상으로하지 않은 :
<httpRuntime targetFramework="4.5" />
<compilation debug="true" targetFramework="4.5" />
을 문제를 해결 같은 프레임 워크를 대상으로 두 사이트를 업데이트.
이 스레드가 도움이 될 수 있습니다. http://stackoverflow.com/questions/30091530/request-isauthenticated-always-returning-false –