Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 KB | None | 0 0
  1. public class AuthServerProvider : OAuthAuthorizationServerProvider
  2. {
  3. public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
  4. {
  5. context.Validated();
  6. }
  7.  
  8. public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
  9. {
  10. context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
  11.  
  12. try
  13. {
  14. AuthContext _ctx = new AuthContext();
  15. DVUserManager userManager = new DVUserManager(_ctx);
  16. AuthRepo _repo = new AuthRepo(userManager, _ctx);
  17.  
  18. DVUser user = await _repo.FindUser(context.UserName, context.Password);
  19.  
  20. if (user == null)
  21. {
  22. context.SetError("invalid_grant", "The user name or password is incorrect.");
  23. return;
  24. }
  25.  
  26. var identity = new ClaimsIdentity(context.Options.AuthenticationType);
  27. identity.AddClaim(new Claim("sub", context.UserName));
  28. identity.AddClaim(new Claim("role", "user"));
  29.  
  30. context.Validated(identity);
  31. }
  32. catch (Exception ex)
  33. {
  34. context.SetError("invalid_grant", "message");
  35. }
  36. }
  37. }
  38.  
  39. public class AuthRepo : IDisposable
  40. {
  41. private AuthContext _ctx;
  42. private DVUserManager _userManager;
  43.  
  44. public AuthRepo(DVUserManager userManager, AuthContext ctx)
  45. {
  46. _ctx = ctx;
  47. _userManager = userManager;
  48. }
  49.  
  50. public async Task<IdentityResult> RegisterUser(DVUser user)
  51. {
  52. DVUser iuser = new DVUser { UserName = user.UserName};
  53.  
  54. var result = await _userManager.CreateAsync(iuser, user.UserName);
  55. return result;
  56. }
  57. public async Task<DVUser> FindUser(string userName, string Password)
  58. {
  59. //Find the user works fine, it finds the correct user
  60. DVUser user = await _userManager.FindByNameAsync(userName);
  61.  
  62. //compare passwords. VerifyHasedPAssword ALWAYS is returning failed
  63. PasswordVerificationResult result = _userManager.PasswordHasher.VerifyHashedPassword(user.Password, Password);
  64.  
  65. if (result == PasswordVerificationResult.Success) { return user; }
  66. else { return null; }
  67. }
  68.  
  69. public void Dispose()
  70. {
  71. _ctx.Dispose();
  72. _userManager.Dispose();
  73. }
  74. }
  75.  
  76. public class AuthContext : IdentityDbContext<IdentityUser>
  77. {
  78. public AuthContext() : base("localhost") //name of the data connection to use
  79. {
  80.  
  81. }
  82. public DbSet<DVUser> DVUsers { get; set; }
  83. }
  84.  
  85. public class DVUserManager : UserManager<DVUser>
  86. {
  87. public DVUserManager(AuthContext ctx) : base(new DVUserStore(ctx))
  88. {
  89. PasswordValidator = new MinimumLengthValidator(4);
  90. }
  91. }
  92.  
  93. public class DVUser : IUser
  94. {
  95. public string Id
  96. {
  97. get; set;
  98. }
  99.  
  100. public string UserName
  101. {
  102. get; set;
  103. }
  104.  
  105. public string Password { get; set; }
  106.  
  107. public int DVClientID { get; set; }
  108. }
  109.  
  110. public class DVUserStore : IUserStore<DVUser>, IUserPasswordStore<DVUser>
  111. {
  112. AuthContext _context;
  113. public DVUserStore(AuthContext context)
  114. {
  115. _context = context;
  116. }
  117.  
  118. public Task CreateAsync(DVUser user)
  119. {
  120. user.Id = Guid.NewGuid().ToString();
  121. _context.DVUsers.Add(user);
  122. return _context.SaveChangesAsync();
  123. }
  124.  
  125. public Task DeleteAsync(DVUser user)
  126. {
  127. throw new NotImplementedException();
  128. }
  129.  
  130. public void Dispose()
  131. {
  132. _context.Dispose();
  133. }
  134.  
  135. public Task<DVUser> FindByIdAsync(string userId)
  136. {
  137. throw new NotImplementedException();
  138. }
  139.  
  140. public Task<DVUser> FindByNameAsync(string userName)
  141. {
  142. Task<DVUser> task = _context.DVUsers.Where(
  143. apu => apu.UserName == userName)
  144. .FirstOrDefaultAsync();
  145.  
  146. return task;
  147. }
  148.  
  149. public Task<string> GetPasswordHashAsync(DVUser user)
  150. {
  151. if (user == null)
  152. {
  153. throw new ArgumentNullException("user");
  154. }
  155.  
  156. return Task.FromResult(user.Password);
  157. }
  158.  
  159. public Task<bool> HasPasswordAsync(DVUser user)
  160. {
  161. return Task.FromResult(user.Password != null);
  162. }
  163.  
  164. public Task SetPasswordHashAsync(DVUser user, string passwordHash)
  165. {
  166. return Task.FromResult(user.Password = passwordHash);
  167. }
  168.  
  169. public Task UpdateAsync(DVUser user)
  170. {
  171. throw new NotImplementedException();
  172. }
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement