Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
21788c66a3 | ||
|
|
dfaa62ea75 | ||
|
|
54ef7a6e5f | ||
|
|
0ec7ef4861 | ||
|
|
6594e0aecd | ||
|
|
088e64f28f |
@@ -18,7 +18,7 @@ public static class Api
|
|||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IServiceCollection AddSecurityApiSdk(this IServiceCollection services, IConfiguration configuration)
|
public static IServiceCollection AddSecurityApiSdk(this IServiceCollection services, IConfiguration configuration)
|
||||||
{
|
{
|
||||||
var configSection = configuration.GetSection(nameof(LiteCharmsClientSettings));
|
var configSection = configuration.GetSection(nameof(LiteCharmsClientSettings));
|
||||||
@@ -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}/";
|
||||||
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(idToken))
|
var authProperties = new AuthenticationProperties { RedirectUri = redirectUri, };
|
||||||
|
|
||||||
|
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" />
|
||||||
|
|||||||
Reference in New Issue
Block a user