2012-02-03 4 views
3

클레임을 정의하는 방법을 이해하는 데 어려움을 겪고 있습니다. 클레임 작성에 대한 웹에 대한 많은 정보가 있지만 그 중 어느 것도 동의하는 것으로 보이지 않습니다.WIF : 맞춤 클레임

  • ClaimType
  • ClaimValue
  • , 치
  • 오른쪽 당신이 주장을 만들 시나리오 감안할 때

의미 A : 다른 글에서 주장의 네 가지 특성을 발견했다 사용자가 User 객체를 편집 할 수있는 권리가 있습니다. 이러한 속성을 설정하는 올바른 방법은 무엇입니까?

또한 WIF에서는 "오른쪽"특성에 대한 속성이없는 것 같습니다. "권리"는 WCF의 맥락에서만 사용됩니까?

혼란스러워, 도와주세요!

편집 :

답장을 보내 주셔서 감사합니다.

1 ClaimType = 편집, ClaimValue이 = 사용자

2 ClaimType = 액션, ClaimValue = EditUser

옵션 : 나는 현재 내 사용자 지정 클레임에 대한 두 가지 옵션을보고하고,이 조금 더 구체적를 만들려면 하나는 더 많은 "클레임 기반"이고 옵션은 "역할 기반"으로 보인다. 생각?

답변

1

소유권 주장에 올바른 속성이 있어야한다는 것을 나는 잘 모르겠다. 개념의 오용이라고 생각한다.

소유권 주장 자체는 사용자 권한을 전달하지 않습니다. 오히려 :

클레임 세트 + 정책 = 사용자 권한.

일반적으로 클레임 기반 응용 프로그램은 들어오는 사용자 클레임 집합에 정책을 적용하여 권한 결정을합니다. 역할 기반 액세스가 가장 일반적이므로 이러한 결정은 User.IsInRole ("Manager")처럼 간단 할 수도 있습니다.이 관리자는 단순히 사용자를 확인하기 위해 ClaimType = "http://schemas.microsoft.com/ ws/2008/06/identity/claims/role "이고 ClaimValue ="Manager "입니다.

온라인 주류 판매점에서는 21 세 이상이어야 사용자가 연령을 확인할 수 있습니다. 그러나이 웹 사이트의 캐나다 버전에 대해 연령 제한이 18 일 때와는 다른 정책이 적용됩니다. 이러한 권리가 소유권 주장을 통해 전달 된 경우 이러한 유형의 정책 유연성은 불가능합니다.

4

.Net에는 두 가지 Claim 유형이 있습니다. 하나는 WIF (Microsoft.IdentityModel.Claims)이고 다른 하나는 System.IdentityModel.Claims인데 WCF 이전 WIF에서 사용되었습니다 (WCT의 일부는 아닙니다). 언급 한대로 System.IdentityModel.Claims.Claim에만 Right 속성이 있습니다.

저는 WCF와 ASP.Net의 소유권 주장 접근법을 WIF의 유무에 관계없이 사용했으며, WIF 프로그래밍 모델은 확실히 두 가지 중 더 간단합니다.

설명하는 사용자 편집 시나리오의 경우 적합한 이름으로 역할을 정의합니다. UserEditor는 괜찮을 수 있지만 매우 특이하게 들립니다.해당 사용자에게 부여하려는 모든 권한 모음을보고 적합한 요약 이름 (아마도 UserAdministrator?)을 제시해야합니다.

해당 사용자의 경우 역할 신청 (예 : http://schemas.microsoft.com/ws/2008/06/identity/claims/role 또는)을 추가해야합니다. ID 공급자가 응용 프로그램 외부에 있고 문제가되는 클레임을 제어 할 수없는 경우 새 역할 클레임을 추가하여 발행 된 클레임 집합을 변환하는 사용자 지정 ClaimsAuthenticationManager을 구현해야합니다.

그럼 당신은이 같은 PrincipalPermissionAttribute 뭔가 액세스 권한을 부여 할 작업을 장식 할 수 있습니다

[PrincipalPermission (으로 SecurityAction.Demand, 역할 = "UserAdministrator")]

이 프레임 워크는 매우 유연합니다 ASP.Net, WCF 또는 일반 .Net 개발에서 여러 가지 다른 방식으로 사용할 수 있습니다. 귀하의 질문은 예제를 가지고 매우 구체적인 대답을 할 수있는 많은 문맥을 제공하지 않습니다.