Compare commits

..
6 Commits
2 changed files with 19 additions and 5 deletions
+16 -3
View File
@@ -53,6 +53,12 @@ public static class Api
public static IServiceCollection AddLiteCharmsWebSecurity(this IServiceCollection services, IConfiguration configuration) public static IServiceCollection AddLiteCharmsWebSecurity(this IServiceCollection services, IConfiguration configuration)
{ {
var keysFolder = Path.Combine("/app/shared-keys");
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(keysFolder))
.SetApplicationName("MidrandBooks");
var configSection = configuration.GetSection(nameof(LiteCharmsSettings)); var configSection = configuration.GetSection(nameof(LiteCharmsSettings));
var authOptions = new LiteCharmsSettings(); var authOptions = new LiteCharmsSettings();
@@ -77,6 +83,8 @@ public static class Api
options.SaveTokens = true; options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true; options.GetClaimsFromUserInfoEndpoint = true;
options.ForwardSignOut = CookieAuthenticationDefaults.AuthenticationScheme;
options.Scope.Clear(); options.Scope.Clear();
options.Scope.Add("openid"); options.Scope.Add("openid");
options.Scope.Add("profile"); options.Scope.Add("profile");
@@ -143,17 +151,22 @@ public static class Api
}); });
}); });
app.MapGet("/logout", async (HttpContext context) => app.MapGet("/logout", async (HttpContext context, string? redirectUri = null) =>
{ {
var idToken = await context.GetTokenAsync("id_token"); var idToken = await context.GetTokenAsync("id_token");
var authProperties = new AuthenticationProperties { RedirectUri = "/", }; if (string.IsNullOrWhiteSpace(redirectUri))
{
var host = context.Request.Host.ToUriComponent();
redirectUri = $"https://{host}/";
}
var authProperties = new AuthenticationProperties { RedirectUri = redirectUri, };
if (!string.IsNullOrEmpty(idToken)) if (!string.IsNullOrEmpty(idToken))
authProperties.Parameters.Add("id_token_hint", idToken); authProperties.Parameters.Add("id_token_hint", idToken);
await context.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme, authProperties); await context.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme, authProperties);
await context.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
}); });
return app; return app;
@@ -194,6 +194,7 @@
<!-- Shared Usings --> <!-- Shared Usings -->
<ItemGroup> <ItemGroup>
<Using Include="Microsoft.AspNetCore.DataProtection" />
<Using Include="Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage" /> <Using Include="Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage" />
<Using Include="System.Text.Json.Serialization" /> <Using Include="System.Text.Json.Serialization" />
<Using Include="System.Reflection" /> <Using Include="System.Reflection" />