Ich habe kürzlich an einem PHP-basierten Projekt gearbeitet und darin das Keycloak-SSO-Anmeldesystem implementiert. Es gibt 3 Apps (sagen wir App 1, 2 und 3), die SSO verwenden. App 1 implementierte auch die Rückkanal-Abmeldung. Das Problem besteht darin, dass, wenn App 1 derzeit angemeldet ist und ich mich von App 2 oder App 3 per SSO abmelde, App 1 immer noch angemeldet ist, auch wenn die Sitzung auf Keycloak bereits bereinigt wurde. Ich habe versucht, das Cookie (das die beiden Werte meeto und phpsessid hat) zu löschen, es zu setzen und über das Backend zu löschen, aber es hat nicht geklappt.
Dies ist meine Abmeldeeinstellung
Dies ist meine Backchannel-Abmeldung und mein Lösch-Cookie Funktion
Ich habe kürzlich an einem PHP-basierten Projekt gearbeitet und darin das Keycloak-SSO-Anmeldesystem implementiert. Es gibt 3 Apps (sagen wir App 1, 2 und 3), die SSO verwenden. App 1 implementierte auch die Rückkanal-Abmeldung. Das [url=viewtopic.php?t=26065]Problem[/url] besteht darin, dass, wenn App 1 derzeit angemeldet ist und ich mich von App 2 oder App 3 per SSO abmelde, App 1 immer noch angemeldet ist, auch wenn die Sitzung auf Keycloak bereits bereinigt wurde. Ich habe versucht, das Cookie (das die beiden Werte meeto und phpsessid hat) zu löschen, es zu setzen und über das Backend zu löschen, aber es hat nicht geklappt. Dies ist meine Abmeldeeinstellung [img]https://i.sstatic.net/lGkVBXQ9.png[/img]
Dies ist meine Backchannel-Abmeldung und mein Lösch-Cookie Funktion [code]function keycloak_backchannel_logout() { // log_message('d', '=== BACKCHANNEL LOGOUT CALLED ==='); log_message('debug', '=== KEYCLOAK BACKCHANNEL LOGOUT CALLED ===');
// Only accessible if Keycloak is enabled if (!$this->config->item('keycloak_enabled')) { show_404(); }
log_message('debug', '=== CONDITION 1 PASS ===');
// Only accept POST requests if ($_SERVER['REQUEST_METHOD'] !== 'POST') { show_404(); }
log_message('debug', '=== CONDITION 2 PASS ===');
// Enhanced logging: Log IP address and request details $client_ip = $this->input->ip_address(); $user_agent = $this->input->user_agent(); $request_time = date('Y-m-d H:i:s');
log_message('debug', '=== BACKCHANNEL LOGOUT PROCESS START ==='); log_message('debug', 'Backchannel logout called by Keycloak from IP: ' . $client_ip); log_message('debug', 'Request time: ' . $request_time); log_message('debug', 'User-Agent: ' . $user_agent);
// Log all POST data for debugging $post_data = $this->input->post(); log_message('debug', 'POST data received: ' . json_encode($post_data));
try { // Get logout_token from POST data $logout_token = $this->input->post('logout_token');
if (!$logout_token) { log_message('error', 'Backchannel logout: No logout_token provided'); log_message('error', 'Available POST keys: ' . implode(', ', array_keys($post_data))); $this->output->set_status_header(400); $this->output->set_output('Bad Request: Missing logout_token'); return; }
// Clear current session first (like frontend logout) $this->session->sess_destroy(); log_message('debug', 'Backchannel logout: Current session destroyed');
// Clear cookies like frontend logout does $this->clear_keycloak_cookies(); log_message('debug', 'Backchannel logout: Keycloak cookies cleared');
// Also destroy session file by session_id (additional cleanup) $this->destroy_session_by_id($session_id);
// List of cookies to clear (based on frontend logout behavior) $cookies_to_clear = [ 'keycloak_id_token', 'keycloak_id_token_exp', 'keycloak_access_token', 'keycloak_refresh_token', 'keycloak_state', 'keycloak_code_verifier', 'keycloak_nonce', 'meeto', 'PHPSESSID', 'user_data', // This might be the key! 'ci_session' // CodeIgniter session cookie ];
foreach ($cookie_configs as $config) { // Set cookie to expire in the past setcookie($cookie_name, '', time() - 3600, $config['path'], $config['domain'], false, true);
Ich habe also eine Spring-Boot-App, die auf zwei Diensten läuft, einer ist ein Gateway mit Spring-Cloud-Gateway, Webflux und Spring-Session und der andere ist ein Ressourcenserver. Sie werden mit...
Gibt es einen kostenlosen Single-Sign-Mechanismus für Android, der problemlos mit Nicht-Webanwendungen funktioniert? Sagen wir, etwas in der Art von...
Wo speichert Andorid Apps Dateien in Google Drive, z. B. Notizen Sicherung von einem Android -Apps, ich möchte auf diese Dateien zugreifen? Ich JSUT möchte die Dateien im Google -Laufwerk suchen.
Ich habe ein Problem mit der Integration meiner Entra in meine Spring -Boot -Anwendung für SSO mit SAML. Meine Umgebung ist Spring Boot 3.4.3, Java 17. Ich habe einen Benutzer auf Entra erstellt, um...
Ich erstelle eine Web -App in Vue und implementiere sowohl die Apple- als auch die Google -Schaltfläche. Das Problem, das ich habe, ist, dass ich möchte, dass die Textgröße gleich ist, aber ich kann...