Honor forwarded proto and scope cookie to base path to prevent new player cookies

This commit is contained in:
2026-01-28 20:08:08 +01:00
parent 4509c0f8a8
commit e15dd02228
2 changed files with 12 additions and 2 deletions

View File

@@ -10,13 +10,17 @@ public static class PlayerIdentityExtensions
{ {
app.Use(async (ctx, next) => app.Use(async (ctx, next) =>
{ {
var pathBase = ctx.Request.PathBase.HasValue ? ctx.Request.PathBase.Value : "/";
var isHttps = string.Equals(ctx.Request.Scheme, "https", StringComparison.OrdinalIgnoreCase);
var cookieOptions = new CookieOptions var cookieOptions = new CookieOptions
{ {
HttpOnly = true, HttpOnly = true,
SameSite = SameSiteMode.Strict, SameSite = SameSiteMode.Strict,
Secure = !app.ApplicationServices.GetRequiredService<IWebHostEnvironment>().IsDevelopment(), Secure = isHttps,
IsEssential = true, IsEssential = true,
Expires = DateTimeOffset.UtcNow.AddYears(1) Expires = DateTimeOffset.UtcNow.AddYears(1),
Path = pathBase
}; };
Guid playerId; Guid playerId;

View File

@@ -1,6 +1,7 @@
using GameList.Data; using GameList.Data;
using GameList.Endpoints; using GameList.Endpoints;
using GameList.Infrastructure; using GameList.Infrastructure;
using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.Data.Sqlite; using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
@@ -38,6 +39,11 @@ builder.Services.ConfigureHttpJsonOptions(options =>
var app = builder.Build(); var app = builder.Build();
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto | ForwardedHeaders.XForwardedHost
});
var basePath = builder.Configuration["BasePath"]; var basePath = builder.Configuration["BasePath"];
if (!string.IsNullOrWhiteSpace(basePath)) if (!string.IsNullOrWhiteSpace(basePath))
{ {