Exemplo n.º 1
0
        /// <summary>
        /// Creates a new instance of <see cref="DefaultAuthorizationService"/>.
        /// </summary>
        /// <param name="policyProvider">The <see cref="IAuthorizationPolicyProvider"/> used to provide policies.</param>
        /// <param name="handlers">The handlers used to fulfill <see cref="IAuthorizationRequirement"/>s.</param>
        /// <param name="logger">The logger used to log messages, warnings and errors.</param>
        /// <param name="contextFactory">The <see cref="IAuthorizationHandlerContextFactory"/> used to create the context to handle the authorization.</param>
        /// <param name="evaluator">The <see cref="IAuthorizationEvaluator"/> used to determine if authorzation was successful.</param>
        public DefaultAuthorizationService(IAuthorizationPolicyProvider policyProvider, IEnumerable <IAuthorizationHandler> handlers, ILogger logger, IAuthorizationHandlerContextFactory contextFactory, IAuthorizationEvaluator evaluator)
        {
            if (policyProvider == null)
            {
                throw new ArgumentNullException(nameof(policyProvider));
            }
            if (handlers == null)
            {
                throw new ArgumentNullException(nameof(handlers));
            }
            if (contextFactory == null)
            {
                throw new ArgumentNullException(nameof(contextFactory));
            }
            if (evaluator == null)
            {
                throw new ArgumentNullException(nameof(evaluator));
            }

            _handlers       = InitializeHandlers(handlers);
            _policyProvider = policyProvider;
            _logger         = logger ?? new DiagnosticsLoggerFactory().CreateDefaultLogger();
            _contextFactory = contextFactory;
            _evaluator      = evaluator;
        }
        /// <summary>
        /// Creates a new instance of <see cref="DefaultAuthorizationService"/>.
        /// </summary>
        /// <param name="policyProvider">The <see cref="IAuthorizationPolicyProvider"/> used to provide policies.</param>
        /// <param name="handlers">The handlers used to fulfill <see cref="IAuthorizationRequirement"/>s.</param>
        /// <param name="logger">The logger used to log messages, warnings and errors.</param>
        /// <param name="contextFactory">The <see cref="IAuthorizationHandlerContextFactory"/> used to create the context to handle the authorization.</param>
        /// <param name="evaluator">The <see cref="IAuthorizationEvaluator"/> used to determine if authorzation was successful.</param>
        /// <param name="options">The <see cref="AuthorizationOptions"/> used.</param>
        public DefaultAuthorizationService(IAuthorizationPolicyProvider policyProvider, IAuthorizationHandlerProvider handlers, ILogger <DefaultAuthorizationService> logger, IAuthorizationHandlerContextFactory contextFactory, IAuthorizationEvaluator evaluator, IOptions <AuthorizationOptions> options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            if (policyProvider == null)
            {
                throw new ArgumentNullException(nameof(policyProvider));
            }
            if (handlers == null)
            {
                throw new ArgumentNullException(nameof(handlers));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (contextFactory == null)
            {
                throw new ArgumentNullException(nameof(contextFactory));
            }
            if (evaluator == null)
            {
                throw new ArgumentNullException(nameof(evaluator));
            }

            _options        = options.Value;
            _handlers       = handlers;
            _policyProvider = policyProvider;
            _logger         = logger;
            _evaluator      = evaluator;
            _contextFactory = contextFactory;
        }
        public static Task <AuthorizationResult> Authorize(this IProvideMetadata type,
                                                           ClaimsPrincipal principal,
                                                           object userContext,
                                                           IAuthorizationEvaluator evaluator)
        {
            var list = GetPolicies(type);

            return(evaluator.Evaluate(principal, userContext, list));
        }
Exemplo n.º 4
0
 public HackSystemAuthorizationService(
     IAuthorizationPolicyProvider policyProvider,
     IAuthorizationHandlerProvider handlers,
     ILogger <DefaultAuthorizationService> logger,
     IAuthorizationHandlerContextFactory contextFactory,
     IAuthorizationEvaluator evaluator,
     IOptions <AuthorizationOptions> options)
     : base(policyProvider, handlers, logger, contextFactory, evaluator, options)
 {
     this.logger = logger;
 }
Exemplo n.º 5
0
 public DefaultAuthorizationService(
     IAuthorizationPolicyProvider policyProvider,
     IAuthorizationHandlerProvider handlers,
     ILogger <Microsoft.AspNetCore.Authorization.DefaultAuthorizationService> logger,
     IAuthorizationHandlerContextFactory contextFactory,
     IAuthorizationEvaluator evaluator,
     IOptions <Microsoft.AspNetCore.Authorization.AuthorizationOptions> options,
     IHttpContextPrincipalAccessor currentPrincipalAccessor,
     IServiceProvider serviceProvider)
     : base(policyProvider, handlers, logger, contextFactory, evaluator, options)
 {
     _currentPrincipalAccessor = currentPrincipalAccessor;
     ServiceProvider           = serviceProvider;
 }
Exemplo n.º 6
0
 public AuthorizationService(
     IAuthorizationPolicyProvider policyProvider,
     IAuthorizationHandlerProvider handlers,
     ILogger <AuthorizationService> logger,
     IAuthorizationHandlerContextFactory contextFactory,
     IAuthorizationEvaluator evaluator,
     IOptions <AuthorizationOptions> options,
     ICurrentPrincipalAccessor currentPrincipalAccessor,
     IServiceProvider serviceProvider)
     : base(policyProvider, handlers, logger, contextFactory, evaluator, options)
 {
     _currentPrincipalAccessor = currentPrincipalAccessor;
     ServiceProvider           = serviceProvider;
 }
 public SheaftIdentityAuthorizeService(
     IHttpClientFactory httpClientFactory,
     IHttpContextAccessor accessor,
     IAuthorizationPolicyProvider policyProvider,
     IAuthorizationHandlerProvider handlers,
     IAuthorizationHandlerContextFactory contextFactory,
     IAuthorizationEvaluator evaluator,
     IOptions <AuthOptions> authOptions,
     IOptions <CacheOptions> cacheOptions,
     IDistributedCache cache)
 {
     _cache             = cache;
     _accessor          = accessor;
     _policyProvider    = policyProvider;
     _handlers          = handlers;
     _contextFactory    = contextFactory;
     _evaluator         = evaluator;
     _authOptions       = authOptions;
     _httpClientFactory = httpClientFactory;
     _cacheOptions      = cacheOptions;
 }
Exemplo n.º 8
0
 public AuthorizationValidationRule(IAuthorizationEvaluator evaluator)
 {
     _evaluator = evaluator;
 }
 /// <summary>
 /// Creates an instance of <see cref="AuthorizationValidationRule"/> with
 /// the specified authorization evaluator.
 /// </summary>
 public CustomAuthorizationValidationRule(IAuthorizationEvaluator evaluator, IHttpContextAccessor httpContextAccessor)
 {
     _evaluator           = evaluator;
     _httpContextAccessor = httpContextAccessor;
 }
Exemplo n.º 10
0
 public AuthorizationValidationRule(IAuthorizationEvaluator evaluator, IUserContextAccessor userContextAccessor)
 {
     _evaluator           = evaluator;
     _userContextAccessor = userContextAccessor;
 }
Exemplo n.º 11
0
 public MyAuthService(IAuthorizationPolicyProvider policyProvider, IAuthorizationHandlerProvider handlers, ILogger <DefaultAuthorizationService> logger, IAuthorizationHandlerContextFactory contextFactory, IAuthorizationEvaluator evaluator, IOptions <AuthorizationOptions> options)
 {
     this.authBase = new DefaultAuthorizationService(policyProvider, handlers, logger, contextFactory, evaluator, options);
 }
Exemplo n.º 12
0
        public DepanneurQuery(UserManager <User> userManager, ProductRepository products, UserRepository users, AuthorizationSettings gqlAuthSettings, IAuthorizationEvaluator eval)
        {
            Field <ProductType>(
                "product",
                description: "Finds a single product by ID.",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "id", Description = "The ID of the product."
            }
                    ),
                resolve: ctx => products.Get(ctx.GetArgument <int>("id"))
                );

            FieldAsync <ListGraphType <ProductType> >(
                "products",
                description: "All products, optionally including deleted products.",
                arguments: new QueryArguments(
                    new QueryArgument <BooleanGraphType> {
                Name = "includeDeleted", DefaultValue = false, Description = "Set to true to include deleted products in the results."
            },
                    new QueryArgument <ProductSortEnumType>
            {
                Name         = "sort",
                DefaultValue = ProductSortOption.Alpha,
                Description  = "Indicates how results are sorted."
            }
                    ),
                resolve: async ctx => {
                var includeDeleted = ctx.GetArgument <bool>("includeDeleted");
                var sort           = ctx.GetArgument <ProductSortOption>("sort");
                var currentUser    = ctx.UserContext.As <DepanneurUserContext>().User;
                var userId         = userManager.GetUserId(currentUser);

                if (includeDeleted)
                {
                    await ctx.AuthorizeWith(Policies.ManageProducts);
                }
                if (ctx.HasError())
                {
                    return(null);
                }

                var query = includeDeleted
                        ? products.GetAll()
                        : products.GetActive();

                query = sort == ProductSortOption.Usage
                        ? query.SortedByTotalUsage(userId)
                        : query.OrderBy(x => x.Name);

                return(query.ToList());
            }
                );

            Field <UserType>(
                "me",
                description: "Gets the current user.",
                resolve: ctx =>
            {
                var currentUser = ctx.UserContext.As <DepanneurUserContext>().User;
                var id          = userManager.GetUserId(currentUser);

                return(users.Get(id));
            }
                );

            Field <UserType>(
                "user",
                description: "Gets a specific user by it's ID.",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <StringGraphType> > {
                Name = "id", Description = "The ID of the user."
            }
                    ),
                resolve: ctx =>
            {
                var id = ctx.GetArgument <string>("id");
                return(users.Get(id));
            }
                ).AuthorizeWith(Policies.ReadUsers);

            Field <ListGraphType <UserType> >(
                "users",
                description: "All users, optionnaly including deleted users.",
                arguments: new QueryArguments(
                    new QueryArgument <BooleanGraphType> {
                Name = "includeDeleted", DefaultValue = false, Description = "Set to true to include deleted users in the results."
            }
                    ),
                resolve: ctx => ctx.GetArgument <bool>("includeDeleted")
                    ? users.GetAll().OrderBy(x => x.Name).ToList()
                    : users.GetActive().OrderBy(x => x.Name).ToList()
                ).AuthorizeWith(Policies.ReadUsers);
        }