private string GetToken(ClaimsIdentity identity) { var now = DateTime.UtcNow; var jwt = new JwtSecurityToken( issuer: OAuthOptions.ISSUER, audience: OAuthOptions.AUDIENCE, claims: identity.Claims, notBefore: now, expires: now.Add(TimeSpan.FromMinutes(OAuthOptions.LIFETIME)), signingCredentials: new SigningCredentials(OAuthOptions.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256)); return(new JwtSecurityTokenHandler().WriteToken(jwt)); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.RequireHttpsMetadata = true; options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters { ValidateIssuer = true, ValidIssuer = OAuthOptions.ISSUER, ValidateAudience = true, ValidAudience = OAuthOptions.AUDIENCE, ValidateLifetime = true, IssuerSigningKey = OAuthOptions.GetSymmetricSecurityKey(), ValidateIssuerSigningKey = true }; }); IdentityModelEventSource.ShowPII = true; services.AddCors(options => { options.AddPolicy("CorsPolicy", builder => builder .WithOrigins("https://localhost:44350/") .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials()); }); services.AddControllersWithViews(); services.AddSignalR(); // In production, the Angular files will be served from this directory services.AddSpaStaticFiles(configuration => { configuration.RootPath = "ClientApp/dist"; }); }