static async Task Main(string[] args) { var sc = new ServiceCollection(); ConfigureServices(sc); var sp = sc.BuildServiceProvider(); IPolicyDecisionPoint pdp = sp.GetService <IPolicyDecisionPoint>(); var ctx = new OfficeAuthorizationContext("Enter", new string[] { "employee" }); try { var authorizationResult = await pdp.EvaluatePolicy(ctx, new ConsoleEnforcerLogger()); Console.WriteLine(authorizationResult.Outcome); PrintPolicyActions("Obligation", authorizationResult.Obligations); PrintPolicyActions("Advice", authorizationResult.Advice); } catch (PolicyCompilationException compilerErrors) { Console.ForegroundColor = ConsoleColor.Red; foreach (var error in compilerErrors.Errors) { Console.WriteLine($"{error.Line}:{error.Column} {error.Message} "); } Console.ResetColor(); } }
public AuthorizationService(IOptions <AuthorizationClientOptions> authorizationClientOptionsAccessor, IOptions <ExpenseDemoOptions> expenseDemoOptionsAccessor, IHttpContextAccessor httpContextAccessor, IPolicyDecisionPoint policyDecisionPoint, IUserMetadataService userMetadataService, IAttributeAssignmentService attributeAssignmentService, IMemoryCache memoryCache) { this.authorizationClientOptions = authorizationClientOptionsAccessor.Value; this.expenseDemoOptions = expenseDemoOptionsAccessor.Value; this.httpContext = httpContextAccessor.HttpContext; this.policyDecisionPoint = policyDecisionPoint; this.userMetadataService = userMetadataService; this.attributeAssignmentService = attributeAssignmentService; this.memoryCache = memoryCache; this.currentUser = new Lazy <UserMetadata>(() => this.PopulateCurrentUser().Result); this.currentUserAttributeAssignments = new Lazy <IEnumerable <AttributeEntityAssignment> >(() => this.PopulateCurrentUserAttributeAssignments().Result); this.impersonationCheckAccessResult = new Lazy <bool>(() => this.ImpersonationCheckAccess().Result); }