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))); }
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(); }
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)); }); }
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()); }
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)); }