Polianin Nikita
cd6f25deba
All logic related to token manipulation has been transferred to the AuthService. Also added TOTP 2FA and rethought the logic of logging into the application
50 lines
2.0 KiB
C#
50 lines
2.0 KiB
C#
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using Mirea.Api.Security.Common.Interfaces;
|
|
using Mirea.Api.Security.Services;
|
|
using System;
|
|
|
|
namespace Mirea.Api.Security;
|
|
|
|
public static class DependencyInjection
|
|
{
|
|
public static IServiceCollection AddSecurityServices(this IServiceCollection services, IConfiguration configuration)
|
|
{
|
|
var saltSize = int.Parse(configuration["SECURITY_SALT_SIZE"]!);
|
|
var hashSize = int.Parse(configuration["SECURITY_HASH_SIZE"]!);
|
|
var iteration = int.Parse(configuration["SECURITY_HASH_ITERATION"]!);
|
|
var memory = int.Parse(configuration["SECURITY_HASH_MEMORY"]!);
|
|
var parallelism = int.Parse(configuration["SECURITY_HASH_PARALLELISM"]!);
|
|
|
|
services.AddSingleton(new PasswordHashService
|
|
{
|
|
SaltSize = saltSize,
|
|
HashSize = hashSize,
|
|
Iterations = iteration,
|
|
Memory = memory,
|
|
Parallelism = parallelism,
|
|
Secret = configuration["SECURITY_HASH_TOKEN"]
|
|
});
|
|
|
|
var lifeTimeRefreshToken = TimeSpan.FromMinutes(int.Parse(configuration["SECURITY_LIFE_TIME_RT"]!));
|
|
var lifeTimeFirstAuthToken = TimeSpan.FromMinutes(int.Parse(configuration["SECURITY_LIFE_TIME_1_FA"]!));
|
|
|
|
services.AddSingleton(provider =>
|
|
{
|
|
var cacheService = provider.GetRequiredService<ICacheService>();
|
|
var accessTokenService = provider.GetRequiredService<IAccessToken>();
|
|
var revokedTokenService = provider.GetRequiredService<IRevokedToken>();
|
|
var logger = provider.GetRequiredService<ILogger<AuthService>>();
|
|
var passwordService = provider.GetRequiredService<PasswordHashService>();
|
|
|
|
return new AuthService(cacheService, accessTokenService, revokedTokenService, logger, passwordService)
|
|
{
|
|
Lifetime = lifeTimeRefreshToken,
|
|
LifetimeFirstAuth = lifeTimeFirstAuthToken
|
|
};
|
|
});
|
|
|
|
return services;
|
|
}
|
|
} |