コード例 #1
0
 public TokenService(SigninConfiguration signingConfiguration,
                     TokenConfiguration tokenConfigurations, IConfiguration configuration)
 {
     _signingConfiguration = signingConfiguration;
     _tokenConfigurations  = tokenConfigurations;
     _configuration        = configuration;
 }
コード例 #2
0
 public LoginService(IPessoaRepository repository,
                     SigninConfiguration signinConfiguration,
                     TokenConfiguration tokenConfiguration,
                     IRefreshTokenRepository refreshTokenRepository)
 {
     _pessoaRepository       = repository;
     _signingConfiguration   = signinConfiguration;
     _tokenConfiguration     = tokenConfiguration;
     _refreshTokenRepository = refreshTokenRepository;
 }
コード例 #3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            ConfigureService.ConfigureDependenceService(services);
            ConfigureRepository.ConfigureDependenceRepository(services);

            var signingConfigurations = new SigninConfiguration();
            var tokenConfiguration    = new TokenConfiguration();

            new ConfigureFromConfigurationOptions <TokenConfiguration>
                (Configuration.GetSection("TokenConfigurations")).Configure(tokenConfiguration);

            var tokenService = new TokenService(signingConfigurations, tokenConfiguration, Configuration);

            services.AddSingleton(tokenService);
            services.AddAuthentication(authOptions =>
            {
                authOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                authOptions.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(bearerOptions =>
            {
                var paramsValidation = bearerOptions.TokenValidationParameters;
                paramsValidation.IssuerSigningKey         = signingConfigurations.Key;
                paramsValidation.ValidAudience            = tokenConfiguration.Audience;
                paramsValidation.ValidIssuer              = tokenConfiguration.Issuer;
                paramsValidation.ValidateIssuerSigningKey = true;
                paramsValidation.ValidateLifetime         = true;
                paramsValidation.ClockSkew = TimeSpan.Zero;
            });

            services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                               .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme‌​)
                               .RequireAuthenticatedUser().Build());
            });



            services.AddControllers();
        }
コード例 #4
0
 public LoginBusiness(IUserRepository repository, SigninConfiguration signinConfiguration, TokenConfiguration tokenConfiguration)
 {
     this.repository          = repository;
     this.signinConfiguration = signinConfiguration;
     this.tokenConfiguration  = tokenConfiguration;
 }
コード例 #5
0
        public WalletModule(IServiceCollection services, IConfiguration configuration)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            // jwt configuration
            var siginConfiguration = new SigninConfiguration(configuration.GetValue <string>("Security:Key"));
            var tokenConfiguration = new TokenConfiguration();

            new ConfigureFromConfigurationOptions <TokenConfiguration>(
                configuration.GetSection("Token")).Configure(tokenConfiguration);

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(options =>
            {
                var paramsValidation = options.TokenValidationParameters;
                paramsValidation.IssuerSigningKey = siginConfiguration.Key;
                paramsValidation.ValidAudience    = tokenConfiguration.Audience;
                paramsValidation.ValidIssuer      = tokenConfiguration.Issuer;

                // validate token signature
                paramsValidation.ValidateIssuerSigningKey = true;

                // validate token lifetime
                paramsValidation.ValidateLifetime = true;

                // set tolerance time for token expiration
                paramsValidation.ClockSkew = TimeSpan.Zero;
            });

            // configure access authorization
            services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                               .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                               .RequireAuthenticatedUser().Build());
            });

            // HTTP Context
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            // data source
            services.AddScoped <IDataSource>(provider =>
                                             new DefaultDataSource(configuration, "DefaultSQL"));

            // unit of work
            services.AddScoped <IUnitOfWorkAsync, WalletContext>();

            // repositories
            services.AddScoped <IAccountRepository, AccountRepository>();
            services.AddScoped <IWalletBlockchainRepository>(provider =>
                                                             new WalletBlockchainRepository(configuration.GetConnectionString("DefaultNoSQL")));

            // services
            services.AddScoped <IWalletBlockchainService, WalletBlockchainService>();

            // commands
            services.AddScoped <IAccountsCommandHandler, AccountsCommandHandler>();

            // queries
            services.AddScoped <IAccountsQueryHandler, AccountsQueryHandler>();

            // app services
            services.AddScoped <IAccountsAppService, AccountsAppService>();
        }
