ASP.NET ID에서 큰 쿠키를 더 작은 것들로 분리하는 방법은 많은 청구를 허용합니까?
-
21-12-2019 - |
문제
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 패션에서는 사용자 정의 권한 부여 속성을 만들고 클레임 쿠키에서 사용자의 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) {....}.