Example #1
0
        /// <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());
        }
Example #2
0
        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));
        }