Skip to content

Commit 458f32b

Browse files
Merge pull request #198 from SujanSanjula96/fix-session-data-removal
Remove auth session data in backchannel logout
2 parents 92a71c7 + 724924b commit 458f32b

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

components/org.wso2.carbon.identity.application.authenticator.oidc/src/main/java/org/wso2/carbon/identity/application/authenticator/oidc/logout/idpinit/processor/FederatedIdpInitLogoutProcessor.java

+7
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import org.wso2.carbon.idp.mgt.IdentityProviderManager;
6060

6161
import java.text.ParseException;
62+
import java.util.Collections;
6263
import java.util.Date;
6364
import java.util.HashMap;
6465
import java.util.List;
@@ -190,6 +191,7 @@ protected LogoutResponse.LogoutResponseBuilder logoutUsingSid(String sid)
190191
OpenIDConnectAuthenticatorDataHolder.getInstance().getServerSessionManagementService();
191192
serverSessionManagementService.removeSession(sessionId);
192193
removeFederatedIDPSessionMapping(sessionId);
194+
removeTerminatedSessionRecords(sessionId);
193195
if (log.isDebugEnabled()) {
194196
log.debug("Session terminated for session Id: " + sessionId);
195197
}
@@ -727,4 +729,9 @@ private void removeFederatedIDPSessionMapping(String sessionID) throws LogoutSer
727729
throw new LogoutServerException("Exception occurred while removing federated IDP session mapping.");
728730
}
729731
}
732+
733+
private void removeTerminatedSessionRecords(String sessionId) {
734+
735+
UserSessionStore.getInstance().removeTerminatedSessionRecords(Collections.singletonList(sessionId));
736+
}
730737
}

components/org.wso2.carbon.identity.application.authenticator.oidc/src/test/java/org/wso2/carbon/identity/application/authenticator/oidc/logout/idpinit/processor/FederatedIdpInitLogoutProcessorTest.java

+10
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,12 @@
7373
import javax.xml.stream.XMLInputFactory;
7474

7575
import static org.mockito.ArgumentMatchers.anyBoolean;
76+
import static org.mockito.ArgumentMatchers.anyList;
7677
import static org.mockito.ArgumentMatchers.anyString;
78+
import static org.mockito.Mockito.doNothing;
7779
import static org.mockito.Mockito.mock;
80+
import static org.mockito.Mockito.times;
81+
import static org.mockito.Mockito.verify;
7882
import static org.powermock.api.mockito.PowerMockito.mockStatic;
7983
import static org.powermock.api.mockito.PowerMockito.when;
8084
import static org.testng.Assert.assertEquals;
@@ -501,11 +505,17 @@ public void testOidcFederatedLogout() throws Exception {
501505
// Mock removeSession method.
502506
when(serverSessionManagementService.removeSession(SESSION_CONTEXT_KEY)).thenReturn(true);
503507

508+
mockStatic(UserSessionStore.class);
509+
UserSessionStore userSessionStore = mock(UserSessionStore.class);
510+
when(UserSessionStore.getInstance()).thenReturn(userSessionStore);
511+
doNothing().when(userSessionStore).removeTerminatedSessionRecords(anyList());
512+
504513
// Mock tenantID.
505514
mockStatic(IdentityTenantUtil.class);
506515
when(IdentityTenantUtil.getTenantId(anyString())).thenReturn(-1234);
507516

508517
assertNotNull(logoutProcessor.handleOIDCFederatedLogoutRequest(mockLogoutRequest));
518+
verify(userSessionStore, times(1)).removeTerminatedSessionRecords(anyList());
509519
}
510520

511521
@Test

0 commit comments

Comments
 (0)