Beispiel #1
0
        /// <summary>
        /// Получить авторизационный токен
        /// </summary>
        /// <param name="claimsIdentity">Идентификационные данные</param>
        /// <param name="dateFrom">Дата начала действия токена</param>
        /// <param name="dateExpires">Дата истечения токена</param>
        /// <returns></returns>
        private string GetAccessToken(ClaimsIdentity claimsIdentity, DateTimeOffset dateFrom, DateTimeOffset dateExpires)
        {
            // создаем JWT-токен
            var jwt = new JwtSecurityToken(
                _tokenOptions.Issuer,
                _tokenOptions.Audience,
                notBefore: dateFrom.UtcDateTime,
                claims: claimsIdentity.Claims,
                expires: dateExpires.UtcDateTime,
                signingCredentials: new SigningCredentials(_tokenOptions.GetSymmetricSecurityKeyForAccess(), SecurityAlgorithm));

            var accessToken = new JwtSecurityTokenHandler().WriteToken(jwt);

            return(accessToken);
        }
Beispiel #2
0
        /// <summary>
        /// Регистрация аутентификации
        /// </summary>
        /// <param name="services"></param>
        private void RegisterAuthentication(IServiceCollection services)
        {
            RegisterTokenService(services);

            var tokenOptions = new TokenOptions();

            Configuration.GetSection("TokenOptions").Bind(tokenOptions);

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(op =>
            {
                if (!Environment.IsProduction())
                {
                    op.RequireHttpsMetadata = false;
                }

                op.TokenValidationParameters = new TokenValidationParameters
                {
                    // Валидация издателя
                    ValidateIssuer = true,
                    // строка, представляющая издателя
                    ValidIssuer = tokenOptions.Issuer,

                    // Валидация потребителя токена
                    ValidateAudience = true,
                    // установка потребителя токена
                    ValidAudience = tokenOptions.Audience,

                    // Валидация время жизни токена
                    ValidateLifetime = true,

                    // Установка ключа безопасности
                    IssuerSigningKey = tokenOptions.GetSymmetricSecurityKeyForAccess(),
                    // Валидация ключа безопасности
                    ValidateIssuerSigningKey = true
                };
            });
        }