irc-netcore-api/ZhiZhunAuthenticationCenter/Startup.cs

78 lines
2.6 KiB
C#

using System.IO;
using System.Security.Cryptography;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using ZhiZhun.AuthenticationCenter.GrpcService;
using ZhiZhun.AuthenticationCenter.Utility;
using ZhiZhun.AuthenticationCenter.Utility.RSA;
namespace ZhiZhun.AuthenticationCenter
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
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)
{
services.AddControllers()
.AddNewtonsoftJson();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "ZHIZHUN.AuthenticationCenter", Version = "v1" });
});
#region HS256 对称可逆加密
//services.AddScoped<IJWTService, JWTHSService>();
//services.Configure<JWTTokenOptions>(this.Configuration.GetSection("JWTTokenOptions"));
#endregion
#region RS256 非对称可逆加密,需要获取一次公钥
string keyDir = Directory.GetCurrentDirectory();
if (RSAHelper.TryGetKeyParameters(keyDir, true, out RSAParameters keyParams) == false)
{
keyParams = RSAHelper.GenerateAndSaveKey(keyDir);
}
services.AddScoped<IJWTService, JWTRSService>();
services.Configure<JWTTokenOptions>(this.Configuration.GetSection("JWTTokenOptions"));
#endregion
services.AddGrpc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "ZHIZHUN.AuthenticationCenter v1"));
app.UseRouting();
//app.UseAuthentication();
//app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
//endpoints.MapControllers();
endpoints.MapGrpcService<GrpcTokenService>();
});
}
}
}