Exemplo n.º 1
0
 public AuthController(ILogger <AuthController> logger,
                       IUserRepository userRepository,
                       IRabbitManager manager,
                       IRefreshTokenRepository refreshTokenRepository,
                       AuthorizationConfigs authorizationConfigs)
 {
     this.logger                 = logger;
     this.userRepository         = userRepository;
     this.manager                = manager;
     this.refreshTokenRepository = refreshTokenRepository;
     this.authorizationConfigs   = authorizationConfigs;
 }
 public AuthorizationService(UserManagementSystemDbContext dbContext,
                             AuthorizationConfigs authorizationConfigs)
 {
     this.dbContext            = dbContext;
     this.authorizationConfigs = authorizationConfigs;
 }
Exemplo n.º 3
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo
                {
                    Version = "v1",
                    Title   = "User Management System API",
                });

                c.AddSecurityDefinition("Bearer",
                                        new OpenApiSecurityScheme
                {
                    In          = ParameterLocation.Header,
                    Description = "Please enter into field the word 'Bearer' following by space and JWT",
                    Name        = "Authorization",
                    Type        = SecuritySchemeType.ApiKey
                });

                var openApiSecurityScheme = new OpenApiSecurityScheme
                {
                    Reference = new OpenApiReference
                    {
                        Id   = "Bearer",
                        Type = ReferenceType.SecurityScheme,
                    },
                };

                c.AddSecurityRequirement(new OpenApiSecurityRequirement
                {
                    { openApiSecurityScheme, new List <string>() },
                });
            });


            services.AddCors(options => options.AddPolicy(UserManagementPolicy, builder =>
            {
                builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader()
                .WithExposedHeaders("Token-Expired");
            }));

            var authorizationConfigs = new AuthorizationConfigs();

            Configuration.Bind("Authorization", authorizationConfigs);
            services.AddSingleton(authorizationConfigs);

            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =>
            {
                x.RequireHttpsMetadata      = false;
                x.SaveToken                 = true;
                x.TokenValidationParameters = TokenValidator.GetTokenValidationParameters(authorizationConfigs.TokenKey);
                x.Events = new JwtBearerEvents
                {
                    OnAuthenticationFailed = context =>
                    {
                        if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
                        {
                            context.Response.Headers.Add("Token-Expired", bool.TrueString);
                        }

                        return(Task.CompletedTask);
                    }
                };
            });

            BLLModule.Load(services, Configuration);
        }