2011-04-23 5 views
2

최상위 도메인 & 하위 도메인 모두에서 작동하는 폼 인증을 사용하려고합니다. 예를 들어폼 인증 및 하위 도메인

, 내가이 도메인에 로그온하는 경우 : mydomain.com, 그 후 내가 에 로그온 한 사용자를 식별 할 수있는 능력을 갖고 싶어 www.mydomain.com에가는 mydomain.com (그것은 같은 응용 프로그램입니다).

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" domain="mydomain.com" timeout="2880" /> 
</authentication> 

이는 MVC 프로젝트, 그리고 난 다음 API와 사용자 ID를 받고 있어요 : 내가 파일 내 의 web.config에 다음을 사용하고

HttpContext.Current.User.Identity.Name 

양식 인증 쿠키는 사용자에게 openid 로그온을 수행 한 후 다음 API로 생성됩니다.

FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); 

인증 쿠키가 두 도메인 모두로 전송되지만 인증을받은 도메인 만 사용자를 인식한다는 것을 알 수 있습니다.

내가 잘못 했나요?

감사합니다, 리 오르

+0

[하위 도메인에서의 양식 인증] 가능한 복제본 (http://stackoverflow.com/questions/608120/forms-authentication-across-sub-domains) – rcdmk

답변

1

This question는 당신과 완전히 동일하지 않습니다,하지만 당신이 찾고있는 솔루션입니다 것 같습니다.

3

해당 두 응용 프로그램에 대해 machine keys 설정이 동일한 지 확인하십시오. 인증 토큰이 응용 프로그램 1의 컴퓨터 키로 암호화되고 응용 프로그램 2에 다른 키가있는 경우 암호를 해독 할 수 없습니다.

1

하위 도메인에서 인정 받기 위해서는 최상위 도메인에서 티켓을 발급 받아야합니다. 쿠키가 작동하는 방식 때문입니다.

domain.com에서 쿠키를 설정하면 sub.domain.com에 표시됩니다. sub.domain.com에 설정하면 표시되지 않습니다. domain.com

쿠키로 인해 보안 문제가 발생하므로 <form> 요소의 설정 (인증 쿠키 유효성 검사/거부와 관련 있음)을 고려해야합니다. 여기서는 domain='domain.com'이 필요합니다. , 당신은 이미합니다.

이 외에도 하위 도메인에 다른 응용 프로그램이있는 경우 컴퓨터 키를 동일하게 명시 적으로 정의해야합니다. 여기에 몇 가지 키를 직접 생성 할 수 있습니다 : http://aspnetresources.com/tools/machineKey