2014-04-03 2 views
0

방금 ​​새로운 작업을 시작했으며 기존 앱을 개선하기위한 첫 번째 작업으로 할당되었습니다. 이 응용 프로그램은 프로파일 생성, 에디션 ....이있는 간단한 프로파일 매니저이며 클레임 기반 권한을 사용하여 현재 사용자가 새 프로파일을 만들 수 있는지 여부를 결정합니다.청구 기반 승인, 예외를 피할 수 있습니까?

필자는 이러한 종류의 인증 시스템에 익숙하지 않았기 때문에 많은 것을 읽었습니다. 이제는 제대로 작동하는 앱의 보안 클레임을 업데이트했습니다.

그러나 뭔가가 나를 괴롭힌다. 지금까지 내가 이해, 행동의 가능성을 확인하는 두 가지 결과가 있습니다 당신은 그것을 할 수 있습니다

  1. 을, 아무 일도 일어나지 않는다, 쿨 (즉, 사용자 정의 주장 매니저는 반환 true 구현).
  2. 허용되지 않았습니다 (권한 관리자는 false을 반환 함). 클라이언트에서 catch 된 예외가 throw되어 canCreateProfile 변수가 false로 바뀝니다.

표준 예를 들어이 될 것입니다 :

try 
{ 
    ClaimsPrincipalPermission.CheckAccess(Resource.Profile.ToString(), ResourceAction.Create.ToString()); 
} 
catch 
{ 
    return false; 
} 

음 ... 내가 오히려 방해 찾을 수 있습니다. 일반적인 사용 예 : 내가 읽기 전용 사용자 인 경우 새 프로필을 선택할 때마다 세 가지 예외가 발생합니다. 느리지 만 방해가되는 것

클레임 기반 권한 부여는 실제로 예외에만 의존합니까? 아니면 부울과 직접 작업 할 수 있습니까?

A first chance exception of type 'System.Security.SecurityException' occurred in Microsoft.IdentityModel.dll 어쨌든 저에게 섬뜩함을줍니다!

감사합니다.

+1

), 왜 것 그것은 "개발자"에 달려 있습니까? 내가 클레임 기반 권한을 이해하는 한, 표준 .NET 클래스는'hasAuthorization'이 false를 반환하면 Exception을 던질 것이다 ('ClaimsPrincipalPermission'는 표준 클래스 임). 실제로 "예외에 의존해야합니까?"라는 질문 사이에 궁금해하고있었습니다. 또는 "예외에 의존하는 이유는 무엇입니까?" 감사합니다 – Damascus

+0

수정 됨, 다음과 같이 좁혀 야합니다. – Damascus

답변

0

확실히 - AuthorizationContext를 직접 구성 (리소스, 작업 및 보안 주체 설정)하고 AuthorizationManager를 수동으로 호출하는 것을 막을 수있는 방법은 없습니다. FederatedAuthentication 클래스를 통해이 클래스에 접근 할 수 있습니다.

http://leastprivilege.com/2012/10/26/using-claims-based-authorization-in-mvc-and-web-api/

은 V5/v2를 https://github.com/thinktecture/Thinktecture.IdentityModel/blob/master/source/Thinktecture.IdentityModel.WebApi/ResourceActionAuthorizeAttribute.cs

로 업데이트 MVC/웹 API에 대한 예제이며,이 기본 배관입니다 : 1에 관해서는 https://github.com/thinktecture/Thinktecture.IdentityModel/blob/master/source/Thinktecture.IdentityModel.Core/ClaimsAuthorization.cs