예제 #1
0
 public AccountController(
     UserManager <ApplicationUser> userManager,
     SignInManager <ApplicationUser> signInManager,
     ILoggerFactory loggerFactory,
     [FromServices] JwtTokenConfigurations jwtTokenConfigurations,
     [FromServices] SigningCredentialsConfigurations signingConfigurations,
     IDomainNotificationHandler <DomainNotification> notifications,
     IBus bus,
     IUser user) : base(notifications, bus, user)
 {
     _userManager            = userManager;
     _signInManager          = signInManager;
     _bus                    = bus;
     _logger                 = loggerFactory.CreateLogger <AccountController>();
     _jwtTokenConfigurations = jwtTokenConfigurations;
     _signingConfigurations  = signingConfigurations;
 }
        public AccountController(UserManager <ApplicationUser> userManager,
                                 SignInManager <ApplicationUser> signManager,
                                 INotificationHandler <DomainNotification> notifications,
                                 ILoggerFactory loggerFactory,
                                 [FromServices] JwtTokenConfigurations jwtTokenConfigurations,
                                 [FromServices] SigningCredentialsConfigurations signingConfigurations,
                                 IMediatorHandler mediator,
                                 IOrganizadorRepository organizadorRepository,
                                 IUser user) : base(notifications, user, mediator)
        {
            _userManager           = userManager;
            _signManager           = signManager;
            _mediator              = mediator;
            _logger                = loggerFactory.CreateLogger <AccountController>();
            _organizadorRepository = organizadorRepository;

            _jwtTokenConfigurations = jwtTokenConfigurations;
            _signingConfigurations  = signingConfigurations;
        }
예제 #3
0
        public static IServiceCollection AddJwtSecurity(
            this IServiceCollection services,
            SigningCredentialsConfigurations signinConfigurations,
            JwtTokenConfigurations tokenConfigurations)
        {
            

            

            return services;


            services.AddMvc(options =>
            {
                // Adiciona a policy no filtro de autenticação
                options.Filters.Add(new AuthorizeFilter(policy));
            
        }
    }
예제 #4
0
        public static void AddMvcSecurity(this IServiceCollection services, IConfiguration Configuration)
        {
            if (services == null)
            {
                throw new ArgumentException(nameof(services));
            }

            // Ativando a utilização do ASP.NET Identity, a fim de
            // permitir a recuperação de seus objetos via injeção de dependências
            services.AddIdentity <ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores <ApplicationDbContext>()
            .AddDefaultTokenProviders();


            var signinConfigurations = new SigningCredentialsConfigurations();

            services.AddSingleton(signinConfigurations);

            var tokenConfigurations = new JwtTokenConfigurations();

            new ConfigureFromConfigurationOptions <JwtTokenConfigurations>(
                Configuration.GetSection(nameof(JwtTokenConfigurations)))
            .Configure(tokenConfigurations);
            services.AddSingleton(tokenConfigurations);

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(options =>
            {
                var validatonParameters = options.TokenValidationParameters;
                validatonParameters.IssuerSigningKey = signinConfigurations.Key;
                validatonParameters.ValidateAudience = true;
                validatonParameters.ValidAudience    = tokenConfigurations.Audience;
                validatonParameters.ValidateIssuer   = true;
                validatonParameters.ValidIssuer      = tokenConfigurations.Issuer;

                // Valida a assinatura de um token recebido
                validatonParameters.ValidateIssuerSigningKey = true;

                validatonParameters.RequireExpirationTime = true;

                // Verifica se um token recebido ainda é válido
                validatonParameters.ValidateLifetime = true;

                // Tempo de tolerância para a expiração de um token (utilizado
                // caso haja problemas de sincronismo de horário entre diferentes
                // computadores envolvidos no processo de comunicação)
                validatonParameters.ClockSkew = TimeSpan.Zero;
            });

            // Ativa o uso do token como forma de autorizar o acesso
            // a recursos deste projeto
            services.AddAuthorization(options =>
            {
                options.AddPolicy("PodeConsultar", policy => policy.RequireClaim("Eventos", "Consultar"));
                options.AddPolicy("PodeGravar", policy => policy.RequireClaim("Eventos", "Gravar"));
                options.AddPolicy("PodeExcluir", policy => policy.RequireClaim("Eventos", "Excluir"));

                options.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                                  .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                                  .RequireAuthenticatedUser()
                                  .Build());
            });
        }