From 268a0b64b54b7e0092bf096f1755046b985c335b Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Wed, 6 Oct 2021 10:55:41 +0300 Subject: [PATCH] Microservice swagger auth configurations --- .../AdministrationServiceHttpApiHostModule.cs | 39 ++++++++++++++++++- .../appsettings.json | 4 +- .../appsettings.json | 4 +- .../SaasServiceHttpApiHostModule.cs | 34 +++++++++++++++- .../appsettings.json | 4 +- 5 files changed, 80 insertions(+), 5 deletions(-) diff --git a/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/AdministrationServiceHttpApiHostModule.cs b/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/AdministrationServiceHttpApiHostModule.cs index afc8ab09..2e64a6ab 100644 --- a/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/AdministrationServiceHttpApiHostModule.cs +++ b/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/AdministrationServiceHttpApiHostModule.cs @@ -1,8 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; using EShopOnAbp.AdministrationService.DbMigrations; using EShopOnAbp.AdministrationService.EntityFrameworkCore; using EShopOnAbp.SaasService; +using EShopOnAbp.Shared.Hosting.AspNetCore; using EShopOnAbp.Shared.Hosting.Microservices; using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Cors; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Volo.Abp; @@ -31,8 +36,39 @@ namespace EShopOnAbp.AdministrationService { public override void ConfigureServices(ServiceConfigurationContext context) { + var configuration = context.Services.GetConfiguration(); + JwtBearerConfigurationHelper.Configure(context, "AdministrationService"); - SwaggerConfigurationHelper.Configure(context, "Administration Service API"); + // SwaggerConfigurationHelper.Configure(context, "Administration Service API"); + + SwaggerWithAuthConfigurationHelper.Configure( + context: context, + authority: configuration["AuthServer:Authority"], + scopes: new Dictionary /* Requested scopes for authorization code request and descriptions for swagger UI only */ + { + {"Administration", "Administration Service API"}, + }, + apiTitle: "Administration Service API" + ); + + context.Services.AddCors(options => + { + options.AddDefaultPolicy(builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"] + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.Trim().RemovePostFix("/")) + .ToArray() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); } public override void OnApplicationInitialization(ApplicationInitializationContext context) { @@ -45,6 +81,7 @@ namespace EShopOnAbp.AdministrationService } app.UseCorrelationId(); + app.UseCors(); app.UseAbpRequestLocalization(); app.UseStaticFiles(); app.UseRouting(); diff --git a/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/appsettings.json b/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/appsettings.json index 5298c316..0bb09d1e 100644 --- a/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/appsettings.json +++ b/services/administration/src/EShopOnAbp.AdministrationService.HttpApi.Host/appsettings.json @@ -5,7 +5,9 @@ }, "AuthServer": { "Authority": "https://localhost:44330", - "RequireHttpsMetadata": "true" + "RequireHttpsMetadata": "true", + "SwaggerClientId": "AdministrationService_Swagger", + "SwaggerClientSecret": "1q2w3e*" }, "RemoteServices": { "Default": { diff --git a/services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/appsettings.json b/services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/appsettings.json index f9ca551d..5a226ea8 100644 --- a/services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/appsettings.json +++ b/services/identity/src/EShopOnAbp.IdentityService.HttpApi.Host/appsettings.json @@ -5,7 +5,9 @@ }, "AuthServer": { "Authority": "https://localhost:44330", - "RequireHttpsMetadata": "true" + "RequireHttpsMetadata": "true", + "SwaggerClientId": "IdentityService_Swagger", + "SwaggerClientSecret": "1q2w3e*" }, "Logging": { "LogLevel": { diff --git a/services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/SaasServiceHttpApiHostModule.cs b/services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/SaasServiceHttpApiHostModule.cs index a748904c..a635fe06 100644 --- a/services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/SaasServiceHttpApiHostModule.cs +++ b/services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/SaasServiceHttpApiHostModule.cs @@ -10,6 +10,7 @@ using Microsoft.AspNetCore.DataProtection; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using EShopOnAbp.SaasService.EntityFrameworkCore; +using EShopOnAbp.Shared.Hosting.AspNetCore; using EShopOnAbp.Shared.Hosting.Microservices; using StackExchange.Redis; using Microsoft.OpenApi.Models; @@ -34,10 +35,40 @@ namespace EShopOnAbp.SaasService { public override void ConfigureServices(ServiceConfigurationContext context) { + var configuration = context.Services.GetConfiguration(); context.Services.AddAbpDbContext(); JwtBearerConfigurationHelper.Configure(context, "SaasService"); - SwaggerConfigurationHelper.Configure(context, "Saas Service API"); + // SwaggerConfigurationHelper.Configure(context, "Saas Service API"); + + SwaggerWithAuthConfigurationHelper.Configure( + context: context, + authority: configuration["AuthServer:Authority"], + scopes: new Dictionary /* Requested scopes for authorization code request and descriptions for swagger UI only */ + { + {"SaasService", "Saas Service API"}, + }, + apiTitle: "Saas Service API" + ); + + context.Services.AddCors(options => + { + options.AddDefaultPolicy(builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"] + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.Trim().RemovePostFix("/")) + .ToArray() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); } public override void OnApplicationInitialization(ApplicationInitializationContext context) @@ -51,6 +82,7 @@ namespace EShopOnAbp.SaasService } app.UseCorrelationId(); + app.UseCors(); app.UseAbpRequestLocalization(); app.UseStaticFiles(); app.UseRouting(); diff --git a/services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/appsettings.json b/services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/appsettings.json index 25b7b4c1..7f8b284a 100644 --- a/services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/appsettings.json +++ b/services/saas/src/EShopOnAbp.SaasService.HttpApi.Host/appsettings.json @@ -5,7 +5,9 @@ }, "AuthServer": { "Authority": "https://localhost:44330", - "RequireHttpsMetadata": "true" + "RequireHttpsMetadata": "true", + "SwaggerClientId": "IdentityService_Swagger", + "SwaggerClientSecret": "1q2w3e*" }, "Logging": { "LogLevel": {