VectorFlow
Operations

Authentication

VectorFlow supports multiple authentication methods: local credentials, OIDC/SSO, and two-factor authentication (2FA). This page covers initial setup, login methods, user management, and role-based access control.

Login

Initial setup

When VectorFlow starts for the first time with an empty database, it redirects to a setup wizard. The wizard creates the first admin account and the first team.

Create admin account

Enter your name, email address, and a password (minimum 8 characters).

Name your team

Choose a name for your first team (e.g., "Platform Engineering"). Teams organize environments and pipelines.

Start using VectorFlow

After setup completes, you are redirected to the login page. Sign in with the credentials you just created.

The first user is automatically a Super Admin with full platform access.

Credentials authentication

By default, users log in with an email address and password. Passwords are hashed with bcrypt before storage.

When a Super Admin creates a new user, VectorFlow generates a random temporary password. The new user must change their password on first login.

OIDC / SSO

VectorFlow supports any OpenID Connect provider (Okta, Entra ID, Keycloak, Google Workspace, Auth0, etc.). SSO is configured from the Settings page by a Super Admin.

Register VectorFlow with your identity provider

Create an OAuth2/OIDC application in your identity provider. Use the following redirect URI:

https://your-vectorflow-url/api/auth/callback/oidc

Open Settings in VectorFlow

Navigate to Settings > Authentication (Super Admin required).

Enter provider details

Fill in the OIDC configuration:

FieldDescriptionExample
Issuer URLOIDC discovery endpointhttps://accounts.google.com
Client IDOAuth2 client ID from your providerabc123.apps.googleusercontent.com
Client SecretOAuth2 client secretGOCSPX-xxxxxxxxxxxx
Display NameButton label on the login pageSign in with Okta
Token Auth MethodHow the client authenticates to the token endpointclient_secret_post (default) or client_secret_basic

Test the connection

Click Test Connection to verify VectorFlow can reach your provider's discovery endpoint. The test fetches /.well-known/openid-configuration and validates that required fields are present.

Save and verify

Save the settings. An SSO button will appear on the login page. Test the flow by logging in with an SSO account.

OIDC settings are stored encrypted in the database. The client secret is encrypted with AES-256-GCM before storage.

Group mapping

VectorFlow can automatically assign users to teams based on their identity provider group memberships. Group mappings are configured from Settings > Team & Role Mapping and are shared between OIDC and SCIM — the same mapping table drives both protocols.

Group sync is off by default and must be explicitly enabled. When enabled, VectorFlow operates in one of two modes depending on whether SCIM is active:

Groups are read from the OIDC token on each login. Team memberships are reconciled — users are added to mapped teams and removed from teams they no longer belong to (based on the groups present in the token). Changes to group mappings in Settings > Team & Role Mapping take effect on the user's next login.

SCIM is the primary lifecycle manager for group memberships. Your IdP pushes group membership changes (create, update, remove) via SCIM, and VectorFlow tracks them internally. OIDC login acts as a real-time refresh, using the union of SCIM group data and token groups to reconcile team memberships. Changes to group mappings in Settings > Team & Role Mapping take effect immediately for all SCIM-managed users.

Manual assignments are preserved. Team memberships assigned manually in the VectorFlow UI are never modified by automated group sync. If you want group sync to fully manage a user's membership on a team, remove the manual assignment first.

Highest role wins. When a user belongs to multiple IdP groups that map to the same VectorFlow team, the highest role is used (Admin > Editor > Viewer).

Enable group sync

Toggle Enable Group Sync on. This tells VectorFlow to process group-to-team mappings. When enabled, OIDC logins read group claims from the token, and SCIM group pushes use the same mapping table to assign team memberships.

Configure scope and claim

FieldDefaultDescription
Groups ScopegroupsExtra OIDC scope to request from the provider. Leave empty if your provider includes groups automatically (e.g., Azure AD, Cognito).
Groups ClaimgroupsToken claim containing group names (e.g., groups, cognito:groups, roles).

Scope is what you ask the provider for in the authorization URL. Claim is where you read the groups from in the returned token. These are usually the same value (e.g., groups for Keycloak, Pocket ID, Authentik), but some providers differ — for example, AWS Cognito uses no extra scope but returns groups under the cognito:groups claim.

Add group mappings

Map identity provider groups to VectorFlow teams with specific roles. These mappings apply to both OIDC sign-ins and SCIM group pushes — you only need to configure them once.

ColumnDescription
Group NameThe group name as it appears in the OIDC token or SCIM Group displayName
Team(s)One or more VectorFlow teams to assign the user to. Click the team selector to open a dropdown with checkboxes — select multiple teams to map a single group to several teams with the same role. When multiple teams are selected, the field shows a count (e.g., "3 teams") that you can click to view or modify the selection.
RoleThe role to assign: Viewer, Editor, or Admin

Set defaults

Configure a Default Team and Default Role as a fallback. If a user logs in and has no group matches (no IdP groups map to any VectorFlow team), they are assigned to the default team with the default role.

Changing group sync settings takes effect immediately — the OIDC provider configuration is rebuilt without requiring a server restart. In SCIM+OIDC mode, mapping changes are applied to all SCIM-managed users at save time. In OIDC-only mode, changes take effect on each user's next login.

SCIM provisioning

VectorFlow supports SCIM 2.0 for automated user provisioning and deprovisioning from your identity provider. When SCIM is enabled, your IdP can automatically create, update, and deactivate VectorFlow user accounts.

SCIM is configured from Settings > SCIM by a Super Admin. You will need to generate a bearer token and enter it along with the SCIM base URL ({your-vectorflow-url}/api/scim/v2) into your IdP's SCIM configuration.

