From aa0cd8df064b0d3703af27e228d0cb334e862ce9 Mon Sep 17 00:00:00 2001 From: Sergey Malinin Date: Wed, 30 May 2018 18:44:29 +1000 Subject: [PATCH 1/9] Fix issue with OIDC Logout, the browser cookie was not updated on logout. --- src/api.js | 2 +- src/webid-oidc.js | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/api.js b/src/api.js index a2825d8..c511f77 100644 --- a/src/api.js +++ b/src/api.js @@ -94,7 +94,7 @@ export async function logout( switch (session.authType) { case 'WebID-OIDC': try { - await WebIdOidc.logout(storage) + await WebIdOidc.logout(storage, session.idp) } catch (err) { console.warn('Error logging out:') console.error(err) diff --git a/src/webid-oidc.js b/src/webid-oidc.js index 06740d5..effaf14 100644 --- a/src/webid-oidc.js +++ b/src/webid-oidc.js @@ -61,13 +61,18 @@ export const currentSession = async ( } } -export const logout = (storage: AsyncStorage): Promise => +export const logout = (storage: AsyncStorage, idp: string): Promise => getStoredRp(storage) .then(rp => (rp ? rp.logout() : undefined)) .catch(err => { console.warn('Error logging out of the WebID-OIDC session') console.error(err) }) + .then(x => (fetch(idp + '/logout', { method: 'GET', credentials: 'include'}))) + .catch(err => { + console.warn('Error logging out of the WebID-OIDC session') + console.error(err) + }) export const getRegisteredRp = ( idp: string, From 1ce4888d8c56d9ad0fa9bc121278e17f7ee29080 Mon Sep 17 00:00:00 2001 From: Sergey Malinin Date: Thu, 31 May 2018 16:28:43 +1000 Subject: [PATCH 2/9] Update for OIDC Logout fix --- src/webid-oidc.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/webid-oidc.js b/src/webid-oidc.js index effaf14..1e0b681 100644 --- a/src/webid-oidc.js +++ b/src/webid-oidc.js @@ -68,7 +68,9 @@ export const logout = (storage: AsyncStorage, idp: string): Promise => console.warn('Error logging out of the WebID-OIDC session') console.error(err) }) - .then(x => (fetch(idp + '/logout', { method: 'GET', credentials: 'include'}))) + .then(x => { + fetch(idp + '/logout', { method: 'GET', credentials: 'include'}) + }) .catch(err => { console.warn('Error logging out of the WebID-OIDC session') console.error(err) From 5522f0bb99bbb8463159fe73228e2d47fd72bd64 Mon Sep 17 00:00:00 2001 From: Carl Blakeley Date: Fri, 1 Jun 2018 11:34:18 +0100 Subject: [PATCH 3/9] Package @trust/oidc-rp is now installed from an OpenLink git repository --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4dc34b1..15c65ea 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "prepare": "npm run build" }, "dependencies": { - "@trust/oidc-rp": "^0.4.3", + "@trust/oidc-rp": "git+https://github.com/OpenLinkSoftware/oidc-rp.git#openlink", "auth-header": "^0.3.1", "commander": "^2.11.0", "isomorphic-fetch": "^2.2.1", From 5775ccf99a5e3d0073bd7cd4ee5560bc0229f5ef Mon Sep 17 00:00:00 2001 From: Carl Blakeley Date: Thu, 7 Jun 2018 12:22:04 +0100 Subject: [PATCH 4/9] Revert "Package @trust/oidc-rp is now installed from an OpenLink git repository" This reverts commit 5522f0bb99bbb8463159fe73228e2d47fd72bd64. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 15c65ea..4dc34b1 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "prepare": "npm run build" }, "dependencies": { - "@trust/oidc-rp": "git+https://github.com/OpenLinkSoftware/oidc-rp.git#openlink", + "@trust/oidc-rp": "^0.4.3", "auth-header": "^0.3.1", "commander": "^2.11.0", "isomorphic-fetch": "^2.2.1", From e757510da761f40ff4a8c51753752ed05b37ffd4 Mon Sep 17 00:00:00 2001 From: Sergey Malinin Date: Fri, 10 Aug 2018 19:45:17 +1000 Subject: [PATCH 5/9] Replace HTTP GET with POST --- src/webid-oidc.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/webid-oidc.js b/src/webid-oidc.js index 1e0b681..214725b 100644 --- a/src/webid-oidc.js +++ b/src/webid-oidc.js @@ -64,13 +64,9 @@ export const currentSession = async ( export const logout = (storage: AsyncStorage, idp: string): Promise => getStoredRp(storage) .then(rp => (rp ? rp.logout() : undefined)) - .catch(err => { - console.warn('Error logging out of the WebID-OIDC session') - console.error(err) - }) .then(x => { - fetch(idp + '/logout', { method: 'GET', credentials: 'include'}) - }) + fetch(idp + '/logout', { method: 'POST', credentials: 'include'}) + }) .catch(err => { console.warn('Error logging out of the WebID-OIDC session') console.error(err) From c964a4eae40beda3ad9a0d63363af1ef2f7e9754 Mon Sep 17 00:00:00 2001 From: Sergey Malinin Date: Fri, 10 Aug 2018 21:30:01 +1000 Subject: [PATCH 6/9] Fix merge conflict --- src/api.js | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/api.js b/src/api.js index c511f77..2f6a258 100644 --- a/src/api.js +++ b/src/api.js @@ -88,21 +88,12 @@ export async function logout( storage: AsyncStorage = defaultStorage() ): Promise { const session = await getSession(storage) - if (!session) { - return - } - switch (session.authType) { - case 'WebID-OIDC': - try { - await WebIdOidc.logout(storage, session.idp) - } catch (err) { - console.warn('Error logging out:') - console.error(err) - } - break - case 'WebID-TLS': - default: - break - } - return clearSession(storage) + if (session) { + try { + await WebIdOidc.logout(storage, session.idp) + } catch (err) { + console.warn('Error logging out:') + console.error(err) + } + await clearSession(storage) } From 55a103ac049494486209b33deaaac3b027e3bea0 Mon Sep 17 00:00:00 2001 From: Sergey Malinin Date: Fri, 10 Aug 2018 21:32:17 +1000 Subject: [PATCH 7/9] Add missed curly braced --- src/api.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/api.js b/src/api.js index 2f6a258..c24fe41 100644 --- a/src/api.js +++ b/src/api.js @@ -96,4 +96,5 @@ export async function logout( console.error(err) } await clearSession(storage) + } } From c7272bdaa03451db456e15448ed40a6e4c8aa5f8 Mon Sep 17 00:00:00 2001 From: Ruben Verborgh Date: Sat, 11 Aug 2018 14:12:52 +0200 Subject: [PATCH 8/9] Fix spacing. --- src/webid-oidc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webid-oidc.js b/src/webid-oidc.js index 8b9d493..0a5bfd1 100644 --- a/src/webid-oidc.js +++ b/src/webid-oidc.js @@ -64,7 +64,7 @@ export const logout = (storage: AsyncStorage, idp: string): Promise => getStoredRp(storage) .then(rp => (rp ? rp.logout() : undefined)) .then(x => { - fetch(idp + '/logout', { method: 'POST', credentials: 'include'}) + fetch(idp + '/logout', { method: 'POST', credentials: 'include' }) }) .catch(err => { console.warn('Error logging out of the WebID-OIDC session') From abde4b43d6fa92a6d052f88e5496dcc2cee3549b Mon Sep 17 00:00:00 2001 From: Ruben Verborgh Date: Sat, 11 Aug 2018 14:17:57 +0200 Subject: [PATCH 9/9] Rewrite logout function in async style. --- src/webid-oidc.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/webid-oidc.js b/src/webid-oidc.js index 0a5bfd1..8f2719a 100644 --- a/src/webid-oidc.js +++ b/src/webid-oidc.js @@ -60,16 +60,21 @@ export const currentSession = async ( } } -export const logout = (storage: AsyncStorage, idp: string): Promise => - getStoredRp(storage) - .then(rp => (rp ? rp.logout() : undefined)) - .then(x => { +export const logout = async ( + storage: AsyncStorage, + idp: string +): Promise => { + const rp = await getStoredRp(storage) + if (rp) { + try { + rp.logout() fetch(idp + '/logout', { method: 'POST', credentials: 'include' }) - }) - .catch(err => { + } catch (err) { console.warn('Error logging out of the WebID-OIDC session') console.error(err) - }) + } + } +} export const getRegisteredRp = ( idp: string,