/// <summary> /// Этот метод вызывается во время выполнения. Используйте этот метод для добавления сервисов в контейнер. /// </summary> /// <param name="services">Определяет контракт для набора дескрипторов сервисов.</param> public void ConfigureServices(IServiceCollection services) { services.AddSwaggerGen(swaggerGenOptions => { swaggerGenOptions.SwaggerDoc("v1", new Info { Title = "Integration 1C API", Version = "v1" }); }); //DI соединения с 1C. services.AddTransient <IOneCConnection>(s => new OneCConnection(Configuration.GetOneCConnectionString())); services .AddTransient <DbContext, NiisOneEmptyDbContext>() .AddTransient <IExecutor, NiisRepository>() .AddTransient <IAmbientContext, AmbientContext>() .AddTransient <IUnitOfWork, UnitOfWork>() .AddTransient <IObjectResolver, ObjectResolver>(); #region егистрируем CQRS Query services.AddTransient <GetPaymentsByDateRangeQuery>(); #endregion #region JWT services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => JwtBearerConfigureOptions.Configure(options, Configuration)); #endregion services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); var _ = new AmbientContext(services.BuildServiceProvider()); var __ = new NiisOneCIntegrationAmbientContext(services.BuildServiceProvider()); }
public IActionResult Token([FromBody] TokenDto token) { var jwtIssuerOptions = JwtBearerConfigureOptions.GetJwtIssuerOptions(_configuration); if (!jwtIssuerOptions.AccessKey.Contains(token.AccessKey) || !jwtIssuerOptions.SecretKey.Contains(token.SecretKey)) { return(NotFound <string>(null)); } var claims = new List <Claim> { new Claim(ClaimsIdentity.DefaultNameClaimType, token.AccessKey) }; var claimsIdentity = new ClaimsIdentity(claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType); var utcNow = DateTime.UtcNow; // создаем JWT-токен var jwtSecurityToken = new JwtSecurityToken( issuer: jwtIssuerOptions.Issuer, notBefore: utcNow, claims: claimsIdentity.Claims, expires: utcNow.Add(TimeSpan.FromMinutes(jwtIssuerOptions.LifetimeInMinutes)), signingCredentials: new SigningCredentials(JwtBearerConfigureOptions.GetSymmetricSecurityKey(jwtIssuerOptions.SigningKey), SecurityAlgorithms.HmacSha256)); var accessToken = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken); return(Ok(accessToken)); }