3

권리 관리를 위해 클레임을 사용하는 것이 가장 좋은 방법입니까?웹 API 및 .NET 4.5 : 클레임 및 권한

새로운 .net 4.5 및 새로운 클레임 클래스를 사용하고 있습니다. 현재 내가 그런 일을 수행

new ClaimsIdentity(new List<Claim> 
        { 
         new Claim("Username", user.UserName), 
         new Claim("UserNumber", user.UserNumber.ToString()), 
         new Claim("Creation_Right", ""), 
         new Claim("Edit_Right", "") 
        } 

내가 값을 사용하지 않고 오른쪽 주장을 추가합니다. 나중에 존재 여부이 있는지 확인합니다. (true/false와 같은) 값은 필요 없습니다. 존재하는 경우, 암시 적으로 ' true'입니다.

더 좋은 방법이 있습니까?

답변

1

아마도. 현재 인증 및 권한 부여를 병합하여 인증 순간에 액세스 정책을 결정하는 것처럼 보입니다.

인증 구성 요소를 인증 구성 요소와 구분하여 분리 할 수도 있습니다. 클레임은 권한 결정을 내리는 데 사용할 수있는 사용자에 관한 일련의 정보를 나타냅니다. 즉, autheNtication 단계에서 일련의 클레임이 생성되고 사용자가 무언가에 액세스하려고 할 때마다 이러한 클레임이 권한 부여 구성 요소로 전달되어 결정을 내립니다.

이것은 권한 부여 정책이 청구 시스템에서 독립적으로 변경되고 발전 할 수있는 유연성을 제공합니다. 예를 들어 누군가를 관리자로 식별하는 역할 클레임을 발급 할 수 있으며 스마트 카드 나 사용자 이름 및 암호를 사용하여 로그온 한 방법을 지정하는 인증 방법 클레임을 발급 할 수도 있습니다. 이렇게하면 액세스 정책을 정의 할 수있는 권한이 생기고 일부 리소스에 액세스하려면 관리자 역할 만 필요하고 다른 중요한 리소스에는 관리자 역할이 필요하고 강력한 인증 메커니즘을 사용해야합니다. 또한 컨텍스트에 따라 여러 액세스 정책간에 전환 할 수 있음을 의미합니다. 온라인 위스키 판매점은 미국에서 ageOver21 클레임을 사용할 수 있지만 캐나다 버전의 사이트에서는 18 배 이상 또는 19 배 이상의 클레임이 필요합니다. authZ와 authN을 분리하면 이러한 종류의 유연성이 허용됩니다.

+0

안녕하세요, 아마도 내가 ASP.NET 웹 API를 사용하고 있다고 언급해야합니다. 인증 및 권한 부여는 프레임 워크에서 분리되어 있습니다. 컨트롤러의 메소드에 인증 속성을 추가하고 사용자가 인증 된 경우에만이를 호출 할 수 있습니다. 이 방법들에서 나는 클레임을 확인하고 사용자는 그렇게 할 수있다. 간단한 "관리 그룹에있다"는 나를 위해 작동하지 않습니다. 내 시스템에는 많은 권한이 있습니다. 나는 모든 권리에 대한 그룹을 추가 할 수 있습니다. (그룹은 '생성 허용됨', '삭제 허용됨'...). 그러나 이것은 생각하기에 좋지 않습니다. – user437899