MVC 응용 프로그램에서 OpenID-Connect를 사용하여 Azure AD 인증을 구현하고 관리되는 역할 - 클레임을 사용하여 응용 프로그램에서 역할 관리를 사용하도록 설정했습니다.사용자 지정 클레임 MVC 응용 프로그램의 ID 관리
이제 클레임 수가 매우 높기 때문에 신청서에서 클레임을 관리하는 데 새로운 문제가 있습니다.
SQL DB : 1) 마스터 항 표 2) 역할 표 3) 역할 ID - ClaimID 대응표 4) UserClaims 표 - 아이디와 역할 ID 매핑을 유지한다 이것은 어디
C 중 # :
var identity = new ClaimsIdentity(new[] {
new Claim("UserMgt:Maintenance", "True"),
new Claim("UserMgt:Add", "True"),
new Claim("UserMgt:Add", "True")
},
"ApplicationCookie");
. . .
성능이 저하되는지 확실하지 않습니다. 우리는 Azure에서 응용 프로그램을 호스팅하고 사용자가 로그인 한 즉시 재발행에 클레임을 저장 한 다음 모든 페이지에서 해당 클레임을 읽음으로써 각 페이지/모듈에서 액세스 권한을 제공합니다.
더 좋은 제안이 있으면 알려주세요.
고맙습니다.
답장을 보내 주셔서 감사합니다. 이 문제에 대한 해결책이 있습니까? 페이지 탐색을 기반으로 클레임을 추가 할 생각이었습니다. 해당 페이지의 작업 권한은 클레임으로 변환됩니다. 사용자가 해당 페이지에서 벗어나면 소유권 주장이 사용자 ID에서 해제됩니다. 그래서 우리는 인증 쿠키의 크기를 제어 할 수 있습니다 .. 나는이 시나리오를 처리하기 위해 더 나은 솔루션을 모색하고 있습니다. 모든 주장을 덤프하고 페이지를 느리게하고 싶지 않습니다 ... – user3527063
내 솔루션은 모든 것을 클레임에 넣는 것이 었습니다. 그것이 문제가 될 때까지 그것에 대해 걱정하지 마십시오. 생산 과정에서 많은 양의 데이터가 아니라는 사실이 밝혀졌습니다. 특히 숫자로 권한을 인코딩하는 경우. 허용 된 작업에 대한 페이지 및 열거 형에 enum을 사용했습니다. 그래서 클레임은'새로운 클레임 ("42", "1")과 같습니다. 여기서'42'는'MyClaimsEnum.UserManagement'로,'1'은'MyEnumActions.View'로 변환됩니다. – trailmax
약 50 개의 소유권 주장 (일부 소유권은 동일한 소유권 주장에 해당)과 4 개의 작업 (보기, 만들기, 수정, 삭제)이있는 약 100 개의 다른 페이지가 있습니다. 그리고 주장에 너무 많은 데이터가있는 문제는 없었습니다. 다른 말로하면, 아직 가지고 있지 않은 문제를 해결하려고한다는 말입니다. – trailmax