public TokenBuilderService(IHttpContextAccessor httpContextAccessor, ITokenConfiguration tokenConfiguration, ISigningConfiguration signingConfiguration, ICacheRepository cacheRepository) { _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); _tokenConfiguration = tokenConfiguration ?? throw new ArgumentNullException(nameof(tokenConfiguration)); _signingConfiguration = signingConfiguration ?? throw new ArgumentNullException(nameof(signingConfiguration)); _cacheRepository = cacheRepository ?? throw new ArgumentNullException(nameof(cacheRepository)); }
public static IServiceCollection ResolveToken(this IServiceCollection services) { services.ResolveTokenConfigurations(); var provider = services.BuildServiceProvider(); ITokenConfiguration token = provider.GetService <ITokenConfiguration>(); ISigningConfiguration signing = provider.GetService <ISigningConfiguration>(); services.AddAuthentication ( authOptions => { authOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; authOptions.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; } ) .AddJwtBearer ( bearerOptions => { var paramsValidation = bearerOptions.TokenValidationParameters; paramsValidation.IssuerSigningKey = signing.SigningCredentials.Key; paramsValidation.ValidAudience = token.Audience; paramsValidation.ValidIssuer = token.Issuer; // Valida a assinatura de um token recebido paramsValidation.ValidateIssuerSigningKey = true; // Verifica se um token recebido ainda é válido paramsValidation.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) paramsValidation.ClockSkew = TimeSpan.Zero; } ); services.AddAuthorization ( auth => { auth.AddPolicy ( "Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build() ); } ); return(services); }
public TokenEncoder(ITokenConfiguration tokenConfiguration, ISigningConfiguration signingConfiguration) { _tokenConfiguration = tokenConfiguration; _signingConfiguration = signingConfiguration; }