mirror of
https://bitbucket.org/myhomie/mycorerepository.git
synced 2025-12-06 09:41:19 +00:00
124 lines
4.4 KiB
C#
124 lines
4.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using AspNetCore.Security.Jwt;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using Microsoft.AspNetCore.HttpsPolicy;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using Microsoft.Extensions.Options;
|
|
using Microsoft.IdentityModel.Tokens;
|
|
using MyCore.Models;
|
|
using MyCore.Services;
|
|
using Swashbuckle.AspNetCore.Swagger;
|
|
namespace MyCore
|
|
{
|
|
public class Startup
|
|
{
|
|
public Startup(IConfiguration configuration)
|
|
{
|
|
Configuration = configuration;
|
|
|
|
//MQTTService mQTTService = new MQTTService();
|
|
|
|
MerossService merossService = new MerossService();
|
|
}
|
|
|
|
public IConfiguration Configuration { get; }
|
|
|
|
// This method gets called by the runtime. Use this method to add services to the container.
|
|
public void ConfigureServices(IServiceCollection services)
|
|
{
|
|
// Add the service (test purpose)
|
|
services.AddScoped<BookService>();
|
|
services.AddScoped<IoTDeviceService>();
|
|
services.AddScoped<UserService>();
|
|
services.AddScoped<TokenService>();
|
|
services.AddScoped<DeviceService>();
|
|
|
|
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
|
|
|
|
// Register the Swagger generator, defining 1 or more Swagger documents
|
|
services.AddSwaggerGen(c =>
|
|
{
|
|
c.SwaggerDoc("v1", new Info { Title = "MyCoreApi", Version = "v1" });
|
|
|
|
// Set the comments path for the Swagger JSON and UI.
|
|
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
|
|
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
|
|
c.IncludeXmlComments(xmlPath);
|
|
|
|
c.AddSecurityDefinition("Bearer", new ApiKeyScheme { In = "header", Description = "Please enter JWT with Bearer into field", Name = "Authorization", Type = "apiKey" });
|
|
c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>> {
|
|
{ "Bearer", Enumerable.Empty<string>() },
|
|
});
|
|
|
|
});
|
|
|
|
services.AddAuthentication(options => {
|
|
options.DefaultAuthenticateScheme = "JwtBearer";
|
|
options.DefaultChallengeScheme = "JwtBearer";
|
|
})
|
|
|
|
.AddJwtBearer("JwtBearer", jwtBearerOptions =>
|
|
{
|
|
jwtBearerOptions.TokenValidationParameters = new TokenValidationParameters
|
|
{
|
|
ValidateIssuerSigningKey = true,
|
|
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("%G2YZ=\tgN7fC9M$FXDt#q*a&]Z")), // Put the secret in a file or something
|
|
|
|
ValidateIssuer = true,
|
|
ValidIssuer = "MyCore App",
|
|
|
|
ValidateAudience = true,
|
|
ValidAudience = "Miotecher",
|
|
|
|
ValidateLifetime = true, //validate the expiration and not before values in the token
|
|
|
|
ClockSkew = TimeSpan.FromMinutes(5) //5 minute tolerance for the expiration date
|
|
};
|
|
});
|
|
}
|
|
|
|
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
|
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
|
|
{
|
|
|
|
app.UseCors(
|
|
options => options.WithOrigins("http://localhost:4200").AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials()
|
|
);
|
|
|
|
// Enable middleware to serve generated Swagger as a JSON endpoint.
|
|
app.UseSwagger();
|
|
|
|
if (env.IsDevelopment())
|
|
{
|
|
app.UseDeveloperExceptionPage();
|
|
}
|
|
else
|
|
{
|
|
app.UseHsts();
|
|
}
|
|
|
|
app.UseAuthentication();
|
|
|
|
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
|
|
// specifying the Swagger JSON endpoint.
|
|
app.UseSwaggerUI(c =>
|
|
{
|
|
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyCoreApi V1");
|
|
});
|
|
|
|
//app.UseHttpsRedirection();
|
|
app.UseMvc();
|
|
}
|
|
}
|
|
}
|