Esempio n. 1
0
        public async Task <ActionResult> RefreshToken(RefreshTokenRequest request)
        {
            var refreshToken = await _tokenService.GetTokenAsync(request.RefreshToken, request.Login);

            if (refreshToken != null)
            {
                if (refreshToken.ExcpirationDate > DateTime.UtcNow)
                {
                    var currentTime = DateTime.UtcNow;

                    var accessToken = new JwtSecurityToken(
                        expires: currentTime.AddMinutes(_settings.Auth.AccessTokenLifetime),
                        signingCredentials: new SigningCredentials(
                            AuthManager.CreateSymmetricSecurityKey(_settings.SecretKey), SecurityAlgorithms.HmacSha256));

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

                    return(Ok(new AuthResponse
                    {
                        AccessToken = encodedJwt,
                        RefreshToken = refreshToken.Token,
                        Login = request.Login,
                    }));
                }
            }

            return(Unauthorized());
        }
Esempio n. 2
0
        public async Task <ActionResult> GetToken(AuthRequest request)
        {
            var user = await _userService.GetUserAsync(request.Login);

            if (user == null)
            {
                return(BadRequest());
            }

            var currentTime = DateTime.UtcNow;

            var token = new JwtSecurityToken(
                expires: currentTime.AddMinutes(_settings.Auth.AccessTokenLifetime),
                signingCredentials: new SigningCredentials(
                    AuthManager.CreateSymmetricSecurityKey(_settings.SecretKey), SecurityAlgorithms.HmacSha256));

            var encodedJwt   = new JwtSecurityTokenHandler().WriteToken(token);
            var refreshToken = await _tokenService.CreateTokenAsync(
                new RefreshToken
            {
                Token           = GenerateRefreshToken(),
                ExcpirationDate = currentTime.AddMinutes(_settings.Auth.RefreshTokenLifetime),
                UserLogin       = user.Login
            });

            return(Ok(new AuthResponse
            {
                AccessToken = encodedJwt,
                RefreshToken = refreshToken.Token,
                Login = user.Login,
            }));
        }
Esempio n. 3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <AppSettings>(Configuration);

            var key = Configuration.GetValue <string>("SecretKey");

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.RequireHttpsMetadata      = false;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateAudience         = false,
                    ValidateIssuer           = false,
                    ValidateLifetime         = true,
                    IssuerSigningKey         = AuthManager.CreateSymmetricSecurityKey(key),
                    ValidateIssuerSigningKey = true,
                    ClockSkew = TimeSpan.Zero
                };
            });

            services.AddScoped <IUserService, UserStorageService>();
            services.AddScoped <ITokenService, TokenStorageService>();
            var conString = Configuration.GetValue <string>("StorageConnectionString");

            services.AddSingleton <ITableStorageContext>(new TableStorageContext(conString));

            services.AddControllers();

            services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new OpenApiInfo
                {
                    Version     = "v1",
                    Title       = "Auth service Api",
                    Description = "Access and refresh tokens"
                });
            });

            services.AddAutoMapper(typeof(Startup));
        }