コード例 #1
0
        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();
            }
        }
コード例 #2
0
 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);
 }