도메인별로 WCF 서비스 (IIS에서 호스팅되는 웹)를 분리했습니다. ClaimsAuthorizationManager를 추가하고 CheckAccess 메서드를 재정 의하여 일부 보안 기반 보안을 추가했습니다. Basicaly, 우리는 ClaimsPrincipal이 메소드를 실행하는 데 필요한 권한을 가지고 있는지 확인합니다. ClaimsAuthorizationManager 내부모든 WCF 호출에 추가 매개 변수 추가
public DemandePaeDto ObtenirInfoDemandePAE(int idPreDemande, int numeroSequencePreDemande)
{
if (!ClaimsPrincipal.Current.CheckAccess(Management, "DoSomething"))
return null;
: 서비스 방법 내부
우리가 다른 테스트 도구의 WCF 스톰과 서비스의 기능을 테스트 할 때
public class FacadeClaimsAuthorizationManager : ClaimsAuthorizationManager
{
public override bool CheckAccess(AuthorizationContext context)
{
var user = context.Principal;
var resource = context.Resource.First().Value;
foreach (var action in context.Action)
{
switch (resource)
{
case "Management":
case "Sales":
case "Product":
if (user.HasClaim(OurOwnCustomClaimTypes.Permission, action.Value))
{
return true;
}
break;
//Pour les cas non gérés
default:
return false;
}
}
return false;
}
}
문제는, 보안 모드를 false로 설정 했으므로 클레임이 없습니다. 따라서 모든 호출에 맞춤 매개 변수를 추가하고 싶습니다. 그렇게하면 CheckAccess 메서드에서 true를 반환하여 우회 할 수 있습니다. MessageInpectors에 대해 생각해 보았지만 여전히 올바른 접근 방법인지 궁금해하고 있습니다. 계약서에 param을 추가하고 싶지는 않습니다. 애플리케이션의 모든 호출을 수정해야하기 때문입니다.
의견이 있으십니까?
ClaimsAuthorizationManager에서 true를 반환하는 것이 목표이지만이 환경에서 UI를 테스트하기 때문에 그대로 유지해야합니다. UI 사용에 영향을주지 않고 서비스 만 테스트해야합니다. –
서비스의 다른 권한 부여 관리자에 대해 테스트 할 수있는 UI에 어떤 종류의 UI가 영향을 미치는지 나는 알 수 없습니다. 설명 할 수 있니? – nvoigt
UI에서 보안 테스트를 위해 실제 ClaimsAuthorizationManager를 계속 사용하고 싶습니다. 하지만 우리가 서비스 만 테스트 할 때 나는 그것을 원하지 않습니다. –