Adding authentication and authorization flow

This commit is contained in:
2025-02-26 22:23:15 +01:00
parent 176f149be3
commit 76779afd2e
22 changed files with 562 additions and 19 deletions

View File

@@ -0,0 +1,38 @@
using BasicDotnetTemplate.MainProject.Models.Api.Data.Auth;
using BasicDotnetTemplate.MainProject.Models.Api.Common.User;
using BasicDotnetTemplate.MainProject.Utils;
namespace BasicDotnetTemplate.MainProject.Services;
public interface IAuthService
{
Task<AuthenticatedUser?> AuthenticateAsync(AuthenticateRequestData data);
}
public class AuthService : BaseService, IAuthService
{
protected CryptUtils _cryptUtils;
public AuthService(
IConfiguration configuration
) : base(configuration)
{
_cryptUtils = new CryptUtils(_appSettings);
}
public async Task<AuthenticatedUser?> AuthenticateAsync(AuthenticateRequestData data)
{
AuthenticatedUser? authenticatedUser = null;
var decryptedUsername = _cryptUtils.Decrypt(data.Username ?? String.Empty);
var decryptedPassword = _cryptUtils.Decrypt(data.Password ?? String.Empty);
if (!String.IsNullOrEmpty(decryptedUsername) && !String.IsNullOrEmpty(decryptedPassword))
{
}
return authenticatedUser;
}
}

View File

@@ -0,0 +1,24 @@
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
using BasicDotnetTemplate.MainProject.Models.Settings;
namespace BasicDotnetTemplate.MainProject.Services;
public class BaseService
{
protected readonly IConfiguration _configuration;
protected readonly AppSettings _appSettings;
public BaseService(IConfiguration configuration)
{
_configuration = configuration;
_appSettings = new AppSettings();
_configuration.GetSection("AppSettings").Bind(_appSettings);
}
}

View File

@@ -0,0 +1,32 @@
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
namespace BasicDotnetTemplate.MainProject.Services;
public interface IJwtService
{
}
public class JwtService : BaseService, IJwtService
{
private readonly string _jwtKey;
private readonly string _jwtIssuer;
private readonly string _jwtAudience;
public JwtService(
IConfiguration configuration
) : base(configuration)
{
_jwtKey = _appSettings?.JWTSettings?.Secret ?? String.Empty;
_jwtIssuer = _appSettings?.JWTSettings?.ValidIssuer ?? String.Empty;
_jwtAudience = _appSettings?.JWTSettings?.ValidAudience ?? String.Empty;
}
}