78 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			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>();
 | 
						|
            });
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |