ASP.NET ID에서 큰 쿠키를 더 작은 것들로 분리하는 방법은 많은 청구를 허용합니까?

StackOverflow https://stackoverflow.com//questions/25025979

문제

MVC 응용 프로그램에 대한 클레임 기반 승인의 프로토 타입을 사용하고 있습니다. 인증을 위해 ASP.NET ID를 사용합니다.

우리는 모든 컨트롤러 조치에 대한 청구를 주장하고 사용자의 주장을주고 받아들이고 누가 가는지 매우 잘 통제 할 수 있도록

우리의 응용 프로그램은 이미 800 개 이상의 작업을 가지고 있으며 성장합니다. 이 청구 수가 어떻게 처리 될 수 있는지 확인하기 위해 조금 테스트 앱을 만들었습니다. 문제가 발생합니다 : 쿠키는 4092 바이트 로 제한됩니다.

및 많은 수의 클레임을 갖는 것은 ID 인증 쿠키를 증가시킨다. 짧은 이름 / 가치 (각각 5 chars)가있는 약 600 개의 주장 (각각의 문자) 4K 이상으로 쿠키 크기를 줄 수 있으며이 수의 클레임은 로그인 할 수 없습니다. 쿠키는 브라우저에서 설정할 수 없습니다.

및 600 개의 클레임은 우리 앱의 한계가 아닙니다. 우리는 아마 그 이상을 필요로 할 것입니다.

인증 쿠키를 몇 개의 작은 쿠키로 분리하는 방법이 있습니까?

p.s. 당신이 호기심을 가지고 있다면, 여기에 나의 코드를 청구하는 코드 "프로파일 러" 나머지 프로젝트 .

p.p.s. 나는 큰 쿠키의 성능의 함의에 대해 알고 있습니다. 지금 걱정하지 않아도됩니다.

update 현재 내 대답에 대한 상자 솔루션이 없습니다. 그러나 나는이 문제가있는 유일한 사람이 아닌 것처럼 보입니다. Microsoft.Owin가 인증 쿠키를 처리합니다. 그리고 owin.cookies에 대한 현재 소스 코드는 chunkingcookiemanager 기본값으로 할당 된 cookieAuthenticationMiddleware < / a>

이 코드가 매우 신선한 나쁜 뉴스 (2014 년 7 월 10 일, 20 일 밖에되지 않음). nuget Microsoft.owin의 사전 릴리스를 통해 사용할 수 있습니다. .security.cookies . 생산 현장에서 RC2를 사용하고 싶지 않아요.

다른 방법은 무엇입니까?

도움이 되었습니까?

해결책 2

나는 직접적인 질문을 해결하지 못했습니다. 쿠키가 너무 큽니다. 많은 숫자 나 주장이 크게 남아 있습니다. OWIN V3.0 (현재 RC2는 아닌 생산 준비가되어 있지 않음)은 쿠키를 더 작은 것들로 덩어리게하는 방법을 가지고 있습니다. 그러나 큰 쿠키는 나쁘다. 그래서 나는 클레임만이 서버 측에만 유지하고 있습니다.

Identity Forum에 대한 토론 및 발견 내 질문을 완전히 해결하는 질문. 질문을 기본으로, 나는 내 자신의 솔루션을하고, 작은 mvc 앱을 프로토 타입으로했습니다 : https://github.com/ Trailmax / Claimsauthorisation .

해결책의 핵심은 시작 루틴 MVC 필터 필요한 클레임이 사용자에게 사용할 수 있는지 확인합니다.

다른 팁

클레임을 잘못 사용하고 있습니다.클레임은 사용자의 신원을 나타내며, 수행 할 작업이 아닌 사용자의 신원을 나타냅니다.사용자가 사용자 권한을 위해 주장을 하우스로 치료하기 때문에 문제가 발생합니다.귀하는 귀하의 신청서에서 두 가지를 분리하는 방법을 찾아야합니다.

MVC 패션에서는 사용자 정의 권한 부여 속성을 만들고 클레임 쿠키에서 사용자의 ID를 얻고 사용자의 ID가 일부 동작을 실행할 수 있는지 확인하는 것입니다.

관련 질문을 참조하십시오.

레코드에 대한 액세스를 제한합니다.청구 기반 사용 권한 좋은 아이디어

특정 자원에 대한 권한 부여

역할

를 사용해야합니다.
[Authorize(Roles = "Admin, Role1")]
  public ActionResult Index(string id)
{....}
[Authorize(Roles = "Admin, Role2")]
  public ActionResult Index2(string id)
{....}
[Authorize(Roles = "Admin, Role1, Role3")]
  public ActionResult Index3(string id)
{....}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top