issue #3105: Hop Web authentication, roles, and UI authorization - #7819
Draft
mattcasters wants to merge 9 commits into
Draft
issue #3105: Hop Web authentication, roles, and UI authorization#7819mattcasters wants to merge 9 commits into
mattcasters wants to merge 9 commits into
Conversation
Add multi-mode auth (NONE/EXTERNAL/BASIC/OAuth2), RBAC for Admin/User/Operator/Read-only, read-only dialogs and graph guards, security configuration UI with plugin tabs, project access control, log-off, and documentation screenshots.
…in mapping Default audit data to /tmp/hop-web-audit with per-user isolation and a java.io.tmpdir fallback. Document Google email→admin roleMappings and stop local OAuth env from overwriting claim settings in security-config.json.
Allow users to act as Operator or Read-only for the current session without re-login, with restore to full base privileges. Toolbar combo, RAP session overlay, desktop simulation, and docs.
Use relative URLs for history.replaceState so TLS-terminated proxies do not trigger mixed http/https History API errors. Absolute shareable links honor X-Forwarded-Proto/Host.
getPrivilegeModeList was returning String[] but BaseGuiWidgets.getComboItems casts comboValuesMethod results to List, causing ClassCastException on Hop Web login.
getStateMap/getCurrentUnitTest used HopGui from transform threads during getTransformFields (lineage), which throws IllegalStateException on RAP. Return null when no UI session instead of failing GetFieldsExtension.
Add Permission.PLUGIN_MANAGE (Admin only) and gate marketplace mutations: Install/Uninstall, repository config, hop-env Apply, and auto-apply on environment enable. Catalog browse and Validate remain open to all roles.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Draft implementation for issue #3105: authentication and role-based authorization for Hop Web, with UI gating, configuration UI, project access control, and documentation.
Authentication modes
/login) againstusers.json(PBKDF2); optional HTTP Basic for API clientsConfig lives under
HOP_CONFIG_FOLDER/security/(security-config.json,users.json). Env vars bootstrap mode, admin seed, demo users, and OAuth secrets (HOP_WEB_SECURITY_MODE,HOP_WEB_SEED_DEMO_USERS,HOP_WEB_OAUTH_*, …).Local helpers:
docker/run-hop-web-local-with-basic.sh,-with-oauth.sh,-with-users.sh, anddocker/local-auth-config/.Roles and permissions
Built-in roles Admin, User, Operator, Read-only with fine-grained
Permissionvalues (file.edit,file.save,run.execute,metadata.write,security.manage, …).HopSecurity/HopSecurityContext(+ source/LDAP group names for project rules)UI authorization (read-only and canvas)
IDialogEditableon transform/action/metadata bases →BaseDialog.defaultShellHandlingopens dialogs read-only withoutfile.edit/metadata.writefile.edit(pipeline + workflow)StyledTextclass load on Hop Web)Security configuration UI
Configuration → Security (requires
security.manage):Plugin extension:
@GuiTab(parentId = ConfigSecurityTab.SECURITY_CONFIG_TABS)+ISecurityConfigSection.Session UX
Project access control
projects-access.json: enable rules by username, Hop role, or LDAP/IdP group. Enforced on project switch, select-project dialog, and startup project load. Admins always allowed; desktop/unrestricted not filtered.Documentation
hop-web.adocupdated with modes, roles, configuration tabs, scripts, and screenshots (hop-web-login.png,hop-web-security-configuration-ui.png,hop-web-toolbar-user-and-log-off.png).Test plan
NONE— unrestricted UI (desktop and web)./docker/run-hop-web-local-with-basic.sh— login as seeded users; roles gate save/edit/run./docker/run-hop-web-local-with-oauth.shHopSecurityContextTest,HopDialogEditGuardTest,ProjectsAccessControlTest, …)Notes for reviewers