SCIM group provisioning does not create teams automatically. Instead, SCIM groups are resolved through the shared group mapping table to assign users to existing teams. Make sure your group mappings are configured before enabling SCIM group pushes.

SCIM works best alongside OIDC/SSO. Users created via SCIM should authenticate through your identity provider rather than with local credentials. See the SCIM Provisioning page for detailed setup instructions and IdP-specific guides.

Two-factor authentication (2FA)

VectorFlow supports TOTP-based two-factor authentication compatible with any authenticator app (Google Authenticator, Authy, 1Password, etc.).

Enabling 2FA

Users can enable 2FA from their Profile page. Teams can also require 2FA for all members -- when enabled, users who have not set up 2FA are redirected to the enrollment page on their next login.

Start 2FA setup

Navigate to your Profile page and click Enable Two-Factor Authentication, or you will be redirected automatically if your team requires it.

Scan the QR code

Scan the displayed QR code with your authenticator app. Alternatively, enter the secret key manually.

Save backup codes

VectorFlow generates 10 single-use backup codes. Save these in a secure location. Each code can be used once to log in if you lose access to your authenticator app.

Verify

Enter the 6-digit code from your authenticator app to confirm setup. 2FA is now active on your account.

Logging in with 2FA

After entering your email and password, you are prompted for a 6-digit verification code. Enter the code from your authenticator app, or use one of your backup codes.

2FA is only available for local (credentials) accounts. OIDC/SSO users should configure MFA through their identity provider.

User management

Super Admins can manage users from the Settings > Users page.

Creating users

Super Admins can create new local user accounts. VectorFlow generates a random temporary password that must be shared with the user securely. The user is required to change their password on first login.

When creating a user, you can optionally assign them to a team with a specific role immediately.

When SCIM provisioning or OIDC group sync is enabled, a banner appears in the Add Member dialog: "SSO users are managed by your identity provider. Only local users can be added manually." SSO-managed users should be provisioned through your IdP rather than created here.

Managing users

ActionDescription
Assign to teamAdd a user to a team with a specified role (Viewer, Editor, or Admin)
Remove from teamRemove a user's membership from a specific team
Reset passwordGenerate a new temporary password (local accounts only)
Lock accountPrevent the user from logging in. Locked users see an error on the login page
Unlock accountRestore login access for a locked account
Toggle Super AdminGrant or revoke platform-wide Super Admin privileges
Delete userPermanently remove the user and all their data

You cannot delete your own account, remove your own Super Admin status, or lock your own account.

Roles and permissions

VectorFlow uses a hierarchical role system. Roles are assigned per team, so a user can be an Admin in one team and a Viewer in another.

RolePermissions
ViewerView pipelines, fleet status, dashboards, and audit logs. Cannot make changes.
EditorEverything a Viewer can do, plus: create/edit/delete pipelines, manage secrets and certificates, deploy pipelines, manage alerts.
AdminEverything an Editor can do, plus: manage environments, manage team members and roles, configure team settings (e.g., require 2FA).
Super AdminPlatform-wide access. Can manage all teams, configure system settings (OIDC, fleet, backups), create and delete users. Super Admin is a flag on the user, not a team role.

Role hierarchy

Viewer  <  Editor  <  Admin  <  Super Admin
  (0)       (1)       (2)       (bypass)

Higher roles inherit all permissions from lower roles. Super Admin bypasses all team-level access checks.

SSO-only mode

To enforce SSO-only authentication and hide the local login form, set the environment variable:

VariableDefaultDescription
VF_DISABLE_LOCAL_AUTHfalseWhen true, hides the email/password form and only shows the SSO button on the login page

When SSO-only mode is active, the login page shows a simplified layout:

  • A centered card with a shield icon
  • The heading "Sign in"
  • The message "Use your organization's single sign-on to access your account."
  • A single button: "Sign in with [Provider Name]" (using the display name configured in OIDC settings)

The email/password form and all local authentication options are hidden.

Before enabling SSO-only mode, ensure your OIDC provider is correctly configured and tested. The only way to re-enable local login is to change the environment variable and restart the server.

SSO-only mode acts as a breakglass mechanism -- if SSO breaks, an administrator can re-enable local login by setting VF_DISABLE_LOCAL_AUTH=false and restarting the container.

SSO-managed roles

When users authenticate via OIDC or are provisioned via SCIM, their team roles are managed by the identity provider. Admins cannot change roles for SSO-managed users in the VectorFlow UI -- the role dropdown is locked with a tooltip indicating the role is managed by the identity provider.

Role updates happen:

  • On login -- OIDC group claims are reconciled against team mappings. The user is added to newly matched teams, removed from teams they no longer match, and roles are updated to reflect the highest mapped role.
  • Via SCIM -- When SCIM group membership changes are pushed, team memberships are reconciled immediately based on team mappings. Removals cascade correctly — if a user is removed from their only group mapping for a team, they are removed from that team.

Manual team assignments (made in the UI) are not affected by SSO-managed role sync. Only memberships created by group sync are subject to reconciliation.

Users without team assignments

When a user authenticates successfully (via SSO or local credentials) but is not a member of any team, VectorFlow displays a full-page message instead of the normal dashboard:

  • A "No Team Assigned" heading with a shield icon
  • A message: "Your account is active but you haven't been assigned to a team yet. Contact your administrator to get access."
  • The user's identity (name or email)
  • A Sign Out button

This typically occurs when:

  • A new SSO user logs in before group mappings or manual team assignments are configured
  • A SCIM-provisioned user has not been assigned to any group that maps to a VectorFlow team
  • An admin removes a user from all teams

The user can still access the password change dialog if their account requires it. Once an admin assigns them to a team (or group sync places them on one), the full dashboard becomes available on next login or page refresh.

On this page