1

웹 API/OWIN/OAuth를 사용하여 클레임 기반 인증 설정을 구현하려고하는데 더 많은 것을 관리하는 가장 좋은 방법을 찾으려고합니다. 세분화 된 유형의 권한 부여.웹 API/OWIN에서 클레임의 큰 목록을 사용하기위한 모범 사례

저는 작업중인 응용 프로그램에 정교한 권한이 많이 필요하기 때문에 그냥 역할을 사용하는 것을 좋아하지 않습니다. 저는 역할 + 권한 접근법이 더 의미가 있다고 생각했습니다. (역할이 단순히 권한의 하위 집합에 매핑되는 경우). 사용 권한은 작업 + 리소스 쌍 (예 : CanViewEmployee, CanEditEmployee 등)을 기반으로합니다. 여기서 평범하지 않은 것은 없습니다.

그러나 OWIN/OAuth를 사용하여 어떻게 구현해야하는지, 아마도 Thinktecture IdentityServer를 사용하고 있는지 궁금합니다. 난 그들이 다시 작성하지 않고 쉽게 변경해야 할 필요가있는 사용자 지정 AuthorizationManager에서 사용 권한을 하드 코딩하는 것을 피하려고합니다. web.config (리소스 + 작업을 클레임 유형 및 값에 매핑)에 이러한 정책을 적용하는 것이 옵션이지만, 수십, 어쩌면 수백 개의 사용 권한에 대해서도 말하면, 손에서 꽤 빨리 또한.

제 3의 옵션은 데이터베이스에서 모든 것을 몰아내는 것이지만, 거기에서 관리하는 것은 프런트 엔드의 일종을 필요로 할 것이며 이는 config/XML 파일을 변경하는 것보다 더 많은 노력입니다.

많은 수의 소유권/사용 권한 또는 숫자가 손 상되었을 때이를 관리하는 데 사용할 수있는 다른 유틸리티 나 패키지에 관해서는 다른 옵션/모범 사례가 누락 되었습니까?

답변

0

이러한 권한을 별도의 권한 관리자 클래스로 분리하면 좋은 첫 번째 단계입니다. 그런 코드에서는 권한 (예 : "관리자"역할은 X, Y 및 Z 작업을 수행 할 수 있지만 "관리자"역할 만 X 또는 Y를 수행 할 수 있음)에 대한 규칙을 하드 코딩 할 수 있습니다. 그러나 권한 관리자에서 동적 룩업을 수행하여 데이터베이스에 설정된 권한 (예 :)을 점검하도록 코드를 지정할 수도 있습니다.

코드에서이 작업을 수행하는 또 다른 이점은 권한 논리가 올바르게 구현되었음을 증명하기 위해 단위 테스트를 통해 런타임시 올바르게 적용된다는 것입니다. 권한이 자주 변경되는 경우 유용합니다.

또한 빈번한 변경 때문에 코드를 자체 어셈블리로 분리 할 수 ​​있기 때문에 디커플링을 자주 사용하면 도움이됩니다.

+0

맞아요, 이해합니다. 그러나이 방법이 많은 권한을 관리하는 가장 좋은 방법인지 알아 내려고하고 있습니다. 코드에서 코드 변경을 피하고 권한 (필연적으로)이 변경 될 때 재 작성을 피하고 규칙을 사용하여 수백 줄의 코드가 작성되는 것을 피하기 위해 DB에서 수행하는 방향으로 기울여 왔습니다. 관리 화면을 통해 동적으로 변경하십시오. 나는 단지 내가 뭔가를 놓치고 있지 않다는 것을 확실히하고 싶었고 그곳에는 더 좋은 선택이 없었다. – ChrisC

+0

잦은 업데이트를 위해 장치 테스트 및 격리의 이점을 추가하여 업데이트되었습니다. 자주 변경되는 사용 권한에 관해서는 말하기가 어렵습니다. 아마도 그것들은 코드가 아닌 DB에 플래그가 있어야합니다. –

+0

그래, 나는 확실히 DB를 향해 더 기대고있다. 정보 주셔서 감사합니다! – ChrisC