Keycloak unterstützte ASP.net-App-Schleifen nach der AuthentifizierungC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Keycloak unterstützte ASP.net-App-Schleifen nach der Authentifizierung

Post by Anonymous »

Mein Programm unterstützt seit kurzem Keycloak und ich habe mein Bestes getan, um es zu erlernen und gleichzeitig meine anderen Aufgaben zu verwalten. Kürzlich bin ich jedoch auf ein Problem gestoßen, das ich scheinbar einfach nicht lösen kann.
Einrichtung: Wir haben eine ASP.NET-Anwendung, die auf der IIS-Instanz einer virtuellen Maschine gehostet wird. Bindungen sind einfach, ohne Hostnamen und verwenden http und Port 80.
Problem: Wenn Keycloak nicht erzwungen wird, kann die Webanwendung unter localhost oder http://VirtualMachineHostname aufgerufen werden. Wenn Keycloak jedoch nach der Authentifizierung (Anmeldebildschirm) erzwungen wird, tritt das System in eine Schleife von Aufrufen von http://VirtualMachineHostname/signin-oidc und ein http://KeycloakServer.net:29480/realms/ ... VirtualMac hineHostname%2Fsignin-oidc&response_type=code%20id_token%20token&scope=openid%20profile&response_mode=form_post&nonce=
Ich verstehe diesen Bereich nicht gut genug, um das Problem zu identifizieren, und ich hoffe, dass jemand, der sich besser mit ASP.NET und Keycloak auskennt, helfen kann. Es sieht so aus, als ob das Token abgerufen wird, aber bei der Weiterleitung kommt es zu einer Schleife. Mein „Bauchgefühl“ sagt mir, dass das Problem darin liegt, dass versucht wird, zurück zu „VirtualMachineHostname“ umzuleiten, aber stattdessen auf „localhost“ stößt, die Weiterleitungs-URL jedoch wie erwartet „VirtualMachineHostname“ anzeigt. Wir konfigurieren SignIn auch nicht explizit, sodass dies über die Keycloak-Benutzeroberfläche abgewickelt wird, im Gegensatz zu Logout, das über einen Controller und zugehörige Methoden verfügt, um Anmeldeinformationen zu löschen und nach der Abmeldung umzuleiten.
Keycloak-Einstellungen Unten ist der Hauptcodeblock für die Keycloak-Authentifizierung

Code: Select all

services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})

.AddCookie(opt =>
{
opt.ExpireTimeSpan = TimeSpan.FromMinutes(Convert.ToInt32(Configuration["Keycloak:cookie-timeout"]));
})
.AddOpenIdConnect(options =>
{
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.Authority = $"{Configuration["Keycloak:auth-server-url"]}realms/{Configuration["Keycloak:realm"]}";
options.ClientId = Configuration["Keycloak:resource"];
options.ResponseType = OpenIdConnectResponseType.CodeIdTokenToken;
options.UsePkce = true;
options.Scope.Add("profile");
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters() { RoleClaimType = "roles" };

options.SignedOutCallbackPath = "/signout-callback-oidc";
});

var requireAuthPolicy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
services.AddAuthorizationBuilder().SetFallbackPolicy(requireAuthPolicy);

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post