From 2f2a39584d2397c6b2b2b5165810a882e8db2385 Mon Sep 17 00:00:00 2001 From: "M. Akif Tokatlioglu" Date: Sun, 31 Mar 2024 10:10:36 +0300 Subject: [PATCH] updated Microser (gateway) --- .../Controllers/WeatherForecastController.cs | 2 +- .../Microser.API.Weather.csproj | 2 +- src/Microser/Microser.API.Weather/Program.cs | 82 +++++++++++++++++- .../Microser.ApiGateway.csproj | 14 +++ src/Microser/Microser.ApiGateway/Program.cs | 33 +++++++ .../Properties/launchSettings.json | 14 +++ .../appsettings.Development.json | 8 ++ .../Microser.ApiGateway/appsettings.json | 9 ++ src/Microser/Microser.ApiGateway/ocelot.json | 38 ++++++++ .../Microser.BlazorAppClient/Program.cs | 16 +++- .../Services/WeatherForecastApiService.cs | 20 +++-- src/Microser/Microser.IdS/Config.cs | 24 +++++ src/Microser/Microser.IdS/IdentityServer.db | Bin 311296 -> 311296 bytes .../Microser.IdS/IdentityServer.db-shm | Bin 32768 -> 32768 bytes .../Microser.IdS/IdentityServer.db-wal | Bin 869352 -> 494432 bytes .../Migrations/ConfigurationDb.sql | 2 +- ... 20240316101904_Configuration.Designer.cs} | 2 +- ...ion.cs => 20240316101904_Configuration.cs} | 2 +- .../Migrations/PersistedGrantDb.sql | 2 +- ...r.cs => 20240316101846_Grants.Designer.cs} | 2 +- ...625_Grants.cs => 20240316101846_Grants.cs} | 5 +- src/Microser/Microser.sln | 14 ++- 22 files changed, 267 insertions(+), 24 deletions(-) create mode 100644 src/Microser/Microser.ApiGateway/Microser.ApiGateway.csproj create mode 100644 src/Microser/Microser.ApiGateway/Program.cs create mode 100644 src/Microser/Microser.ApiGateway/Properties/launchSettings.json create mode 100644 src/Microser/Microser.ApiGateway/appsettings.Development.json create mode 100644 src/Microser/Microser.ApiGateway/appsettings.json create mode 100644 src/Microser/Microser.ApiGateway/ocelot.json rename src/Microser/Microser.IdS/Migrations/ConfigurationDb/{20240312131641_Configuration.Designer.cs => 20240316101904_Configuration.Designer.cs} (99%) rename src/Microser/Microser.IdS/Migrations/ConfigurationDb/{20240312131641_Configuration.cs => 20240316101904_Configuration.cs} (99%) rename src/Microser/Microser.IdS/Migrations/PersistedGrantDb/{20240312131625_Grants.Designer.cs => 20240316101846_Grants.Designer.cs} (99%) rename src/Microser/Microser.IdS/Migrations/PersistedGrantDb/{20240312131625_Grants.cs => 20240316101846_Grants.cs} (99%) diff --git a/src/Microser/Microser.API.Weather/Controllers/WeatherForecastController.cs b/src/Microser/Microser.API.Weather/Controllers/WeatherForecastController.cs index a6930dd..ca34570 100644 --- a/src/Microser/Microser.API.Weather/Controllers/WeatherForecastController.cs +++ b/src/Microser/Microser.API.Weather/Controllers/WeatherForecastController.cs @@ -6,7 +6,7 @@ namespace Microser.API.Weather.Controllers; [Authorize(Policy = "ClientIdPolicy")] [ApiController] -[Route("[controller]")] +[Route("api/[controller]")] public class WeatherForecastController : ControllerBase { private readonly ILogger _logger; diff --git a/src/Microser/Microser.API.Weather/Microser.API.Weather.csproj b/src/Microser/Microser.API.Weather/Microser.API.Weather.csproj index 75ce02e..e6f703b 100644 --- a/src/Microser/Microser.API.Weather/Microser.API.Weather.csproj +++ b/src/Microser/Microser.API.Weather/Microser.API.Weather.csproj @@ -1,4 +1,4 @@ - + net8.0 diff --git a/src/Microser/Microser.API.Weather/Program.cs b/src/Microser/Microser.API.Weather/Program.cs index f144cfa..a8ce7d2 100644 --- a/src/Microser/Microser.API.Weather/Program.cs +++ b/src/Microser/Microser.API.Weather/Program.cs @@ -1,4 +1,7 @@ +using Microsoft.AspNetCore.Authorization; using Microsoft.IdentityModel.Tokens; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; internal class Program { @@ -11,7 +14,46 @@ internal class Program builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); - builder.Services.AddSwaggerGen(); + + + + + + builder.Services.AddSwaggerGen(options => + { + options.SwaggerDoc("v1", new OpenApiInfo { Title = "Microser.API.Weather", Version = "v1" }); + + options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme + { + Type = SecuritySchemeType.OAuth2, + Flows = new OpenApiOAuthFlows + { + AuthorizationCode = new OpenApiOAuthFlow + { + AuthorizationUrl = new Uri("https://localhost:5001/connect/authorize"), + TokenUrl = new Uri("https://localhost:5001/connect/token"), + Scopes = new Dictionary + { + {"openid", "OpenId - full access"}, + {"profile", "Profile - full access"}, + {"address", "Address - full access"}, + {"email", "Email - full access"}, + {"roles", "Your role(s) - full access"}, + {"scope1", "scope1 - full access"}, + {"microser_api_weather", "microser_api_weather - full access"}, + } + } + } + }); + + options.OperationFilter(); + }); + + + + + + builder.Services.AddAuthentication("Bearer") .AddJwtBearer("Bearer", options => @@ -25,7 +67,7 @@ internal class Program builder.Services.AddAuthorization(options => { - options.AddPolicy("ClientIdPolicy", policy => policy.RequireClaim("client_id", "microser_api_weather", "dotnet_blazor_serverapp")); + options.AddPolicy("ClientIdPolicy", policy => policy.RequireClaim("client_id", "microser_api_weather", "dotnet_blazor_serverapp", "dotnet_api_swagger")); }); var app = builder.Build(); @@ -34,7 +76,17 @@ internal class Program if (app.Environment.IsDevelopment()) { app.UseSwagger(); - app.UseSwaggerUI(); + //app.UseSwaggerUI(); + app.UseSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "Microser.API.Weather v1"); + + options.OAuthClientId("dotnet_api_swagger"); + options.OAuthClientSecret("76CD4B0FC93846F08395BF8994B86BC6"); + options.OAuthAppName("Microser.API.Weather - Swagger"); + options.OAuthUsePkce(); + }); + } app.UseHttpsRedirection(); @@ -47,4 +99,28 @@ internal class Program app.Run(); } +} + +public class AuthorizeCheckOperationFilter : IOperationFilter +{ + public void Apply(OpenApiOperation operation, OperationFilterContext context) + { + var hasAuthorize = context.MethodInfo.DeclaringType.GetCustomAttributes(true).OfType().Any() || + context.MethodInfo.GetCustomAttributes(true).OfType().Any(); + + if (hasAuthorize) + { + operation.Responses.Add("401", new OpenApiResponse { Description = "Unauthorized" }); + operation.Responses.Add("403", new OpenApiResponse { Description = "Forbidden" }); + + operation.Security = new List + { + new OpenApiSecurityRequirement + { + [new OpenApiSecurityScheme {Reference = new OpenApiReference {Type = ReferenceType.SecurityScheme, Id = "oauth2"}}] + = new[] {"api1"} + } + }; + } + } } \ No newline at end of file diff --git a/src/Microser/Microser.ApiGateway/Microser.ApiGateway.csproj b/src/Microser/Microser.ApiGateway/Microser.ApiGateway.csproj new file mode 100644 index 0000000..7f32c96 --- /dev/null +++ b/src/Microser/Microser.ApiGateway/Microser.ApiGateway.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + + + + + + + + diff --git a/src/Microser/Microser.ApiGateway/Program.cs b/src/Microser/Microser.ApiGateway/Program.cs new file mode 100644 index 0000000..1ec4f7b --- /dev/null +++ b/src/Microser/Microser.ApiGateway/Program.cs @@ -0,0 +1,33 @@ +using Microsoft.IdentityModel.Tokens; +using Ocelot.DependencyInjection; +using Ocelot.Middleware; + +internal class Program +{ + private static void Main(string[] args) + { + var builder = WebApplication.CreateBuilder(args); + + builder.Configuration.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true); + + var authenticationProviderKey = "IdentityApiKey"; + + builder.Services.AddAuthentication() + .AddJwtBearer(authenticationProviderKey, x => + { + x.Authority = "https://localhost:5001"; + x.TokenValidationParameters = new TokenValidationParameters + { + ValidateAudience = false + }; + }); + + builder.Services.AddOcelot(builder.Configuration); + + var app = builder.Build(); + + app.UseOcelot().Wait(); + + app.Run(); + } +} \ No newline at end of file diff --git a/src/Microser/Microser.ApiGateway/Properties/launchSettings.json b/src/Microser/Microser.ApiGateway/Properties/launchSettings.json new file mode 100644 index 0000000..0706227 --- /dev/null +++ b/src/Microser/Microser.ApiGateway/Properties/launchSettings.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "profiles": { + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:6501", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/Microser/Microser.ApiGateway/appsettings.Development.json b/src/Microser/Microser.ApiGateway/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/src/Microser/Microser.ApiGateway/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/src/Microser/Microser.ApiGateway/appsettings.json b/src/Microser/Microser.ApiGateway/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/src/Microser/Microser.ApiGateway/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/src/Microser/Microser.ApiGateway/ocelot.json b/src/Microser/Microser.ApiGateway/ocelot.json new file mode 100644 index 0000000..898edbf --- /dev/null +++ b/src/Microser/Microser.ApiGateway/ocelot.json @@ -0,0 +1,38 @@ +{ + "Routes": [ + { + "DownstreamPathTemplate": "/api/weatherforecast", + "DownstreamScheme": "https", + "DownstreamHostAndPorts": [ + { + "Host": "localhost", + "Port": 6001 + } + ], + "UpstreamPathTemplate": "/weatherforecast", + "UpstreamHttpMethod": [ "GET", "POST" ], + "AuthenticationOptions": { + "AuthenticationProviderKey": "IdentityApiKey", + "AllowedScopes": [] + } + }, + { + "DownstreamPathTemplate": "/api/weatherforecast/{id}", + "DownstreamScheme": "https", + "DownstreamHostAndPorts": [ + { + "Host": "localhost", + "Port": 6001 + } + ], + "UpstreamPathTemplate": "/weatherforecast/{id}", + "UpstreamHttpMethod": [ "GET", "PUT", "DELETE" ], + "AuthenticationOptions": { + "AuthenticationProviderKey": "IdentityApiKey", + "AllowedScopes": [] + } + }, + + + ] +} diff --git a/src/Microser/Microser.BlazorAppClient/Program.cs b/src/Microser/Microser.BlazorAppClient/Program.cs index c5e7b2a..53200bd 100644 --- a/src/Microser/Microser.BlazorAppClient/Program.cs +++ b/src/Microser/Microser.BlazorAppClient/Program.cs @@ -126,13 +126,23 @@ public static class StartupExtensions public static void AddHttpClients(this IServiceCollection services) { - services.AddHttpClient("WeatherForecastAPIClient", client => + // connect API from ApiGateway + services.AddHttpClient("APIGateway", client => { - client.BaseAddress = new Uri("https://localhost:6001/"); + client.BaseAddress = new Uri("https://localhost:6501/"); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Add(HeaderNames.Accept, "application/json"); }) - .AddHttpMessageHandler(); + .AddHttpMessageHandler(); + + ////directly connect to API + //services.AddHttpClient("WeatherForecastAPIClient", client => + //{ + // client.BaseAddress = new Uri("https://localhost:6001/"); + // client.DefaultRequestHeaders.Clear(); + // client.DefaultRequestHeaders.Add(HeaderNames.Accept, "application/json"); + //}) + // .AddHttpMessageHandler(); // added for get user info services.AddHttpClient("IDPClient", client => diff --git a/src/Microser/Microser.BlazorAppClient/Services/WeatherForecastApiService.cs b/src/Microser/Microser.BlazorAppClient/Services/WeatherForecastApiService.cs index dccd252..6074cc5 100644 --- a/src/Microser/Microser.BlazorAppClient/Services/WeatherForecastApiService.cs +++ b/src/Microser/Microser.BlazorAppClient/Services/WeatherForecastApiService.cs @@ -16,7 +16,8 @@ public class WeatherForecastApiService : IWeatherForecastApiService public async Task GetAllAsync() { - var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient"); + // get from gateway + var httpClient = _httpClientFactory.CreateClient("APIGateway"); var request = new HttpRequestMessage( HttpMethod.Get, "/WeatherForecast"); @@ -24,6 +25,15 @@ public class WeatherForecastApiService : IWeatherForecastApiService .ConfigureAwait(false); response.EnsureSuccessStatusCode(); + //// directly from API + //var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient"); + //var request = new HttpRequestMessage( + // HttpMethod.Get, + // "/api/WeatherForecast"); + //var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead) + // .ConfigureAwait(false); + //response.EnsureSuccessStatusCode(); + //var content = await response.Content.ReadAsStringAsync(); //var weatherForecastList = JsonSerializer.Deserialize>(content); @@ -74,7 +84,7 @@ public class WeatherForecastApiService : IWeatherForecastApiService public async Task GetByIdAsync(int id) { - var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient"); + var httpClient = _httpClientFactory.CreateClient("APIGateway"); var request = new HttpRequestMessage( HttpMethod.Get, "/WeatherForecast/" + id); @@ -87,7 +97,7 @@ public class WeatherForecastApiService : IWeatherForecastApiService public async Task AddAsync(WeatherForecast weatherForecast) { - var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient"); + var httpClient = _httpClientFactory.CreateClient("APIGateway"); var request = new HttpRequestMessage( HttpMethod.Post, "/WeatherForecast") { @@ -104,7 +114,7 @@ public class WeatherForecastApiService : IWeatherForecastApiService public async Task DeleteByIdAsync(int id) { - var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient"); + var httpClient = _httpClientFactory.CreateClient("APIGateway"); var request = new HttpRequestMessage( HttpMethod.Delete, "/WeatherForecast/" + id.ToString()); @@ -124,7 +134,7 @@ public class WeatherForecastApiService : IWeatherForecastApiService public async Task UpdateAsync(int id, WeatherForecast weatherForecast) { - var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient"); + var httpClient = _httpClientFactory.CreateClient("APIGateway"); var request = new HttpRequestMessage( HttpMethod.Put, "/WeatherForecast/" + weatherForecast.Id.ToString()) { diff --git a/src/Microser/Microser.IdS/Config.cs b/src/Microser/Microser.IdS/Config.cs index 2f5f58c..2b3d0b8 100644 --- a/src/Microser/Microser.IdS/Config.cs +++ b/src/Microser/Microser.IdS/Config.cs @@ -56,6 +56,30 @@ namespace Microser.IdS Enabled = true }, + new Client + { + ClientId = "dotnet_api_swagger", + ClientName = "Dotnet Swagger UI Auth", + ClientSecrets = { + new Secret("76CD4B0FC93846F08395BF8994B86BC6".Sha256()) + }, + AllowedGrantTypes = GrantTypes.Code, + RequirePkce = true, + RequireClientSecret = true, + AllowedCorsOrigins = { "https://localhost:6001" }, + AllowedScopes = { + IdentityServerConstants.StandardScopes.OpenId, + IdentityServerConstants.StandardScopes.Profile, + IdentityServerConstants.StandardScopes.Address, + IdentityServerConstants.StandardScopes.Email, + "roles", + "scope1", + "microser_api_weather" + }, + RedirectUris = { "https://localhost:6001/swagger/oauth2-redirect.html" }, + Enabled = true + }, + // m2m client credentials flow client new Client { diff --git a/src/Microser/Microser.IdS/IdentityServer.db b/src/Microser/Microser.IdS/IdentityServer.db index e50be6b5d187a9f68b69a29a88e5bedf50f9786e..6d8555ce459d1de9074563d72f801c4a5883e52e 100644 GIT binary patch delta 1971 zcmaKsU2GIp6vyuuxZC|W+t#v_ZP>+FC<@(~*_mm#YSMM#0f@FxjS$df-JNcSY&*@& z6a*h=qwxX6MyuW@O8j`Ip-GETLrk;~A1XeWAWC>aK^~wgnrKY$?gz5f)?~9gd(Z#e z^S@_)=Z=mxj*d1?osT}C%aWXw)QS0M<+)SUr|(3sKwCACNn1nxW?{t6x~4TmR?`lz zA}OkrkV}G+`j2>^cQqjR6~2c#_z+%)BT#@|P@xrIx<2-Ea3VB*ppk`E(pH=XZUo;48~uj*mX9WjQG;$*~71pTC7AoZ@$H;a!o%3QgC?)({OLxAFSg!>UrJu4+l1yN!?6 zuFJBjC~9J60j~_P!w3!w!xs3*81|#+MsL$teVV@p#H`KfkhFv*cg%#yRIt9rudb+y zF7eOSl6b9LEX!&_bh2jAv)7d*nSUz z^9ZiN`RRJ;V|XY+7)s&+*By4c;_;%D%N7SL$L-Q3NhWKs2=XgH!|zTJ=4Wsc!43Ed zX5gea@d=288ACG8ir!had8EvLCTHah7N-2`b7WOB4U7GkQp{dIM}CZAHamZn=&?Eq zE`m!i39i_z)&+T798%{iJsX2r zvq=1Pr8?Ps-d<}s4)J?y$`YUFep!ApN(+7#Jci%{*c!YZJSJQp3HtUj55mYmttrNT zX{V`{n)hFx7kwYCD$n)z+d6;nGphYuK%yC?nB z&K)lfC-(FVS^Zmgy_DL$-OBA&pXeLNimvw=IooiT8t~EtX{x*zdyuzeG2OT4;4>~i z6Q_^Y;wuJ9+>`o@MA?)8^a6q(;DP}36Ij>6a1xW{0A*spOMK2OP!uz>XmJ7EZy4 zC{zG`x`(a6jEi6kzX;TmOfu{&=lg%b<(GQcCUKP0241@J7NY~*( zWw5>CoUWoW&X+HhBZupaSnSFod zxy-(p4^fBQW52HQw_4U)*`ZRFPg<;BH036OzuCS<*)xzpm+~ zX7Cz7qW_GAUhPv6{02L413rUy;Vqbj*T913LEY?(K2la;Wlp1NI~~U3^Ij&qIGM^V zWD0?vHp&|-uV>O;K9gEJo%aeP%IE|Z_%AZJdTpg=m_AKt%wK1Y=kkS9d2hzc76OMqV2oqA91HqFtg#4C;d_Mn+;^ZziRXxg$ zu}Yomr^o2K}17e9Bpb=9zJ!@!am4p*6D2>A-tL-G2(YSD;hjPPcb#T~~EA%v)M z7(q(8sT`IP!U`=8QSsg{cxA8&%{8t$+$?qz8~KO2rMBA-aZJoU#IH2NG&gQLhF-zIqL5&c8-Y)K)lWa zPW9}rp<7l-B^yf1vhHxp72iBdVoy3$(Ym9V+!iE4cq`m?&A50eLS|aww&ujS_*%ld znwsjarMqst7H6cCAna^AhCKv(o1NNSXzRxexnc)s??)SibxFj#D#V#j3L>rxS1haaS>EfDKT20#@$gwN^cM(bU~UXn#+5_1Ud zNr9ih?=tyo@D+Rj7vN2plPz8bGstil(|Qtt5W@qQHj?P5m+DFQYcHh!v5HGMHZ3(& T5c~~)Kt*c!5z3XfnVR?)AHG;H diff --git a/src/Microser/Microser.IdS/IdentityServer.db-shm b/src/Microser/Microser.IdS/IdentityServer.db-shm index fa691bae161321bea6eed417a502cd5e47e2f5da..36fca907f1270c004247ea806f2bbec0a572609a 100644 GIT binary patch delta 440 zcmb7;$u2_y7)H;%MG>ks*4S1}HEYd7)jZGhOsT16N_Xl7Bw}S}=K;Eqbma*owuB(j zSbBkm+t$L?mwfq?FDECz%O$#8;;H(*2!BMW0w|r*?UnlG{qz_ewrlg%`O@R$t?thI z?DH6I?*Ge6szChS??3sSMeG-6Cbw36vAADlR;3`gA7nmJ5CiA(Ya&FWLQMwQ6kw#9 zM%twRhM8i4Rkk>kz$Z}^N-P=*siB<_7TK2O4}~BLX!K!35l1pwawx(?EfzZHW0Yx@ zSYwByfJQGTns`#skxMb<)X_vI{fse#m34M;1i^3=B#=rbd6ZB=J;6lgwko&H+vdl*xYp Dd7^Bw delta 656 zcmb7=*;mYA7{@=qcbEvt5?PX^5GG4m!pPXNB%~xIJJ}7gGrv+qiZS-GE3!AOwirtk zLh%o{bLYlY$H`OU!maN)pYuHLd!F-o&im@R(sgC?{cfTuO3=W&UTTyO5D}SHm}#o5 z^!u8S_${}<)8Z_NP04Ef-+56rr^(y+PySvjs_dyDPAydPk?j}-55Y^AEkqUBHH#Ks zY*oL!3>u51X;215LUZHz8P_7LBfj_($Ph*lMmW=mWIjt+%?7ry8=XUBHAima&FSY-ca2WRk;aa=FGW9#G0tUQ*2`QMi=ZLtfgM9`s=# z!Hi@albFsNVp&cyn@M3GX&m7=XUO9^g*>E;XS||@&u&F4+T%k{`Vz!YMlqhr%wR4H zSixGhu!H>^=|up88O|6cFqK(EvyfG+XDhp~k-;%ea-Pc+aF=2p N@q#KoQZI@h#y=?Dr91!t diff --git a/src/Microser/Microser.IdS/IdentityServer.db-wal b/src/Microser/Microser.IdS/IdentityServer.db-wal index 0cd0c74e2ac08c41a4e49bce082778960b7ca7e7..703523a3eb5e741a865d21f362d8618635e3b687 100644 GIT binary patch literal 494432 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 Y00bZa0SG_<0uX?}O)GHu{q+(2FYQC2KmY&$ literal 869352 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 diff --git a/src/Microser/Microser.IdS/Migrations/ConfigurationDb.sql b/src/Microser/Microser.IdS/Migrations/ConfigurationDb.sql index f89a81a..b81c1e9 100644 --- a/src/Microser/Microser.IdS/Migrations/ConfigurationDb.sql +++ b/src/Microser/Microser.IdS/Migrations/ConfigurationDb.sql @@ -295,7 +295,7 @@ CREATE UNIQUE INDEX "IX_IdentityResourceProperties_IdentityResourceId_Key" ON "I CREATE UNIQUE INDEX "IX_IdentityResources_Name" ON "IdentityResources" ("Name"); INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion") -VALUES ('20240312131641_Configuration', '8.0.0'); +VALUES ('20240316101904_Configuration', '8.0.0'); COMMIT; diff --git a/src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240312131641_Configuration.Designer.cs b/src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240316101904_Configuration.Designer.cs similarity index 99% rename from src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240312131641_Configuration.Designer.cs rename to src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240316101904_Configuration.Designer.cs index 6d07ecd..8311102 100644 --- a/src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240312131641_Configuration.Designer.cs +++ b/src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240316101904_Configuration.Designer.cs @@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Microser.IdS.Migrations.ConfigurationDb { [DbContext(typeof(ConfigurationDbContext))] - [Migration("20240312131641_Configuration")] + [Migration("20240316101904_Configuration")] partial class Configuration { /// diff --git a/src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240312131641_Configuration.cs b/src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240316101904_Configuration.cs similarity index 99% rename from src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240312131641_Configuration.cs rename to src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240316101904_Configuration.cs index 491001b..b6c6de9 100644 --- a/src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240312131641_Configuration.cs +++ b/src/Microser/Microser.IdS/Migrations/ConfigurationDb/20240316101904_Configuration.cs @@ -718,4 +718,4 @@ namespace Microser.IdS.Migrations.ConfigurationDb name: "IdentityResources"); } } -} \ No newline at end of file +} diff --git a/src/Microser/Microser.IdS/Migrations/PersistedGrantDb.sql b/src/Microser/Microser.IdS/Migrations/PersistedGrantDb.sql index e0eede2..2e52da2 100644 --- a/src/Microser/Microser.IdS/Migrations/PersistedGrantDb.sql +++ b/src/Microser/Microser.IdS/Migrations/PersistedGrantDb.sql @@ -93,7 +93,7 @@ CREATE INDEX "IX_ServerSideSessions_SessionId" ON "ServerSideSessions" ("Session CREATE INDEX "IX_ServerSideSessions_SubjectId" ON "ServerSideSessions" ("SubjectId"); INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion") -VALUES ('20240312131625_Grants', '8.0.0'); +VALUES ('20240316101846_Grants', '8.0.0'); COMMIT; diff --git a/src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240312131625_Grants.Designer.cs b/src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240316101846_Grants.Designer.cs similarity index 99% rename from src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240312131625_Grants.Designer.cs rename to src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240316101846_Grants.Designer.cs index ef2b6bf..714bd66 100644 --- a/src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240312131625_Grants.Designer.cs +++ b/src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240316101846_Grants.Designer.cs @@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Microser.IdS.Migrations.PersistedGrantDb { [DbContext(typeof(PersistedGrantDbContext))] - [Migration("20240312131625_Grants")] + [Migration("20240316101846_Grants")] partial class Grants { /// diff --git a/src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240312131625_Grants.cs b/src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240316101846_Grants.cs similarity index 99% rename from src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240312131625_Grants.cs rename to src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240316101846_Grants.cs index b0d19c0..c770ff1 100644 --- a/src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240312131625_Grants.cs +++ b/src/Microser/Microser.IdS/Migrations/PersistedGrantDb/20240316101846_Grants.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using System; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable @@ -204,4 +205,4 @@ namespace Microser.IdS.Migrations.PersistedGrantDb name: "ServerSideSessions"); } } -} \ No newline at end of file +} diff --git a/src/Microser/Microser.sln b/src/Microser/Microser.sln index fd11074..b7d04e1 100644 --- a/src/Microser/Microser.sln +++ b/src/Microser/Microser.sln @@ -3,13 +3,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.8.34601.278 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microser.IdS", "Microser.IdS\Microser.IdS.csproj", "{28CA6FDC-65AA-47DA-BD42-F04B64D8E193}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microser.IdS", "Microser.IdS\Microser.IdS.csproj", "{28CA6FDC-65AA-47DA-BD42-F04B64D8E193}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microser.API.Weather", "Microser.API.Weather\Microser.API.Weather.csproj", "{DEDE691E-E9A2-4B39-A390-DC265B0EC164}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microser.API.Weather", "Microser.API.Weather\Microser.API.Weather.csproj", "{DEDE691E-E9A2-4B39-A390-DC265B0EC164}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microser.BlazorAppClient", "Microser.BlazorAppClient\Microser.BlazorAppClient.csproj", "{A96610DB-BA5D-47B6-B2AF-62D44EAEECD4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microser.BlazorAppClient", "Microser.BlazorAppClient\Microser.BlazorAppClient.csproj", "{A96610DB-BA5D-47B6-B2AF-62D44EAEECD4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microser.Core", "Microser.Core\Microser.Core.csproj", "{1805CA67-CDB9-45E5-A13A-4783DCBE5F51}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microser.Core", "Microser.Core\Microser.Core.csproj", "{1805CA67-CDB9-45E5-A13A-4783DCBE5F51}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microser.ApiGateway", "Microser.ApiGateway\Microser.ApiGateway.csproj", "{C9777697-B116-4A7D-84C3-DC73FEF03F57}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -33,6 +35,10 @@ Global {1805CA67-CDB9-45E5-A13A-4783DCBE5F51}.Debug|Any CPU.Build.0 = Debug|Any CPU {1805CA67-CDB9-45E5-A13A-4783DCBE5F51}.Release|Any CPU.ActiveCfg = Release|Any CPU {1805CA67-CDB9-45E5-A13A-4783DCBE5F51}.Release|Any CPU.Build.0 = Release|Any CPU + {C9777697-B116-4A7D-84C3-DC73FEF03F57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9777697-B116-4A7D-84C3-DC73FEF03F57}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9777697-B116-4A7D-84C3-DC73FEF03F57}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9777697-B116-4A7D-84C3-DC73FEF03F57}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE