LauraXia123 opened a new pull request, #12278: URL: https://github.com/apache/gravitino/pull/12278
Web UI support for built-in IdP Basic login [https://github.com/apache/gravitino/issues/11682] EPIC What changes were proposed in this pull request? Fix: https://github.com/apache/gravitino/issues/11681: Added Basic login functionality following front-end session logic as requested + supporting UI modifications. Files Changed + why are the changes needed? server-common/src/main/java/org/apache/gravitino/server/authentication/AuthenticationFilter.java (Feature) Adds web login header check to skip the unwanted browser basic auth popup web/web/src/app/login/components/BasicLogin.js (New Component) Basic Login Page setup Handles user login input + error catching and message upon invalid credentials (Possibly add a more descriptive error message for invalid login?) Prompts UI error popup upon failed login web/web/src/app/login/page.js (Feature) When visited + logged in (confirmed with an access token) immediately redirects to metalakes Replaced if-else logic with switch case to handle different login components (oidc, basic, and default) web/web/src/app/page.js (Feature) Replaced empty web page with auto redirect to real main page /metalakes as described to be the home page in the issue thread. web/web/src/lib/api/auth/index.js (API Token) Added new 'basicToken' Allows simple token-accept functionalities, mainly 'X-Gravitino-Web-Login' which is useful later on for stopping unwanted page refresh upon invalid logins web/web/src/lib/auth/providers/factory.js (Feature) Added new variable 'authenticators' to read from the current config file to allow for setting 'providerType' and returning early before unsuitable OAuth behaviour, which isn't wanted for Basic Auth Added missing 'this.providerType = providerType' line Added null catch case for provider now that basic doesn't carry one Fixed getProvider type to prevent possible null issues web/web/src/lib/provider/session.js (Feature) Added else-if to redirect user to the metalake (home) page if already logged in otherwise forced into the login page. web/web/src/lib/store/auth/index.js (Feature) Added basicLoginAction to replicate loginAction with custom Basic Auth logic Added specific variable retention during refresh in authSlice. Prevents logout button from disappearing during refresh Added authType to extraReducers for extra security with 'basic' functionality (previously only for oauth) web/web/src/lib/utils/axios/index.js (Feature) Added isFullAuthHeader to set tokens relative to Basic Login auth while also maintaining jwt flow in the subsequent line Added 'isFailedWebUILoginRequest' to prevent page refresh upon failed logins (this is a feature meant for OAuth which should be disabled for basic auth) Added catch for 401 API pop-up caused by failed logins Does this PR introduce any user-facing change? (Please list the user-facing changes introduced by your change, including Change in user-facing APIs Added new basicLoginApi with basicToken. Contains X-Gravitino-Web-Login How was this patch tested? (Please test your changes, and provide instructions on how to test it: Enabled basic auth mode using given instructions, and manually tested Ensured additions didn't cause any new unit test errors Manually reverted to the default conf file to ensure default behaviours unaffected -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
