You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

52 lines
1.8 KiB

  1. using Microsoft.AspNetCore.Authentication.JwtBearer;
  2. using Microsoft.AspNetCore.Builder;
  3. using Microsoft.Extensions.Configuration;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using Microsoft.IdentityModel.Tokens;
  6. using System;
  7. using System.Security.Claims;
  8. using System.Text;
  9. namespace Api.Start
  10. {
  11. public static class AuthRegister
  12. {
  13. public static void RegisterAuth(this IServiceCollection services, IConfiguration configuration)
  14. {
  15. services.AddAuthentication(options =>
  16. {
  17. options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
  18. options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
  19. }).AddJwtBearer(options =>
  20. {
  21. var secret = configuration.GetValue<string>("Jwt:Key");
  22. var issuer = configuration.GetValue<string>("Jwt:Issuer");
  23. options.IncludeErrorDetails = true;
  24. options.TokenValidationParameters = new TokenValidationParameters
  25. {
  26. ValidateIssuer = true,
  27. ValidIssuer = issuer,
  28. ValidateAudience = true,
  29. ValidAudience = issuer,
  30. ValidateIssuerSigningKey = true,
  31. IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secret)),
  32. ValidateLifetime = true,
  33. ClockSkew = TimeSpan.Zero,
  34. RoleClaimType = ClaimTypes.Role,
  35. SaveSigninToken = true,
  36. };
  37. });
  38. }
  39. public static void ConfigureAuthentication(this IApplicationBuilder app)
  40. {
  41. app.UseAuthentication();
  42. app.UseAuthorization();
  43. }
  44. }
  45. }