2011-03-07 5 views
0

두 개의 동일한 웹 사이트가 있습니다. 하나는 apac.ourdomain.com에 있고 다른 하나는 eu.ourdomain.com에 있습니다. 이 웹 사이트에 대한 유일한 차이점은 호주에서 호스팅되는 웹 사이트와 런던에서 호스팅되는 웹 사이트 중 하나입니다. 그들이 백업 한 데이터베이스는 호주에있는 것을 제외하고는 다른 스키마가 있습니다. 다른 하나는 런던에 있으며, 각각은이 지역의 파트너와 관련된 데이터를 저장합니다.ASP.NET에서 사용자 자격 증명을 지역 사이트로 리디렉션

폼 인증을 사용하여 @www.ourdomain.com의 일종의 집중식 방문 페이지를 구현하고 싶습니다. 파트너가 www.ourdomain.com에 로그온하면 apac 또는 eu 서버로 리디렉션됩니다. 나의 도전은 방문 사이트의 사용자 자격 증명을 지역 사이트로 어떻게 전송합니까? 신임장은 사용자 이름에서 역할/권한까지 모든 것을 의미합니다. 사용자가 지역 사이트로 리디렉션되면 세부 정보를 수정해야 할 때 방문 사이트로 다시 가져올 수 있습니까?

방문 사이트에 대한 중앙 집중식 사용자 세부 정보 DB가 있어야한다는 것을 알고 있습니다. 그러나 나중에 지역 사이트와의 통신이 확실하지 않습니다. 어떤 포인터?

+0

어떤 인증 메커니즘을 사용하고 있습니까? –

+0

어떤 버전의 ASP.NET과 어떤 인증 공급자입니까? –

+0

혼란 스럽습니까? 두 번째 질문하기? http://stackoverflow.com/questions/5214227/asp-net-redirecting-user-credentials-to-different-regional-sites – TurBas

답변

0

경우에 따라 사용자 이름과 암호 또는 암호 해시 등 일부 공용 정보 만 가질 수 있지만 사용 권한 및 사안은 없습니다. 권한 및 기타 이와 같은 정보는 각 지역 데이터베이스에 상주 할 수 있습니다.

사용자가 인증되면 기본적으로 쿠키가 설정됩니다. 일반적으로 쿠키는 암호화됩니다. 그러나 암호화는 기계에 따라 다릅니다. 그래서 http://msdn.microsoft.com/en-us/library/ff649308.aspx

기본 ASP.NET 설정이 폼 인증 티켓 변조 방지 및 암호화되어 있는지 확인 당신이 당신의 설정 파일에 machineKey를 구성하지 않는 한, 다른 서버가 작동하지 않습니다 하나를 작동하도록 기대하고의 ViewState입니다 변조 증거. 이렇게하면 서버가 데이터를 처리 할 때 클라이언트의 컴퓨터 나 네트워크를 통해 ViewState 또는 인증 티켓을 수정하는 작업이 감지됩니다.

쿠키는 도메인에 고유하며 쿠키를 설정할 때 루트 도메인을 지정하지 않으면 하위 도메인에서 사용할 수 없습니다.

기본적으로 쿠키를 직접 설정한다고 가정 해 보겠습니다. 이 쿠키에는 value와 datetime으로 userId가 포함되어 있습니다. 이 정보는 암호화되고 루트 도메인에 대해 쿠키가 설정됩니다. 그런 다음 지역 웹 사이트로 리디렉션하면 쿠키를 추출하고 해독 한 다음 사용자에게 "자동 로그인"할 수 있습니다.

FormsAuthentication 프레임 워크를 사용하여 모든 작업을 수행하려면 설정을 조정하여 간단히 작동시킬 수는 없습니다. 이제 FormsAuthentication 개념을 사용하고 인증을 소유 할 수 있습니다. 그러나 Http와 ASP.NET 및 기타 것에 익숙하지 않은 경우이 작업은 너무 복잡 할 수 있습니다.

또 다른 대안은 아마도 안전한 방법이 필요한지 여부에 따라 이전에 지역 사이트에서이 리디렉션 된 페이지를 받으면 일반 http 호출을 통해 중앙 데이터베이스에 대해 확인할 수 있다는 차이점을 앞에서 설명한 내용을 수행하는 것입니다 HttpWebRequest 또는 이와 유사한 중앙 웹 응용 프로그램의 처리기를 사용하여 사용자가 중앙 시스템에서이 쿠키를 실제로 받았는지 확인합니다.

다른 옵션으로 인해 여러 물리적 사이트가 귀찮습니다. 중앙 시스템을 호스트하기 만하면 로그를 사용하는 사용자에 따라 차이 데이터베이스에 연결하고 잠재적으로 다른 측면도 변경되지만 시스템과 도메인은 하나만 존재합니다.

+0

감사. 심부름꾼을 파 내기에 충분합니다. – Erik

관련 문제