Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25c6cadc authored by Fahim Salam Chowdhury's avatar Fahim Salam Chowdhury 👽 Committed by Fahim M. Choudhury
Browse files

fix: pass clientId on OIDC logout flow making logout happen properly even with missing idToken

For the latest Keycloak version, if the post_logout_redirect_uri is used, then we have to pass id_token_hint / client_id. But, id_token_hint cannot be initialized when refresh token happens / new login happens. In these cases, we want to pass client_id.
parent 53dfdb33
Loading
Loading
Loading
Loading
+14 −9
Original line number Original line Diff line number Diff line
@@ -67,15 +67,20 @@ class OpenIdEndSessionActivity : Activity() {
    ) {
    ) {
        authorizationService = AuthorizationService(applicationContext)
        authorizationService = AuthorizationService(applicationContext)


        val redirectUri =
        val identityProvider = IdentityProvider.retrieveByAccountType(this, accountType) ?: return
            IdentityProvider.retrieveByAccountType(this, accountType)?.logoutRedirectUri
        val redirectUri = identityProvider.logoutRedirectUri

        val clientId = identityProvider.clientId
        val intent = authorizationService!!.getEndSessionRequestIntent(

            EndSessionRequest.Builder(configuration)
        val endSessionRequestBuilder = EndSessionRequest.Builder(configuration)
                .setIdTokenHint(authState.idToken)

                .setPostLogoutRedirectUri(redirectUri)
        redirectUri?.let { endSessionRequestBuilder.setPostLogoutRedirectUri(it) }
                .build()
        authState.idToken?.let { endSessionRequestBuilder.setIdTokenHint(it) }
        )

        endSessionRequestBuilder.setAdditionalParameters(mapOf("client_id" to clientId))

        val intent =
            authorizationService?.getEndSessionRequestIntent(endSessionRequestBuilder.build())
                ?: return


        startActivity(intent)
        startActivity(intent)
    }
    }