using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.IdentityModel.Tokens; using OpenIddict.Validation.AspNetCore; using System.Text; namespace HuiXin.Identity.OpenIddict { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddCors(); builder.Services.AddControllers(); builder.Services .AddAuthentication(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme) .AddCookie(); builder.Services.AddDbContext(options => { //options.UseSqlite("DataSource=:memory:"); options.UseMySQL("server=8.134.236.110;port=13306;database=openiddict;user=test;password=test") .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); // Register the entity sets needed by OpenIddict. // Note: use the generic overload if you need to replace the default OpenIddict entities. options.UseOpenIddict(); }); builder.Services.AddIdentity() .AddEntityFrameworkStores() .AddDefaultTokenProviders(); builder.Services .AddOpenIddict() // Register the OpenIddict core components. .AddCore(options => { // Configure OpenIddict to use the Entity Framework Core stores and models. // Note: call ReplaceDefaultEntities() to replace the default entities. options.UseEntityFrameworkCore() .UseDbContext(); }) // Register the OpenIddict server components. .AddServer(options => { options.SetAccessTokenLifetime(TimeSpan.FromMinutes(5)); options.SetIdentityTokenLifetime(TimeSpan.FromMinutes(5)); options.SetRefreshTokenLifetime(TimeSpan.FromDays(365 * 100)); // Enable the token endpoint. options.SetTokenEndpointUris("auth/connect/token"); options.SetAuthorizationEndpointUris("auth/connect/authorize"); options.SetUserinfoEndpointUris("auth/connect/userinfo"); options.SetLogoutEndpointUris("auth/connect/logout"); // Enable the client credentials flow. options.AllowClientCredentialsFlow(); options.AllowAuthorizationCodeFlow(); options.AllowPasswordFlow(); options.AllowRefreshTokenFlow(); // Register the signing and encryption credentials. options.AddEncryptionKey(new SymmetricSecurityKey(Convert.FromBase64String("GcTdqSZdpRxBtdtgwvDHBzS427VGTQzbM+JD1CBbUZY="))); options.AddDevelopmentSigningCertificate(); // Register the ASP.NET Core host and configure the ASP.NET Core options. options.UseAspNetCore() .EnableTokenEndpointPassthrough() .EnableAuthorizationEndpointPassthrough() .EnableUserinfoEndpointPassthrough() .EnableLogoutEndpointPassthrough() .DisableTransportSecurityRequirement(); options.IgnoreEndpointPermissions(); options.IgnoreGrantTypePermissions(); options.IgnoreScopePermissions(); options.IgnoreResponseTypePermissions(); }) // Register the OpenIddict validation components. .AddValidation(options => { // Import the configuration from the local OpenIddict server instance. options.UseLocalServer(); // Register the ASP.NET Core host. options.UseAspNetCore(); }); builder.Services.AddHostedService(); var app = builder.Build(); // Configure the HTTP request pipeline. //app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); } } }