문제

인증이 상위 도메인 대신 하위 도메인에서 발생할 때 하위 도메인에서 사용자를 인증 할 수 있습니까?

예를 들어:

사용자는 site1.parent.com에 로그인 한 다음 reporting.parent.com으로 보내야합니다.

로그인이 하위 도메인에서 발생하더라도보고 사이트에 인증 할 수 있습니까?

지금까지 내가 수행 한 모든 연구는 사용자가 먼저 부모 도메인에 로그인 한 다음 각 하위 도메인은 인증 쿠키에 액세스 할 수 있습니다.

도움이 되었습니까?

해결책

인증 시간에 쿠키를 부모 도메인으로 설정할 수 있지만 명시 적으로 설정해야합니다.

인증 쿠키가 부모 도메인으로 올바르게 설정되면 모든 하위 도메인이 읽을 수 있어야합니다.

다른 팁

사용자를 인증하면 인증 쿠키 도메인을 두 번째 레벨 도메인 인 parent.com으로 설정하십시오. 각 하위 도메인은 요청에 따라 상위 도메인의 쿠키를 받으므로 공유 인증 쿠키가 제공되므로 각각의 인증이 가능합니다.

인증 코드 :

System.Web.HttpCookie authcookie = System.Web.Security.FormsAuthentication.GetAuthCookie(UserName, False);
authcookie.Domain = "parent.com";
HttpResponse.AppendCookie(authcookie);
HttpResponse.Redirect(System.Web.Security.FormsAuthentication.GetRedirectUrl(UserName, 
                                                                       False));

부수적으로, 나는 +1의 잘 작동하는 Jro의 메소드를 사용한 후에 formsauthenication.signout () 메소드가 www/이외의 하위 도메인에서 호출 될 때 작동하지 않았다는 것을 발견했습니다. (도메인 속성이 일치하지 않기 때문에 추측하고 있습니다) -이 문제를 해결하기 위해 사용했습니다.

if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
            {
                HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
                myCookie.Domain = "parent.com";
                myCookie.Expires = DateTime.Now.AddDays(-1d);
                Response.Cookies.Add(myCookie);
            }

쿠키를 부모 도메인으로 설정하는 것 외에도 모든 사이트 (앱)에 동일한 검증 키와 해독 키 ()가 있어야하며 모두 서로의 인증 티켓과 쿠키를 인식해야합니다. 여기 꽤 좋은 기사 http://www.codeproject.com/kb/aspnet/singlesignon.aspx

물론이지. 어떤 단계에서 자신을 굴려야 할 수도 있지만 가능해야합니다.

한 가지 아이디어 : 경계를 가로 질러 리디렉션 할 때 한 번의 패스 토큰을 제공 한 다음 수신 하위 도메인에게 (이 사용자,이 IP 에서이 토큰으로) 기대하도록 지시하십시오.

JRO의 대답은 잘 작동합니다. 그러나 WebConfig Forms 인증을 업데이트하십시오 setting "domain"그렇지 않으면 인증이 제대로 작동하지 않습니다. 여기 내가 만난 가입 문제입니다. 여기서 트릭은 ''를 갖는 것입니다. 도메인으로서의 접두사는 쿠키에 ".parent.com"으로 설정되어 있습니다 (쿠키 검사관 사용).

<authentication mode="Forms">          
      <forms cookieless="UseCookies" defaultUrl="~/Default" loginUrl="~/user/signin" domain=".parent.com"  name="FormAuthentication" path="/"/>
    </authentication>

해야 할 일 :

  1. machinekey는 모든 web.config에서 동일해야합니다 (메인 도메인 및 서브 도메인)
  2. AuthenticationCookie 도메인 이름은 동일해야합니다.

다음을 따르십시오 수행원 더 깊이에 대한 기사.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top