コード例 #6
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            // Configurações CORS
            CorsPolicyBuilder corsBuilder = new CorsPolicyBuilder();

            corsBuilder.AllowAnyHeader();
            corsBuilder.AllowAnyMethod();
            corsBuilder.AllowAnyOrigin();
            corsBuilder.AllowCredentials();

            services.AddCors(options =>
            {
                options.AddPolicy("SiteCorsPolicy", corsBuilder.Build());
            });

            //injetando contexto do banco de dados
            services.AddDbContext <Context>(options => options.UseSqlServer(Configuration.GetConnectionString("MeetingRoom")));

            //injetando classes
            services.AddScoped <ISalaService, SalaService>();
            services.AddScoped <ISalaRepository, SalaRepository>();

            services.AddScoped <IPessoaService, PessoaService>();
            services.AddScoped <IPessoaRepository, PessoaRepository>();

            services.AddScoped <IReservaService, ReservaService>();
            services.AddScoped <IReservaRepository, ReservaRepository>();

            services.AddScoped <IRefreshTokenRepository, RefreshTokenRepository>();
            services.AddScoped <ILoginService, LoginService>();

            //configurações para a utiulização de JWT
            var signinConfiguration = new SigninConfiguration();

            services.AddSingleton(signinConfiguration);//apenas uma instancia enquanto a aplicação estiver executando

            var configToken = new TokenConfiguration();

            new ConfigureFromConfigurationOptions <TokenConfiguration>(
                Configuration.GetSection("TokenConfigurations")    //busca confiugurações do token em appsettings.json
                ).Configure(configToken);

            services.AddSingleton(configToken);

            services.AddAuthentication(auth =>
            {
                auth.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                auth.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(beareroptions =>
            {
                var parametrosValidacao = beareroptions.TokenValidationParameters;
                parametrosValidacao.IssuerSigningKey = signinConfiguration.Key;
                parametrosValidacao.ValidAudience    = configToken.Audience;
                parametrosValidacao.ValidIssuer      = configToken.Issuer;

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

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

                // Tempo de tolerância para a expiração de um token (usado no caso de
                // de problemas de sincronização de tempo entre diferentes
                // computadores envolvidos no processo de comunicação)
                parametrosValidacao.ClockSkew = TimeSpan.Zero;
            });

            services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                               .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                               .RequireAuthenticatedUser().Build());
            });


            // Configurando o serviço de documentação do Swagger
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1",
                             new Info
                {
                    Title       = "API salas de reuniões",
                    Version     = "v1",
                    Description = "Back end para gerenciamento dos agendamentos das salas de reuniões",
                    Contact     = new Contact
                    {
                        Name = "Desenvolvedor: Willian Menezes dos Santos.",
                        Url  = "https://www.linkedin.com/in/willian-menezes-9932b1b9/"
                    }
                });
            });
        }
