Page 1 of 1

Wie kann ich HttpContext dazu bringen, den Benutzer mithilfe von OpenIDConnect zu authentifizieren?

Posted: 03 Jan 2025, 17:37
by Guest
Zuvor wurde eine Anwendung entwickelt, die über OpenIdConnect eine Authentifizierung bei Microsoft-Identitätsanbietern ermöglichte:

Code: Select all

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(options =>
{
options.Instance = "https://login.microsoftonline.com/";
options.TenantId = TenantId;
options.ClientId = builder.Configuration.GetValue("AzureADClientID");
options.ClientSecret = builder.Configuration.GetValue("AzureADSecret");
options.CallbackPath = "/signin-oidc";
options.SaveTokens = true; // Ensure tokens are saved

});

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseMiddleware();
Jetzt möchte ich diesem Projekt eine benutzerdefinierte Middleware-Ebene hinzufügen. Es sollte HttPContext verwenden und seine Informationen extrahieren, um die benutzerdefinierte MiddleWare-Logik auszuführen. Ich habe diese benutzerdefinierte Middleware hinzugefügt, um sie in meine Datei „Program.cs“ aufzunehmen. Hier beginnt die Ausführung der benutzerdefinierten Middleware:

Code: Select all

        [Authorize]
public async Task Invoke(HttpContext context)
{

bool authValid = false;
authValid = await CheckIfUserAPIAuth(context);
// bool authValid = true;
if (authValid)
{
await _next.Invoke(context);
}
else
{
context.Response.StatusCode = 401; //Unauthorized
return;
}
}
Allerdings wird das Feld context.User auf IsAuthenticated = false gesetzt, wenn dies aufgerufen wird. Idealerweise möchte ich, dass die Benutzerinformationen ihre Systeminformationen sind, ich kann aber letztendlich auch die AzureAD-Informationen, wie z. B. AD-GUID, verwenden, um mit meiner benutzerdefinierten Logik fortzufahren. Der aktuelle Kontext sieht jedoch so aus:
Image
< /P>