|  |  |  | @ -3,11 +3,13 @@ using System.Collections.Generic; | 
			
		
	
		
			
				
					|  |  |  |  | using System.IO; | 
			
		
	
		
			
				
					|  |  |  |  | using System.Linq; | 
			
		
	
		
			
				
					|  |  |  |  | using System.Net.Http; | 
			
		
	
		
			
				
					|  |  |  |  | using System.Text; | 
			
		
	
		
			
				
					|  |  |  |  | using Microsoft.AspNetCore.Builder; | 
			
		
	
		
			
				
					|  |  |  |  | using Microsoft.AspNetCore.Cors; | 
			
		
	
		
			
				
					|  |  |  |  | using Microsoft.Extensions.Configuration; | 
			
		
	
		
			
				
					|  |  |  |  | using Microsoft.Extensions.DependencyInjection; | 
			
		
	
		
			
				
					|  |  |  |  | using Microsoft.Extensions.Hosting; | 
			
		
	
		
			
				
					|  |  |  |  | using Microsoft.IdentityModel.Tokens; | 
			
		
	
		
			
				
					|  |  |  |  | using MyCompanyName.MyProjectName.EntityFrameworkCore; | 
			
		
	
		
			
				
					|  |  |  |  | using MyCompanyName.MyProjectName.MultiTenancy; | 
			
		
	
		
			
				
					|  |  |  |  | using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; | 
			
		
	
	
		
			
				
					|  |  |  | @ -25,6 +27,8 @@ using Volo.Abp.AspNetCore.Serilog; | 
			
		
	
		
			
				
					|  |  |  |  | using Volo.Abp.Autofac; | 
			
		
	
		
			
				
					|  |  |  |  | using Volo.Abp.Localization; | 
			
		
	
		
			
				
					|  |  |  |  | using Volo.Abp.Modularity; | 
			
		
	
		
			
				
					|  |  |  |  | using Volo.Abp.OpenIddict; | 
			
		
	
		
			
				
					|  |  |  |  | using Volo.Abp.OpenIddict.WildcardDomains; | 
			
		
	
		
			
				
					|  |  |  |  | using Volo.Abp.Swashbuckle; | 
			
		
	
		
			
				
					|  |  |  |  | using Volo.Abp.UI.Navigation.Urls; | 
			
		
	
		
			
				
					|  |  |  |  | using Volo.Abp.VirtualFileSystem; | 
			
		
	
	
		
			
				
					|  |  |  | @ -39,12 +43,39 @@ namespace MyCompanyName.MyProjectName; | 
			
		
	
		
			
				
					|  |  |  |  |     typeof(MyProjectNameEntityFrameworkCoreModule), | 
			
		
	
		
			
				
					|  |  |  |  |     typeof(AbpAspNetCoreMvcUiBasicThemeModule), | 
			
		
	
		
			
				
					|  |  |  |  |     typeof(AbpAspNetCoreAuthenticationJwtBearerModule), | 
			
		
	
		
			
				
					|  |  |  |  |     typeof(AbpAccountWebIdentityServerModule), | 
			
		
	
		
			
				
					|  |  |  |  |     typeof(AbpAccountWebOpenIddictModule), | 
			
		
	
		
			
				
					|  |  |  |  |     typeof(AbpAspNetCoreSerilogModule), | 
			
		
	
		
			
				
					|  |  |  |  |     typeof(AbpSwashbuckleModule) | 
			
		
	
		
			
				
					|  |  |  |  | )] | 
			
		
	
		
			
				
					|  |  |  |  | public class MyProjectNameHttpApiHostModule : AbpModule | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  |     public override void PreConfigureServices(ServiceConfigurationContext context) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         PreConfigure<OpenIddictServerBuilder>(builder => | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             //https://documentation.openiddict.com/configuration/token-formats.html#disabling-jwt-access-token-encryption | 
			
		
	
		
			
				
					|  |  |  |  |             //https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html | 
			
		
	
		
			
				
					|  |  |  |  |             builder.AddSigningKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78"))); | 
			
		
	
		
			
				
					|  |  |  |  |             builder.AddEncryptionKey(new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80"))); | 
			
		
	
		
			
				
					|  |  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         PreConfigure<AbpOpenIddictWildcardDomainOptions>(options => | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             options.EnableWildcardDomainSupport = true; | 
			
		
	
		
			
				
					|  |  |  |  |             options.WildcardDomainsFormat.Add("https://{0}.abp.io/signin-oidc"); | 
			
		
	
		
			
				
					|  |  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         PreConfigure<OpenIddictBuilder>(builder => | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             builder.AddValidation(options => | 
			
		
	
		
			
				
					|  |  |  |  |             { | 
			
		
	
		
			
				
					|  |  |  |  |                 options.AddAudiences("MyProjectName"); | 
			
		
	
		
			
				
					|  |  |  |  |                 options.UseLocalServer(); | 
			
		
	
		
			
				
					|  |  |  |  |                 options.UseAspNetCore(); | 
			
		
	
		
			
				
					|  |  |  |  |             }); | 
			
		
	
		
			
				
					|  |  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |      | 
			
		
	
		
			
				
					|  |  |  |  |     public override void ConfigureServices(ServiceConfigurationContext context) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         var configuration = context.Services.GetConfiguration(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -117,6 +148,11 @@ public class MyProjectNameHttpApiHostModule : AbpModule | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) | 
			
		
	
		
			
				
					|  |  |  |  |     { | 
			
		
	
		
			
				
					|  |  |  |  |         Configure<AbpOpenIddictAspNetCoreOptions>(options => | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             options.AddDevelopmentEncryptionAndSigningCertificate = false; | 
			
		
	
		
			
				
					|  |  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |  |          | 
			
		
	
		
			
				
					|  |  |  |  |         context.Services.AddAuthentication() | 
			
		
	
		
			
				
					|  |  |  |  |             .AddJwtBearer(options => | 
			
		
	
		
			
				
					|  |  |  |  |             { | 
			
		
	
	
		
			
				
					|  |  |  | @ -128,6 +164,9 @@ public class MyProjectNameHttpApiHostModule : AbpModule | 
			
		
	
		
			
				
					|  |  |  |  |                     ServerCertificateCustomValidationCallback = | 
			
		
	
		
			
				
					|  |  |  |  |                         HttpClientHandler.DangerousAcceptAnyServerCertificateValidator | 
			
		
	
		
			
				
					|  |  |  |  |                 }; | 
			
		
	
		
			
				
					|  |  |  |  |                  | 
			
		
	
		
			
				
					|  |  |  |  |                 options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_C40DBB176E78")); | 
			
		
	
		
			
				
					|  |  |  |  |                 options.TokenValidationParameters.TokenDecryptionKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Abp_OpenIddict_Demo_87E33FC57D80")); | 
			
		
	
		
			
				
					|  |  |  |  |             }); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -144,6 +183,7 @@ public class MyProjectNameHttpApiHostModule : AbpModule | 
			
		
	
		
			
				
					|  |  |  |  |                 options.SwaggerDoc("v1", new OpenApiInfo { Title = "MyProjectName API", Version = "v1" }); | 
			
		
	
		
			
				
					|  |  |  |  |                 options.DocInclusionPredicate((docName, description) => true); | 
			
		
	
		
			
				
					|  |  |  |  |                 options.CustomSchemaIds(type => type.FullName); | 
			
		
	
		
			
				
					|  |  |  |  |                 options.ResolveConflictingActions(x => x.First()); | 
			
		
	
		
			
				
					|  |  |  |  |             }); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -225,7 +265,6 @@ public class MyProjectNameHttpApiHostModule : AbpModule | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         app.UseUnitOfWork(); | 
			
		
	
		
			
				
					|  |  |  |  |         app.UseIdentityServer(); | 
			
		
	
		
			
				
					|  |  |  |  |         app.UseAuthorization(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         app.UseSwagger(); | 
			
		
	
	
		
			
				
					|  |  |  | 
 |