コード例 #7
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var connectionString = Configuration["MySqlConnection:MySqlConnectionString"];

            services.AddDbContext <MySqlContext>(options => options.UseMySql(connectionString));
            ExecuteMigrations(connectionString);

            var sigingConfiguration = new SigninConfiguration();

            services.AddSingleton(sigingConfiguration);

            var tokenConfiguration = new TokenConfiguration();

            new ConfigureFromConfigurationOptions <TokenConfiguration>(
                Configuration.GetSection("TokenConfiguration")
                )
            .Configure(tokenConfiguration);
            services.AddSingleton(tokenConfiguration);
            services.AddAuthentication(authOtpions => {
                authOtpions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                authOtpions.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(bearerOptions => {
                var paramsValidation = bearerOptions.TokenValidationParameters;
                paramsValidation.IssuerSigningKey = sigingConfiguration.Key;
                paramsValidation.ValidAudience    = tokenConfiguration.Audience;
                paramsValidation.ValidIssuer      = tokenConfiguration.Issue;

                paramsValidation.ValidateIssuerSigningKey = true;
                paramsValidation.ValidateLifetime         = true;

                //Pode ser alterado para resolver problemas de sincronização
                paramsValidation.ClockSkew = TimeSpan.Zero;
            });
            services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                               .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                               .RequireAuthenticatedUser().Build());
            });
            //adicionando suporte a xml, por padrão já tinhamos o json
            services.AddMvc(options =>
            {
                options.RespectBrowserAcceptHeader = true;
                options.FormatterMappings.SetMediaTypeMappingForFormat("xml", MediaTypeHeaderValue.Parse("text/xml"));
                options.FormatterMappings.SetMediaTypeMappingForFormat("json", MediaTypeHeaderValue.Parse("application/json"));
            })
            .AddXmlSerializerFormatters()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            var filterOptions = new HyperMediaFilterOptions();

            filterOptions.ObjectContentResponseEnricherList.Add(new PersonEnricher());
            services.AddSingleton(filterOptions);

            services.AddSwaggerGen(o =>
            {
                o.SwaggerDoc("v1", new Swashbuckle.AspNetCore.Swagger.Info {
                    Title = "RESTfull API With ASP.Net Core 2.0", Version = "v1"
                });
            });

            services.AddApiVersioning();
            //Injeção de dependencia

            services.AddScoped <IPersonBusiness, PersonBusiness>();
            services.AddScoped <IBookBusiness, BookBusiness>();
            services.AddScoped <IUserRepository, UserRepository>();
            services.AddScoped <ILoginBusiness, LoginBusiness>();
            services.AddScoped <IFileBusiness, FileBusiness>();

            services.AddScoped(typeof(IRepository <>), typeof(GenericRepository <>));
            services.AddScoped <IPersonRepository, PersonRepository>();
        }
コード例 #8
0
        public IdentityModule(IServiceCollection services, IConfiguration configuration)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            // jwt configuration
            var siginConfiguration = new SigninConfiguration(configuration.GetValue <string>("Security:Key"));
            var tokenConfiguration = new TokenConfiguration();

            new ConfigureFromConfigurationOptions <TokenConfiguration>(
                configuration.GetSection("Token")).Configure(tokenConfiguration);

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(options =>
            {
                var paramsValidation = options.TokenValidationParameters;
                paramsValidation.IssuerSigningKey = siginConfiguration.Key;
                paramsValidation.ValidAudience    = tokenConfiguration.Audience;
                paramsValidation.ValidIssuer      = tokenConfiguration.Issuer;

                // validate token signature
                paramsValidation.ValidateIssuerSigningKey = true;

                // validate token lifetime
                paramsValidation.ValidateLifetime = true;

                // set tolerance time for token expiration
                paramsValidation.ClockSkew = TimeSpan.Zero;
            });

            // configure access authorization
            services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                               .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                               .RequireAuthenticatedUser().Build());
            });

            // HTTP Context
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            // data source
            services.AddSingleton <IDataSource>(provider =>
                                                new DefaultDataSource(configuration, "IdentityDb"));

            // unit of work
            services.AddScoped <IUnitOfWorkAsync, IdentityContext>();

            // providers
            // cache
            services.AddSingleton <ICacheService>(provider =>
                                                  new RedisCacheService(configuration.GetValue <string>("Redis:Endpoint"),
                                                                        configuration.GetValue <int>("Redis:Database"))
            {
                Expires = TimeSpan.FromSeconds(configuration.GetValue <int>("Redis:Expires"))
            });

            services.AddSingleton(provider =>
                                  new CacheConfiguration(configuration.GetValue <string>("Redis:CacheKey")));

            // security token
            services.AddScoped <ISecurityTokenService>(provider =>
                                                       new SecurityTokenService(siginConfiguration, tokenConfiguration));

            // repositories
            services.AddScoped <IUserRepository, UserRepository>();

            // command handlers
            services.AddScoped <IUserCommandHandler, UserCommandHandler>();

            // query handlers
            services.AddScoped <IUserQueryHandler, UserQueryHandler>();

            // app services
            services.AddScoped <IUserAppService, UserAppService>();
        }