Guest User

Untitled

a guest
Jan 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. app.UseTokenBasedAuthentication();
  2.  
  3.  
  4. public static class UserAuthenticationExtension
  5. {
  6. public static void UseTokenBasedAuthentication(this IAppBuilder appBuilder)
  7. {
  8. appBuilder.Use<TokenBasedAuthMiddleware>(new TokenBasedAuthenticationOptions());
  9. }
  10. }
  11.  
  12. public class TokenBasedAuthMiddleware : AuthenticationMiddleware<TokenBasedAuthenticationOptions>
  13. {
  14. public TokenBasedAuthMiddleware(OwinMiddleware nextMiddleware, TokenBasedAuthenticationOptions authOptions)
  15. : base(nextMiddleware, authOptions)
  16. { }
  17.  
  18. protected override AuthenticationHandler<TokenBasedAuthenticationOptions> CreateHandler()
  19. {
  20. return new TokenAuthenticationHandler();
  21. }
  22. }
  23.  
  24. public class TokenBasedAuthenticationOptions : AuthenticationOptions
  25. {
  26. public TokenBasedAuthenticationOptions() : base("x-company-auth")
  27. { }
  28. }
  29.  
  30.  
  31. public class TokenAuthenticationHandler : AuthenticationHandler<TokenBasedAuthenticationOptions>
  32. {
  33.  
  34. protected override async Task<AuthenticationTicket> AuthenticateCoreAsync()
  35. {
  36. var token = Authentication.GetTokenFromCookie();
  37. if (token == null)
  38. return null;
  39.  
  40. var tokenType = Authentication.GetTokenTypeFromCookie();
  41. if (tokenType == null)
  42. return null;
  43.  
  44. UserInfo ui = await RystadGlobal.authApi.GetUserData(token, tokenType);
  45.  
  46. List<string> userRoles = await RystadGlobal.api.Authorization(tokenType, token);
  47.  
  48. ui.roles = userRoles;
  49.  
  50. AuthenticationProperties authProperties = new AuthenticationProperties();
  51. authProperties.IssuedUtc = DateTime.UtcNow;
  52. authProperties.ExpiresUtc = DateTime.UtcNow.AddDays(1);
  53. authProperties.AllowRefresh = true;
  54. authProperties.IsPersistent = true;
  55.  
  56.  
  57. IList<Claim> claimCollection = new List<Claim>
  58. {
  59. new Claim(ClaimTypes.Name, ui.name)
  60. , new Claim(ClaimTypes.Email, ui.email)
  61. };
  62.  
  63. foreach (string role in ui.roles)
  64. {
  65. claimCollection.Add(new Claim(ClaimTypes.Role, role));
  66. }
  67.  
  68. claimCollection.Add(new Claim(ClaimTypes.Role, ui.role));
  69.  
  70. var claimsIdentity = new RystadIdentity(claimCollection, token, tokenType, ui);
  71. AuthenticationTicket ticket = new AuthenticationTicket(claimsIdentity, authProperties);
  72.  
  73.  
  74. return ticket;
  75. }
  76.  
  77. }
Add Comment
Please, Sign In to add comment