コード例 #1
0
ファイル: TokenHelper.cs プロジェクト: leoguilen/matchday-app
        public static async Task <string> GerarTokenUsuarioAsync(Usuario usuario, JwtConfiguracao jwtConfig)
        {
            var tokenHandler = new JwtSecurityTokenHandler();
            var key          = Encoding.ASCII.GetBytes(jwtConfig.Secret);

            var claims = new List <Claim>
            {
                new Claim("Id", usuario.Id.ToString()),
                new Claim("TipoUsuario", usuario.TipoUsuario.ToString()),
                new Claim(JwtRegisteredClaimNames.Sub, usuario.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(JwtRegisteredClaimNames.Email, usuario.Email),
                new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Username)
            };

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                TokenType          = JwtConstants.TokenType,
                Expires            = DateTime.UtcNow.Add(jwtConfig.TokenLifetime),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(await Task.FromResult(tokenHandler.WriteToken(token)));
        }
コード例 #2
0
        public static void AddJwtDependency(this IServiceCollection services, IConfiguration configuration)
        {
            var jwtOptions = new JwtConfiguracao();

            configuration.Bind(nameof(JwtConfiguracao), jwtOptions);

            var tokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey         = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtOptions.Secret)),
                ValidateIssuer           = false,
                ValidateAudience         = false,
                RequireExpirationTime    = true,
                ValidateLifetime         = true
            };

            services.AddSingleton(jwtOptions);
            services.AddSingleton(tokenValidationParameters);

            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultScheme             = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =>
            {
                x.SaveToken = true;
                x.TokenValidationParameters = tokenValidationParameters;
            });

            services.AddAuthorization();
        }
コード例 #3
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder
            .UseEnvironment("Development")
            .ConfigureServices(services =>
            {
                var configuration = services.BuildServiceProvider()
                                    .GetRequiredService <IConfiguration>();

                var descriptor = services.SingleOrDefault(
                    d => d.ServiceType ==
                    typeof(DbContextOptions <MatchDayAppContext>));

                if (descriptor != null)
                {
                    services.Remove(descriptor);
                }

                services.AddSqlServerDependency(configuration: null, isTest: true);

                var providerDbContext = services.BuildServiceProvider()
                                        .GetRequiredService <MatchDayAppContext>();
                providerDbContext.SeedFakeData();

                var smtpSetting = new SmtpConfiguracao();
                configuration.Bind(nameof(SmtpConfiguracao), smtpSetting);

                var twilioSettings = new TwilioConfiguracao();
                configuration.Bind(nameof(TwilioConfiguracao), twilioSettings);

                var jwtOptions = new JwtConfiguracao();
                configuration.Bind(nameof(JwtConfiguracao), jwtOptions);

                services.AddSingleton(twilioSettings);
                services.AddSingleton(smtpSetting);
                services.AddSingleton(jwtOptions);
                services.AddSingleton(new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtOptions.Secret)),
                    ValidateIssuer           = false,
                    ValidateAudience         = false,
                    RequireExpirationTime    = true,
                    ValidateLifetime         = true
                });

                services.AddSqlServerRepositoryDependency();
                services.AddServiceDependency(configuration);
                services.AddSingleton <IUnitOfWork>(new UnitOfWork(providerDbContext));
            });
        }
コード例 #4
0
        public static IServiceProvider Configure()
        {
            var configuration = new ConfigurationBuilder()
                                .SetBasePath(AppContext.BaseDirectory)
                                .AddJsonFile("appsettings.Development.json")
                                .AddUserSecrets(Assembly.GetExecutingAssembly())
                                .AddEnvironmentVariables()
                                .Build();

            var serviceProvider = new ServiceCollection();

            serviceProvider.AddDbContext <MatchDayAppContext>(options => options
                                                              .UseInMemoryDatabase($"TestDB-{Guid.NewGuid()}")
                                                              .UseInternalServiceProvider(new ServiceCollection()
                                                                                          .AddEntityFrameworkInMemoryDatabase()
                                                                                          .BuildServiceProvider())
                                                              .ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning))
                                                              .EnableSensitiveDataLogging()
                                                              .EnableServiceProviderCaching(false));

            serviceProvider.AddSingleton <IUnitOfWork, UnitOfWork>();
            serviceProvider.AddAutoMapper(Assembly.Load("MatchDayApp.Application"));
            serviceProvider.AddTransient <IAutenticacaoServico, AutenticacaoServico>();
            serviceProvider.AddTransient <IUsuarioServico, UsuarioServico>();
            serviceProvider.AddTransient <ITimeServico, TimeServico>();
            serviceProvider.AddTransient <IQuadraFutebolServico, QuadraFutebolServico>();
            serviceProvider.AddTransient <IPartidaServico, PartidaServico>();

            var smtpSetting = new SmtpConfiguracao();

            configuration.Bind(nameof(SmtpConfiguracao), smtpSetting);

            var twilioSettings = new TwilioConfiguracao();

            configuration.Bind(nameof(TwilioConfiguracao), twilioSettings);

            var jwtOptions = new JwtConfiguracao();

            configuration.Bind(nameof(JwtConfiguracao), jwtOptions);

            serviceProvider.AddSingleton(twilioSettings);
            serviceProvider.AddSingleton(smtpSetting);
            serviceProvider.AddSingleton(jwtOptions);
            serviceProvider.AddSingleton(new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey         = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtOptions.Secret)),
                ValidateIssuer           = false,
                ValidateAudience         = false,
                RequireExpirationTime    = true,
                ValidateLifetime         = true
            });

            var loggerFactory = new LoggerFactory();

            serviceProvider.AddSingleton(typeof(ILogger),
                                         loggerFactory.CreateLogger("Testing"));

            serviceProvider.AddMediatR(Assembly.Load("MatchDayApp.Application"));

            return(serviceProvider
                   .BuildServiceProvider());
        }
コード例 #5
0
 public AutenticacaoServico(IUnitOfWork uow, IMapper mapper, JwtConfiguracao jwtOptions)
 {
     _uow        = uow ?? throw new ArgumentNullException(nameof(uow));
     _mapper     = mapper ?? throw new ArgumentNullException(nameof(mapper));
     _jwtOptions = jwtOptions ?? throw new ArgumentNullException(nameof(jwtOptions));
 }