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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie kann ich HttpContext dazu bringen, den Benutzer mithilfe von OpenIDConnect zu authentifizieren?

by Guest » 03 Jan 2025, 17:37

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>

Top