Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class AuthServerProvider : OAuthAuthorizationServerProvider
- {
- public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
- {
- context.Validated();
- }
- public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
- {
- context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
- try
- {
- AuthContext _ctx = new AuthContext();
- DVUserManager userManager = new DVUserManager(_ctx);
- AuthRepo _repo = new AuthRepo(userManager, _ctx);
- DVUser user = await _repo.FindUser(context.UserName, context.Password);
- if (user == null)
- {
- context.SetError("invalid_grant", "The user name or password is incorrect.");
- return;
- }
- var identity = new ClaimsIdentity(context.Options.AuthenticationType);
- identity.AddClaim(new Claim("sub", context.UserName));
- identity.AddClaim(new Claim("role", "user"));
- context.Validated(identity);
- }
- catch (Exception ex)
- {
- context.SetError("invalid_grant", "message");
- }
- }
- }
- public class AuthRepo : IDisposable
- {
- private AuthContext _ctx;
- private DVUserManager _userManager;
- public AuthRepo(DVUserManager userManager, AuthContext ctx)
- {
- _ctx = ctx;
- _userManager = userManager;
- }
- public async Task<IdentityResult> RegisterUser(DVUser user)
- {
- DVUser iuser = new DVUser { UserName = user.UserName};
- var result = await _userManager.CreateAsync(iuser, user.UserName);
- return result;
- }
- public async Task<DVUser> FindUser(string userName, string Password)
- {
- //Find the user works fine, it finds the correct user
- DVUser user = await _userManager.FindByNameAsync(userName);
- //compare passwords. VerifyHasedPAssword ALWAYS is returning failed
- PasswordVerificationResult result = _userManager.PasswordHasher.VerifyHashedPassword(user.Password, Password);
- if (result == PasswordVerificationResult.Success) { return user; }
- else { return null; }
- }
- public void Dispose()
- {
- _ctx.Dispose();
- _userManager.Dispose();
- }
- }
- public class AuthContext : IdentityDbContext<IdentityUser>
- {
- public AuthContext() : base("localhost") //name of the data connection to use
- {
- }
- public DbSet<DVUser> DVUsers { get; set; }
- }
- public class DVUserManager : UserManager<DVUser>
- {
- public DVUserManager(AuthContext ctx) : base(new DVUserStore(ctx))
- {
- PasswordValidator = new MinimumLengthValidator(4);
- }
- }
- public class DVUser : IUser
- {
- public string Id
- {
- get; set;
- }
- public string UserName
- {
- get; set;
- }
- public string Password { get; set; }
- public int DVClientID { get; set; }
- }
- public class DVUserStore : IUserStore<DVUser>, IUserPasswordStore<DVUser>
- {
- AuthContext _context;
- public DVUserStore(AuthContext context)
- {
- _context = context;
- }
- public Task CreateAsync(DVUser user)
- {
- user.Id = Guid.NewGuid().ToString();
- _context.DVUsers.Add(user);
- return _context.SaveChangesAsync();
- }
- public Task DeleteAsync(DVUser user)
- {
- throw new NotImplementedException();
- }
- public void Dispose()
- {
- _context.Dispose();
- }
- public Task<DVUser> FindByIdAsync(string userId)
- {
- throw new NotImplementedException();
- }
- public Task<DVUser> FindByNameAsync(string userName)
- {
- Task<DVUser> task = _context.DVUsers.Where(
- apu => apu.UserName == userName)
- .FirstOrDefaultAsync();
- return task;
- }
- public Task<string> GetPasswordHashAsync(DVUser user)
- {
- if (user == null)
- {
- throw new ArgumentNullException("user");
- }
- return Task.FromResult(user.Password);
- }
- public Task<bool> HasPasswordAsync(DVUser user)
- {
- return Task.FromResult(user.Password != null);
- }
- public Task SetPasswordHashAsync(DVUser user, string passwordHash)
- {
- return Task.FromResult(user.Password = passwordHash);
- }
- public Task UpdateAsync(DVUser user)
- {
- throw new NotImplementedException();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement