/// <summary>
 /// Initializes a new instance of the <see cref="AuthorizationPolicyProvider"/> class.
 /// </summary>
 /// <param name="options">The options.</param>
 /// <param name="client">The client.</param>
 /// <param name="contextAccessor">The context accessor.</param>
 public AuthorizationPolicyProvider(
     IOptions <AuthorizationOptions> options,
     PolicyServerClient client,
     IHttpContextAccessor contextAccessor) : base(options)
 {
     _client          = client;
     _contextAccessor = contextAccessor;
 }
        /// <summary>
        /// Invoke
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="client">The client.</param>
        /// <returns></returns>
        public async Task Invoke(HttpContext context, PolicyServerClient client)
        {
            if (context.User.Identity.IsAuthenticated)
            {
                var policy = await client.EvaluateAsync(context.User);

                var roleClaims       = policy.Roles.Select(x => new Claim("role", x));
                var permissionClaims = policy.Permissions.Select(x => new Claim("permission", x));

                var id = new ClaimsIdentity("PolicyServerMiddleware", "name", "role");
                id.AddClaims(roleClaims);
                id.AddClaims(permissionClaims);

                context.User.AddIdentity(id);
            }

            await _next(context);
        }
 public MedicationRequirementHandler(PolicyServerClient client)
 {
     _client = client;
 }
예제 #4
0
 public HomeController(PolicyServerClient client, IAuthorizationService authz)
 {
     _client = client;
     _authz  = authz;
 }
 public PermissionHandler(PolicyServerClient client)
 {
     _client = client;
 }