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

Commit 893ced03 authored by Fahim M. Choudhury's avatar Fahim M. Choudhury
Browse files

Merge branch '4162-fix_when_id_token_missing_add_client_id_on_oidc_logout' into 'main'

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

See merge request !156
parents 53dfdb33 25c6cadc
Loading
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -67,15 +67,20 @@ class OpenIdEndSessionActivity : Activity() {
    ) {
        authorizationService = AuthorizationService(applicationContext)

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

        val intent = authorizationService!!.getEndSessionRequestIntent(
            EndSessionRequest.Builder(configuration)
                .setIdTokenHint(authState.idToken)
                .setPostLogoutRedirectUri(redirectUri)
                .build()
        )
        val identityProvider = IdentityProvider.retrieveByAccountType(this, accountType) ?: return
        val redirectUri = identityProvider.logoutRedirectUri
        val clientId = identityProvider.clientId

        val endSessionRequestBuilder = EndSessionRequest.Builder(configuration)

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

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

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

        startActivity(intent)
    }