Implemented Auth0 functionality to handler authentication. Not complete, will add to it some more. #15

This commit is contained in:
amazing-username
2019-04-21 21:07:13 -04:00
parent 4ba342b625
commit a161d2277a
14 changed files with 351 additions and 5 deletions
View File
View File
+54
View File
@@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Icarus.Controllers.Managers;
using Icarus.Controllers.Utilities;
using Icarus.Models;
using Icarus.Models.Context;
namespace Icarus.Controllers
{
[Route("api/register")]
[ApiController]
public class RegisterController : ControllerBase
{
#region Fields
private IConfiguration _config;
#endregion
#region Properties
#endregion
#region Constructor
public RegisterController(IConfiguration config)
{
_config = config;
}
#endregion
[HttpPost]
public void Post([FromBody] User user)
{
Console.WriteLine($"Username: {user.Username}");
Console.WriteLine($"Password: {user.Password}");
PasswordEncryption pe = new PasswordEncryption();
user = pe.HashPassword(user);
Console.WriteLine($"Hashed Password: {user.Password}");
UserStoreContext context = HttpContext.RequestServices
.GetService(typeof(UserStoreContext))
as UserStoreContext;
context.SaveUser(user);
}
}
}
+2
View File
@@ -41,6 +41,8 @@ namespace Icarus.Controllers
[HttpGet("{id}")]
//[Route("private-scoped")]
//[Authorize("download:songs")]
public async Task<IActionResult> Get(int id)
{
MusicStoreContext context = HttpContext.RequestServices
@@ -0,0 +1,73 @@
using System;
using System.Security.Cryptography;
using Microsoft.AspNetCore.Cryptography.KeyDerivation;
using Icarus.Models;
namespace Icarus.Controllers.Utilities
{
public class PasswordEncryption
{
#region Fields
#endregion
#region Properties
#endregion
#region Constructor
#endregion
#region Methods
public User HashPassword(User user)
{
try
{
var userSalt = GenerateSalt();
var userHash = GenerateHash(user.Password, userSalt);
user.Password = userHash;
user.Salt = userSalt;
return user;
}
catch (Exception ex)
{
var exMsg = ex.Message;
Console.WriteLine($"An error occurred {exMsg}");
}
return null;
}
string GenerateHash(string password, byte[] salt)
{
string hashed = Convert.ToBase64String(KeyDerivation.Pbkdf2(
password: password,
salt: salt,
prf: KeyDerivationPrf.HMACSHA1,
iterationCount: 10000,
numBytesRequested: 256/8));
return hashed;
}
byte[] GenerateSalt()
{
byte[] salt = new byte[128/8];
using (var rng = RandomNumberGenerator.Create())
{
rng.GetBytes(salt);
}
return salt;
}
#endregion
}
}