2011-11-10 2 views
2

하늘을 배경으로 웹 사이트를 다시 작성합니다. 각 사용자는 다수의 개체에 대한 소유권을 가지며 많은 권한을가집니다. 함께, 이것들은 그들이 할 수있는 권한을 결정합니다. 문제는이 정보를 어떻게 저장해야 하는가입니다. 사용자 지정 논리를 사용하여 직접 인증을 수행하려고합니다.Azure에 대한 사용자 인증

성능상의 이유로 로그인 한 사용자별로 이러한 권한 부여 목록을 캐시하고 싶습니다. &을 저장하는 방법에 대한 샘플을 누군가가 안전하게 제공하고 효율적으로 액세스 할 수 있습니까?

편집

나는 앱 패브릭 액세스 제어에 보였다,하지만 내가 이해하지 않는 것 인증을위한 별도의 사이트를 만들어야 할 거라고으로 과도 같았다. 클레임 기반 인증은 별도로 생각할 수 있습니까? 만약 그렇다면 당신은 어떻게 할 것입니까?

전통적인 방식으로 사용자 이름을 쿠키에 보관 한 다음 각 요청에 대해 사용 권한을 얻기 위해 테이블 ​​스토리지를 다시 쿼리하는 것이 더 합리적입니까? Azure에 사용자 이름을 저장하는 방법은 무엇입니까?

매우 작은 사이트 (하늘색 표준 기준)로 인해 비용이 큰 요인이지만 소수의 사용자에 대해서는 높은 성능을 원합니다.

+0

사용 권한을 역할에 매핑 한 다음 사용자를 역할에 할당하거나 사용 권한을 사용자에게 직접 매핑합니까? 역할을 추상화 지점으로 사용하고 권한/역할이 변경되지 않으면 메모리에서 역할/권한 구조를 유지할 수 있습니다. 모든 인스턴스에서 동일 할 것입니다. 그러면 각 사용자에 대한 역할 클레임을 승인하는 인증 메커니즘 만 있으면됩니다. –

+0

Azure에 있어야합니까? 어떤면에서는 StateServer 세션 상태 모드를 지원하는 훌륭한 호스팅 제공 업체가 더 나을 것입니다. 비용이 중요한 요소이기 때문에 Azure의 계산 비용은 GoDaddy 또는 이와 유사한 것의 호스팅 비용보다 훨씬 높습니다. –

+0

저는 Azure에서 부분적으로 실험하고 있습니다. 또한 가동 시간 보장을 원합니다. Azure의 호스팅 공간을 내가 만들고 관리하는 다른 웹 사이트와 공유하려고합니다. 이로 인해보다 합리적으로 계산할 비용이 들게됩니다. – ForbesLindesay

답변

1

적당한 가용성으로 실행하려면 두 인스턴스로 사이트를 실행해야합니다. 두 개의 인스턴스로 실행중인 경우 기본 InProc 세션이없는 세션 공급자를 사용해야합니다. 귀하의 선택 사항은 다음과 같습니다

  • 푸른 저장 세션 공급자 (충분히 공정, 너무 비싸 때문에 당신이 사용하지 않는)

    • AppFabric 캐싱. Don't use this. 흥미로운 실험이지만 샘플 코드 일뿐입니다. 속도가 느리며 생산에 잘 대처할 수 없습니다.
    • SQL Server 세션 공급자.

    사용자의 권한이 로그인하는 동안 변경되지 않으면 해당 권한을 세션에 저장할 수 있습니다. 이것은 아마도 충분히 빠를 것입니다. 그러나이 정보는 세션을 사용하는 각 요청에 대해 SQL에서 읽어야하며 오버 헤드입니다.

    일을 더 빨리 만들고 싶다면 세션에 사용자 ID를 저장하고 필요에 따라 사용 권한을 정적 사전 (사용자 ID가 입력 됨)에로드하면됩니다. 이러한 항목은 일정 시간이지나거나 사용이 부족한 후에 만료되어야합니다.

  • 1

    음, Azure App Fabric 캐시를 사용하여 세션 정보를 저장할 수 있습니다. ASP.Net은 일반 사용자 지정 세션 상태 공급자처럼 세션 상태의 백업 저장소로 ASP.Net을 사용하도록 구성 할 수 있습니다.

    MSDN에서이 문서

    당신이 그것을 구성하는 방법을 보여줍니다 :

    http://msdn.microsoft.com/en-us/library/windowsazure/gg278339.aspx

    코드에서 방금 /가 상태를 설정 얻기 위해 정상 ASP.Net 방법을 사용합니다.

    비싸기 때문에 (128MB 캐시의 경우 월 $ 45).

    +0

    +1 좋은 제안입니다. 불행히도, 그 비용은 엄청나게 클 것이고, 나는 그것보다 작은 것보다 더 많은 것을 사용하고 있을지는 모르겠다. 꽤 낭비 적이다. – ForbesLindesay

    +0

    죄송합니다 : o (단 하나의 역할 인스턴스 만 사용하지 않는 한 문제는 분산 캐시 또는 테이블 저장소와 같은 영구 저장소가 필요하다면 성능 문제가 다시 발생한다는 것입니다.) StateServer 모드가 유용 할 것입니다. 그러나 Azure가 단일 역할 인스턴스를 갖고 있다면 높은 가용성 보장을 얻지 못할 것이며 Azure는 약간의 낭비처럼 보일 것입니다. –

    관련 문제