2013-06-18 5 views
1

하나는 기본 도메인에 있고 다른 도메인은 다른 도메인에있는 두 개의 응용 프로그램이 있습니다. 하나는 기존 사이트이고 다른 하나는 새 사이트입니다. 클래식 ASP, .Net2 웹 폼 및 MVC3을 혼합하여 기존 사이트 (4.0)를 MVC4를 사용하는 새 사이트 (4.5)로 천천히 변환하고 있습니다. 현재 전체 레거시 사이트를 변환 할 수는 없습니다.공유 세션 Windows Server AppFabric 세션 캐시를 사용하는 두 개의 .net 4.0 웹 응용 프로그램 (도메인 및 하위 도메인) SECURELY

요구 사항은 사이트의 링크를 원활하게 클릭하고 다른 사이트로 전환하는 것입니다. 사용자는 site1이 site2의 일부가 아니며 그 반대의 경우도 발생하지 않습니다. 인증은 사용자 정의 로그인과 SSL을 사용하는 방화벽 dmz 및 외부 고객 마주 사이트 뒤의 Windows 인증을 혼합 한 것입니다.

사용자 세션과 데이터는 app1과 app2간에 어떤 방식 으로든 공유되어야합니다. 정부 기관이므로 보안이 최우선입니다. 이는 또한 윈도우 서버를 실행하는 부하 분산 환경에있을 것입니다 2012 년

나는 다음의 방법이 확실하지 오전 :

  1. 이러한 세션을 공유하는 가장 좋은 가장 안전한 방법입니다. Win2012의 Appfabric, State Server 및 SQL Server (AF는 공급자로 사용할 수 있음)는 모두 공정한 게임입니다.

  2. 브라우저 UI 페이지를 원활하게 전환하는 방법. 아마도 App1 또는 App2 중 하나를로드하는 IFrame이있는 마스터 통합 UI 메뉴를 사용하려고 생각했습니다. 그러나 나는 이것이 가장 좋거나 가장 안전한 방법이 아니라고 생각합니다. 선행 조건은 자바 스크립트 사용 가능 사용자 만 가능합니다.

은이 주제에 대한 연구를 수행하고 웹 설정에서 sharedid와 Appfabric 세션 캐시 보았다,하지만 그조차 내 요구 사항의 일부를 충족하는 경우 또는 갈 바람직한 방법입니다 있는지 확실하지 않다있다 .

도움을 주시면 감사하겠습니다.

감사합니다.

답변

1

예, AppFabic 세션 상태 공급자는 응용 프로그램간에 쉽게 세션을 공유 할 수 있습니다. 기본적으로 캐시 클라이언트와 캐시 클러스터간에 전송되는 데이터는 암호화되고 서명됩니다. 또한 캐시 클러스터의 모든 클라이언트는 Grant-CacheAllowedClientAccount cmdlet을 통해 허용 된 클라이언트 계정 목록에 구체적으로 추가되어야합니다. 이 관점에서 보면 안전합니다.

두 개의 응용 프로그램을 기본 도메인에 하나씩 다른 도메인에 다른 도메인에 있습니다.

그게 문제입니다. 항상 review basic session concepts에게 유용합니다. 세션 상태 공급자 인 AppFabric은 SessionID를 사용하여 분산 캐시에 세션 내용을 가져 오거나 저장합니다 (참고 : 모든 공급자에 대해 동일). 기본적으로 SessionID 값은 쿠키에 저장됩니다. 쿠키에는 범위 = 도메인 (및 경로)이 있습니다. 쿠키는 주어진 도메인과 경로에 대해서만 쿠키를 서버로 다시 보내야한다고 브라우저에 알려줍니다. 분명히 도메인 A에서 도메인 B로 쿠키를 보내는 것은 쓸데없고 안전하지 않습니다.

웹 사이트 간의 세션 공유는 웹 사이트간에 asp.net 세션 쿠키를 공유해야한다는 것을 의미합니다. siteA가 domainA에서 호스팅되고 siteB가 domainB에서 호스팅되는 경우 불가능합니다 (참고 : 누군가 해결책을 가지고 있다면 매우 흥미 롭습니다).