NIFI-9049 Replace localStorage with sessionStorage for Bearer Token#5344
NIFI-9049 Replace localStorage with sessionStorage for Bearer Token#5344exceptionfactory wants to merge 2 commits intoapache:mainfrom
Conversation
- Added JavaScript Authorization Storage component for storing and retrieving JSON Web Tokens - Added access status request to remove Session Cookie when Token not found
66385d6 to
0052945
Compare
|
A look through the code appears sensible and the approach makes sense to me, however it probably makes sense for someone with more experience of the UI to take a look as well I'll aim to try and build the branch and run some local tests later in the week Is it worth making similar changes to the Registry UI to keep it consistent (even if currently it may not suffer the same problems)? Probably best as a separate Jira/PR |
|
Thanks for taking a look at this @ChrisSamo632! Making changes to Registry would be helpful, and I agree that it should be handled in a separate issue. NiFi has incorporated several improvements related to authentication and authorization in recent pull requests, so these concepts could be brought together and integrated into Registry. |
Done and it all looks good, thanks @exceptionfactory |
Thanks @ChrisSamo632! |
|
Looks good, reviewed and tested. +1 will merge. |
Thanks @thenatog! |
- Added JavaScript Authorization Storage component for storing and retrieving JSON Web Tokens - Added access status request to remove Session Cookie when Token not found NIFI-9049 Updated Jolt JavaScript application to use AuthorizationStorage Signed-off-by: Nathan Gough <thenatog@gmail.com> This closes apache#5344.
Description of PR
NIFI-9049 Replaces browser-based persistence of JSON Web Tokens in
localStoragewith a newnf.AuthorizationStoragecomponent based onsessionStorage.The current implementation relies on persisting an expiration timestamp along with the JSON Web Token, but the
localStorageentry remains in the browser across multiple tabs and browser restarts. With the introduction of HTTP Session Cookies in #4988, this can result in the browser retaining the token inlocalStorageafter the browser has removed the HTTP Session Cookie. This mismatch of persistence lifespan results in NiFi allowing access to the user interface, but denying access when open custom UI extensions of viewing provenance data content. Those user interface requests require the presence of the HTTP Session Cookie for access.Changing the persistent storage approach ensures that both the HTTP Session Cookie and the
sessionStoragecontents will be removed when restarting the browser.Changes in this Pull Request also include checking for the existence of the
Authorizationheader inAccessResource.getAccessStatus(), and instructing the browser to remove the Session Cookie when theAuthorizationheader is missing. Updating thenf-canvas.jsloading process to callgetAccessStatus()ensures that both the HTTP Session Cookie and the JSON Web Token fromsessionStorageare present. This addresses scenarios where the browser may have the Session Cookie, but not have the token, which then redirects the browser to the login screen.In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:
Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?
Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
Has your PR been rebased against the latest commit within the target branch (typically
main)?Is your initial contribution a single, squashed commit? Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not
squashor use--forcewhen pushing to allow for clean monitoring of changes.For code changes:
mvn -Pcontrib-check clean installat the rootnififolder?LICENSEfile, including the mainLICENSEfile undernifi-assembly?NOTICEfile, including the mainNOTICEfile found undernifi-assembly?.displayNamein addition to .name (programmatic access) for each of the new properties?For documentation related changes:
Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI for build issues and submit an update to your PR as soon as possible.