Skip to content

Commit cdd87d3

Browse files
committed
Fix swagger-ui redirection uri to current one as of v.3.x;
Fix stored values for existing deployments
1 parent fc81bb9 commit cdd87d3

2 files changed

Lines changed: 33 additions & 9 deletions

File tree

src/Services/Identity/Identity.API/Configuration/Config.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public static IEnumerable<Client> GetClients(Dictionary<string,string> clientsUr
162162
AllowedGrantTypes = GrantTypes.Implicit,
163163
AllowAccessTokensViaBrowser = true,
164164

165-
RedirectUris = { $"{clientsUrl["LocationsApi"]}/swagger/o2c.html" },
165+
RedirectUris = { $"{clientsUrl["LocationsApi"]}/swagger/oauth2-redirect.html" },
166166
PostLogoutRedirectUris = { $"{clientsUrl["LocationsApi"]}/swagger/" },
167167

168168
AllowedScopes =
@@ -177,7 +177,7 @@ public static IEnumerable<Client> GetClients(Dictionary<string,string> clientsUr
177177
AllowedGrantTypes = GrantTypes.Implicit,
178178
AllowAccessTokensViaBrowser = true,
179179

180-
RedirectUris = { $"{clientsUrl["MarketingApi"]}/swagger/o2c.html" },
180+
RedirectUris = { $"{clientsUrl["MarketingApi"]}/swagger/oauth2-redirect.html" },
181181
PostLogoutRedirectUris = { $"{clientsUrl["MarketingApi"]}/swagger/" },
182182

183183
AllowedScopes =
@@ -192,7 +192,7 @@ public static IEnumerable<Client> GetClients(Dictionary<string,string> clientsUr
192192
AllowedGrantTypes = GrantTypes.Implicit,
193193
AllowAccessTokensViaBrowser = true,
194194

195-
RedirectUris = { $"{clientsUrl["BasketApi"]}/swagger/o2c.html" },
195+
RedirectUris = { $"{clientsUrl["BasketApi"]}/swagger/oauth2-redirect.html" },
196196
PostLogoutRedirectUris = { $"{clientsUrl["BasketApi"]}/swagger/" },
197197

198198
AllowedScopes =
@@ -207,7 +207,7 @@ public static IEnumerable<Client> GetClients(Dictionary<string,string> clientsUr
207207
AllowedGrantTypes = GrantTypes.Implicit,
208208
AllowAccessTokensViaBrowser = true,
209209

210-
RedirectUris = { $"{clientsUrl["OrderingApi"]}/swagger/o2c.html" },
210+
RedirectUris = { $"{clientsUrl["OrderingApi"]}/swagger/oauth2-redirect.html" },
211211
PostLogoutRedirectUris = { $"{clientsUrl["OrderingApi"]}/swagger/" },
212212

213213
AllowedScopes =
@@ -222,7 +222,7 @@ public static IEnumerable<Client> GetClients(Dictionary<string,string> clientsUr
222222
AllowedGrantTypes = GrantTypes.Implicit,
223223
AllowAccessTokensViaBrowser = true,
224224

225-
RedirectUris = { $"{clientsUrl["MobileShoppingAgg"]}/swagger/o2c.html" },
225+
RedirectUris = { $"{clientsUrl["MobileShoppingAgg"]}/swagger/oauth2-redirect.html" },
226226
PostLogoutRedirectUris = { $"{clientsUrl["MobileShoppingAgg"]}/swagger/" },
227227

228228
AllowedScopes =
@@ -237,7 +237,7 @@ public static IEnumerable<Client> GetClients(Dictionary<string,string> clientsUr
237237
AllowedGrantTypes = GrantTypes.Implicit,
238238
AllowAccessTokensViaBrowser = true,
239239

240-
RedirectUris = { $"{clientsUrl["WebShoppingAgg"]}/swagger/o2c.html" },
240+
RedirectUris = { $"{clientsUrl["WebShoppingAgg"]}/swagger/oauth2-redirect.html" },
241241
PostLogoutRedirectUris = { $"{clientsUrl["WebShoppingAgg"]}/swagger/" },
242242

243243
AllowedScopes =

src/Services/Identity/Identity.API/Data/ConfigurationDbContextSeed.cs

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
using IdentityServer4.EntityFramework.DbContexts;
2+
using IdentityServer4.EntityFramework.Entities;
23
using IdentityServer4.EntityFramework.Mappers;
4+
using Microsoft.EntityFrameworkCore;
35
using Microsoft.eShopOnContainers.Services.Identity.API.Configuration;
46
using Microsoft.Extensions.Configuration;
7+
using System;
58
using System.Collections.Generic;
69
using System.Linq;
710
using System.Threading.Tasks;
@@ -30,16 +33,37 @@ public async Task SeedAsync(ConfigurationDbContext context,IConfiguration config
3033
{
3134
foreach (var client in Config.GetClients(clientUrls))
3235
{
33-
await context.Clients.AddAsync(client.ToEntity());
36+
context.Clients.Add(client.ToEntity());
3437
}
3538
await context.SaveChangesAsync();
3639
}
40+
// Checking always for old redirects to fix existing deployments
41+
// to use new swagger-ui redirect uri as of v3.0.0
42+
// There should be no problem for new ones
43+
// ref: https://github.com/dotnet-architecture/eShopOnContainers/issues/586
44+
else
45+
{
46+
List<ClientRedirectUri> oldRedirects = (await context.Clients.Include(c => c.RedirectUris).ToListAsync())
47+
.SelectMany(c => c.RedirectUris)
48+
.Where(ru => ru.RedirectUri.EndsWith("/o2c.html"))
49+
.ToList();
50+
51+
if (oldRedirects.Any())
52+
{
53+
foreach (var ru in oldRedirects)
54+
{
55+
ru.RedirectUri = ru.RedirectUri.Replace("/o2c.html", "/oauth2-redirect.html");
56+
context.Update(ru.Client);
57+
}
58+
await context.SaveChangesAsync();
59+
}
60+
}
3761

3862
if (!context.IdentityResources.Any())
3963
{
4064
foreach (var resource in Config.GetResources())
4165
{
42-
await context.IdentityResources.AddAsync(resource.ToEntity());
66+
context.IdentityResources.Add(resource.ToEntity());
4367
}
4468
await context.SaveChangesAsync();
4569
}
@@ -48,7 +72,7 @@ public async Task SeedAsync(ConfigurationDbContext context,IConfiguration config
4872
{
4973
foreach (var api in Config.GetApis())
5074
{
51-
await context.ApiResources.AddAsync(api.ToEntity());
75+
context.ApiResources.Add(api.ToEntity());
5276
}
5377

5478
await context.SaveChangesAsync();

0 commit comments

Comments
 (0)