backport Fixed Oauth redirect not working on Android Chrome (#24715)

Co-authored-by: prajnamohan1 <36304276+prajnamohan1@users.noreply.github.com>
This commit is contained in:
hc-github-team-secure-vault-core
2024-01-08 17:29:38 -05:00
committed by GitHub
parent 3228bdaa91
commit 6130bbaea6
4 changed files with 18 additions and 10 deletions

3
changelog/18513.txt Normal file
View File

@@ -0,0 +1,3 @@
```release-note:improvement
ui: latest version of chrome does not automatically redirect back to the app after authentication unless triggered by the user, hence added a link to redirect back to the app.
```

View File

@@ -94,17 +94,17 @@ export default class VaultClusterOidcProviderRoute extends Route {
_handleSuccess(response, baseUrl, state) { _handleSuccess(response, baseUrl, state) {
const { code } = response; const { code } = response;
const redirectUrl = this._buildUrl(baseUrl, { code, state }); const redirectUrl = this._buildUrl(baseUrl, { code, state });
if (Ember.testing) { if (!Ember.testing) {
return { redirectUrl }; this.win.location.replace(redirectUrl);
} }
this.win.location.replace(redirectUrl); return { redirectUrl };
} }
_handleError(errorResp, baseUrl) { _handleError(errorResp, baseUrl) {
const redirectUrl = this._buildUrl(baseUrl, { ...errorResp }); const redirectUrl = this._buildUrl(baseUrl, { ...errorResp });
if (Ember.testing) { if (!Ember.testing) {
return { redirectUrl }; this.win.location.replace(redirectUrl);
} }
this.win.location.replace(redirectUrl); return { redirectUrl };
} }
/** /**

View File

@@ -22,7 +22,9 @@
@onSuccess={{this._handleSuccess}} @onSuccess={{this._handleSuccess}}
/> />
{{else if this.model.redirectUrl}} {{else if this.model.redirectUrl}}
<div data-test-oidc-redirect>{{this.model.redirectUrl}}</div> <VaultLogoSpinner />
<p>If you are not automatically redirected,
<a href={{this.model.redirectUrl}} data-test-oidc-redirect>click here to go back to app.</a></p>
{{else}} {{else}}
<VaultLogoSpinner /> <VaultLogoSpinner />
{{/if}} {{/if}}

View File

@@ -163,10 +163,11 @@ module('Acceptance | oidc provider', function (hooks) {
await authFormComponent.login(); await authFormComponent.login();
await settled(); await settled();
assert.strictEqual(currentURL(), url, 'URL is as expected after login'); assert.strictEqual(currentURL(), url, 'URL is as expected after login');
assert.dom('[data-test-oidc-redirect]').exists('redirect text exists');
assert assert
.dom('[data-test-oidc-redirect]') .dom('[data-test-oidc-redirect]')
.hasTextContaining(`${callback}?code=`, 'Successful redirect to callback'); .hasTextContaining(`click here to go back to app`, 'Shows link back to app');
const link = document.querySelector('[data-test-oidc-redirect]').getAttribute('href');
assert.ok(link.includes('/callback?code='), 'Redirects to correct url');
//* clean up test state //* clean up test state
await clearRecord(this.store, 'oidc/client', 'my-webapp'); await clearRecord(this.store, 'oidc/client', 'my-webapp');
@@ -191,7 +192,9 @@ module('Acceptance | oidc provider', function (hooks) {
await settled(); await settled();
assert assert
.dom('[data-test-oidc-redirect]') .dom('[data-test-oidc-redirect]')
.hasTextContaining(`${callback}?code=`, 'Successful redirect to callback'); .hasTextContaining(`click here to go back to app`, 'Shows link back to app');
const link = document.querySelector('[data-test-oidc-redirect]').getAttribute('href');
assert.ok(link.includes('/callback?code='), 'Redirects to correct url');
//* clean up test state //* clean up test state
await clearRecord(this.store, 'oidc/client', 'my-webapp'); await clearRecord(this.store, 'oidc/client', 'my-webapp');