diff --git a/keycloak.js b/keycloak.js index 101233f9..3f337b1a 100644 --- a/keycloak.js +++ b/keycloak.js @@ -403,11 +403,14 @@ Keycloak.prototype.loginUrl = function (uuid, redirectUrl) { Keycloak.prototype.logoutUrl = function (redirectUrl, idTokenHint) { const url = new URL(this.config.realmUrl + '/protocol/openid-connect/logout') - if (redirectUrl && idTokenHint) { - url.searchParams.set('id_token_hint', idTokenHint) + if (redirectUrl) { url.searchParams.set('post_logout_redirect_uri', redirectUrl) } + if (idTokenHint) { + url.searchParams.set('id_token_hint', idTokenHint) + } + return url.toString() } diff --git a/test/unit/keycloak-object-test.js b/test/unit/keycloak-object-test.js index eb5b3cc2..01bdef49 100644 --- a/test/unit/keycloak-object-test.js +++ b/test/unit/keycloak-object-test.js @@ -67,6 +67,8 @@ test('Should verify if login URL has the default scope value.', t => { test('Should verify if logout URL has the configured realm.', t => { t.equal(kc.logoutUrl().indexOf(kc.config.realm) > 0, true) + t.equal(kc.logoutUrl('redirectURI').indexOf('redirectURI') >0, true) + t.equal(kc.logoutUrl('redirectURI', 'hint').indexOf('hint') >0, true) t.end() })