SaaS 애플리케이션의 일반적인 문제처럼 보이지만 여기 어디서나이 질문을 보지 못했습니다.ASP.NET MVC 하위 도메인 별 승인
폼 인증과 함께 ASP.NET MVC를 사용하고 있습니다. 논리를 처리 할 사용자 지정 멤버 자격 공급자를 구현했지만 한 가지 문제가 있습니다. 아마도이 문제는 내 시스템의 정신적 인 그림에 있습니다.
많은 SaaS 앱에서와 마찬가지로 고객은 계정을 생성하고 현재 존재하는 유일한 것으로 보이는 방식으로 앱을 사용합니다 (항목, 사용자 등만 표시). 실제로 URL에 표시된 고객에 따라 데이터를 표시하는 일반 컨트롤러 및 뷰가 있습니다. MembershipProvider.ValidateUser와 같은 것을 호출 할 때 User 객체에있는 사용자의 고객 소속에 액세스 할 수 있습니다. 사용자와 동일한 고객에 대한 데이터 요청인지 여부를 비교하기위한 요청 컨텍스트가 없습니다. 예를 들어
는한 회사는 ABC가 abc.mysite.com 간다라는
또 다른 회사는 XYZ가 ABC 사용자가
를 호출하면을 xyz.mysite.com 간다라고
http://abc.mysite.com/product/edit/12
ProductController의 Edit 메서드에 [Authorize] 특성을 사용하여 사용자가 로그인되어 있으며이를 수행 할 수있는 충분한 권한이 있는지 확인합니다.
은 같은 ABC 사용자는http://xyz.mysite.com/product/edit/12
내가 그 전화의 맥락에서 그 유효성을 검사 싶지 않을 것이다에 액세스하려고합니다. MembershipProvider의 ValidateUser에는 사용자에 대한 정보가 있지만 요청에 대한 정보는 없습니다. 나는 사용자가 ABC 출신이라고 말할 수 있지만 코드의 해당 지점에서 XYZ에 대한 요청임을 알 수 없다.
어떻게 해결해야합니까?
xyz에 갈 때 어떤 행동을 원하십니까? ...? 올바른 사이트로 리디렉션 하시겠습니까? 액세스가 거부 된 페이지입니까? 다른 것? 이 경우 '12'는 xyz 사이트의 누군가에게 고유 한 ID가 아니므로 항목 12를로드 할 때 어쨌든 액세스를 거부하게됩니까? 사용자가 올바른 도메인에 있다는 별도의 확인을 원하는 것처럼 들리겠습니까? –
나는 그가 시도하면 어떻게 해야할지 생각하지 않았다. 나는 단지 고객이 한 고객이 다른 고객으로부터 데이터를 얻는 것을 파악하기 위해 높은 수준으로 가고 싶다는 것을 알고 있습니다. 지금 당장, 내 논리는 단지 그가 일반적으로 조치를 취할 수 있는지 여부를 테스트 할 것이지만 고객 계정에 대한 조치를 취할 수 있는지 여부는 테스트하지 않을 것입니다 (적어도 [Authorize] 코드에서). –