Compare commits

..

11 Commits

Author SHA1 Message Date
khwezi 0ad410c64e Merge pull request 'payments' (#91) from payments into master
Reviewed-on: #91
2026-06-07 13:57:15 +02:00
Khwezi Mngoma e193aa7c1c Adopted standard logout flow
continuous-integration/drone/pr Build is running
2026-06-07 13:56:49 +02:00
Khwezi Mngoma 840d4568e2 Refactored logout process 2026-06-07 13:55:20 +02:00
khwezi 6e580ecdf6 Merge pull request 'Added token hint to logout event' (#90) from payments into master
Reviewed-on: #90
2026-06-07 13:12:05 +02:00
Khwezi Mngoma 60095057b7 Added token hint to logout event
continuous-integration/drone/pr Build is passing
2026-06-07 13:11:33 +02:00
khwezi 4c194c1141 Merge pull request 'Added AddSecurityEndpoints login endpoint' (#89) from payments into master
Reviewed-on: #89
2026-06-07 12:00:50 +02:00
Khwezi Mngoma b41136e2c7 Added AddSecurityEndpoints login endpoint
continuous-integration/drone/pr Build is passing
2026-06-07 12:00:07 +02:00
khwezi 41eb4daeb4 Merge pull request 'Refactored AddSecurityEndpoints' (#88) from payments into master
Reviewed-on: #88
2026-06-07 11:09:02 +02:00
Khwezi Mngoma c423f04b42 Refactored AddSecurityEndpoints
continuous-integration/drone/pr Build is passing
2026-06-07 11:08:05 +02:00
khwezi 7fe5f7aef3 Merge pull request 'Refactored client auth method' (#87) from payments into master
Reviewed-on: #87
2026-06-07 10:33:33 +02:00
Khwezi Mngoma a567fc7cd7 Refactored client auth method
continuous-integration/drone/pr Build is passing
2026-06-07 10:30:56 +02:00
+24 -15
View File
@@ -10,7 +10,7 @@ public static class Api
public const string Books = nameof(Books);
public const string Payments = nameof(Payments);
public static IServiceCollection AddLiteCharmsUiSecurity(this IServiceCollection services, IConfiguration configuration)
public static IServiceCollection AddLiteCharmsWebSecurity(this IServiceCollection services, IConfiguration configuration)
{
var configSection = configuration.GetSection(nameof(LiteCharmsSettings));
@@ -27,13 +27,12 @@ public static class Api
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.Authority = authOptions.Authority;
options.Authority = authOptions.Authority;
options.ClientId = authOptions.ClientId;
options.ClientSecret = authOptions.ClientSecret;
options.SignedOutCallbackPath = "/signout-callback-oidc";
options.ResponseType = "code";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
@@ -42,15 +41,27 @@ public static class Api
options.Scope.Add("profile");
options.Scope.Add("email");
options.CorrelationCookie.SecurePolicy = CookieSecurePolicy.Always;
options.CorrelationCookie.SameSite = SameSiteMode.None;
options.CorrelationCookie.HttpOnly = true;
options.Events = new OpenIdConnectEvents
{
OnRedirectToIdentityProviderForSignOut = context =>
{
var idToken = context.ProtocolMessage.IdTokenHint;
options.NonceCookie.SecurePolicy = CookieSecurePolicy.Always;
options.NonceCookie.SameSite = SameSiteMode.None;
options.NonceCookie.HttpOnly = true;
if (string.IsNullOrEmpty(idToken))
{
var tokens = context.Properties.GetTokens();
var idTokenItem = tokens.FirstOrDefault(t => string.Equals(t.Name, "id_token", StringComparison.Ordinal));
if (idTokenItem != null) context.ProtocolMessage.IdTokenHint = idTokenItem.Value;
}
return Task.CompletedTask;
},
};
});
services.AddCascadingAuthenticationState();
return services;
}
@@ -87,19 +98,17 @@ public static class Api
{
await context.ChallengeAsync(OpenIdConnectDefaults.AuthenticationScheme, new AuthenticationProperties
{
RedirectUri = redirectUri,
RedirectUri = redirectUri,
});
});
app.MapGet("/logout", async (HttpContext context, IHttpClientFactory httpClientFactory, IOptions<LiteCharmsSettings> settings) =>
app.MapGet("/logout", async (HttpContext context) =>
{
await context.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
string currentBaseUrl = $"https://{context.Request.Host}{context.Request.PathBase}/";
await context.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme, new AuthenticationProperties
{
RedirectUri = currentBaseUrl
RedirectUri = "/",
});
});