Skip to main content

Authentication audit

Authentication is the primary perimeter of Passwork security. This section verifies that all authentication controls are configured to resist credential-based attacks and enforce organizational policy.

Navigate to Settings → System settings for most controls in this section.


1. Two-factor authentication policy

What to verify

1.1 2FA enforcement by role

In Passwork, 2FA enforcement is configured per role. Navigate to Settings → Roles and open each role (Owner, Admin, and any custom roles with elevated privileges).

Verify that Mandatory two-factor authentication is enabled for:

  • The Owner role
  • All Administrator-level roles
  • Any custom roles with access to User management, System settings, or Vault administration
Mandatory 2FA setting

1.2 Accepted 2FA methods

Review which 2FA methods are permitted for each role:

  • TOTP (Passwork 2FA app, Google Authenticator, Microsoft Authenticator) — acceptable
  • Physical security keys / WebAuthn passkeys — acceptable and preferred for admin accounts
  • Biometrics — acceptable
For high-security environments

For administrative accounts, require physical FIDO2/WebAuthn security keys rather than TOTP. Hardware keys are phishing-resistant; TOTP codes can be intercepted by real-time phishing proxies.


2. Account lockout policy

A missing or overly permissive lockout policy allows unlimited brute-force attempts.

Navigate to Settings → System settings → Local authentication lockout policies.

Local authentication lockout policies

What to verify

ParameterRecommended valueFinding if not met
Max failed attempts≤ 5High — allows credential stuffing
Attempt tracking window5–15 minutesMedium — too short allows rapid cycling
Lockout duration≥ 15 minutes, or indefinite until admin unlockHigh — short lockouts allow continued brute force
NIST SP 800-63B guidance

NIST recommends limiting failed authentication attempts to no more than 100 over a 30-day period, with effective throttling after the first few failed attempts. A lockout after 5 attempts with a 15-minute cooldown is a reasonable and commonly accepted implementation.


3. Session management

What to verify

Navigate to Settings → System settings → Sessions.

3.1 Session inactivity timeout

Verify that a session timeout is configured. Users who walk away from their workstation without signing out should be automatically signed out after an inactivity period.

EnvironmentRecommended timeout
General office use30–60 minutes
Privileged admin accounts15–30 minutes
Shared / kiosk workstations10–15 minutes
Session settings

3.2 Session history retention

Session history provides an audit trail of active and past sessions. Verify the retention period is sufficient to support investigation of incidents (recommended: at least 90 days).

Session settings

3.3 Cookie security settings

In config.env, verify the session cookie is set with Secure and SameSite=Strict or SameSite=Lax flags. This prevents cookie theft via unencrypted channels and cross-site request forgery.

Users can review their own active sessions and terminate suspicious ones from Account settings → Sessions. As an administrator, you can terminate any user's sessions from the user profile.


4. Password complexity policies

Passwork enforces separate complexity policies for the local sign-in password and the master password (used for client-side encryption).

Local password policy

Navigate to Settings → System settings → Local password complexity policies.

Local password complexity policies
ParameterRecommendation
Minimum length12 characters
Required character classesUppercase + lowercase + digit + special character
Password historyLast 5 passwords
Prohibit common passwordsEnabled (if available)

Master password policy (CSE deployments)

If client-side encryption is enabled, navigate to Settings → System settings → Master password complexity policies.

Master password complexity policies
ParameterRecommended minimum
Minimum length14 characters
Required character classesAll four (uppercase, lowercase, digit, symbol)
Master password and recovery

There is no server-side recovery path for a forgotten master password. Users who lose their master password lose access to their private vault contents. Enforce complexity requirements that are strong but memorizable — or train users to store master passwords in a secure offline location (not digitally).


5. LDAP security

If LDAP integration is configured, verify the following.

5.1 LDAPS (TLS-encrypted LDAP)

Passwork must connect to the directory service over LDAPS (port 636 with TLS), not plain LDAP (port 389). Plain LDAP transmits credentials in cleartext and is susceptible to man-in-the-middle attacks.

Verify in Settings → LDAP settings → Server configuration:

  • The server URL starts with ldaps://
  • The port is 636 (or the correct custom port for your LDAPS service)
LDAP server configuration — LDAPS settings

For LDAPS certificate installation instructions, see LDAPS Configuration.

5.2 LDAP service account permissions

The LDAP service account used by Passwork should have read-only access to the directory. It must not have permissions to modify users, groups, or other directory objects.

Verify with the directory administrator:

  • The service account has Read permissions only
  • The service account is in a dedicated Service accounts OU, not in a privileged group
  • The service account password is stored only in Passwork config.env and is not reused for other services

5.3 LDAP credential storage

The LDAP bind password is stored in the Passwork database, encrypted with server-side encryption (AES-256-CFB). Verify:

  • The config.env file (which contains the server encryption key) has restrictive file permissions: chmod 600
  • The file is owned by the web server user, not world-readable
# Linux
ls -la /var/www/init/config.env
# Expected: -rw------- 1 www-data www-data

6. SSO security

If SSO is configured, verify the following.

6.1 IdP trust scope

In the SSO configuration, verify:

  • The Assertion Consumer Service (ACS) URL is set to the exact Passwork URL — not a wildcard
  • The audience/entity ID matches the Passwork application identifier
  • The IdP signing certificate is valid and from the expected issuer

6.2 SSO as the enforced sign-in method

If SSO is the organization's authoritative authentication method:

  • Enable Prioritize SSO sign-in in Passwork SSO settings
  • Consider disabling local password authentication for SSO users via the user's Authentication settings
  • Ensure local password authentication remains available for emergency access (service account, owner account)
SSO settings page

6.3 Session token lifetime alignment

Passwork issues its own session tokens after SSO authentication. Verify that the Passwork session timeout (Section 3.1) is aligned with or shorter than the IdP session lifetime. A long Passwork session can outlive the SSO session, leaving a window where a revoked IdP user retains Passwork access.


7. Inactive and orphaned accounts

Orphaned accounts — accounts for users who have left the organization or changed roles — are a persistent access control risk.

What to verify

  • Look for accounts with administrative roles assigned to users who no longer require them
  • Verify that LDAP sync has correctly disabled or removed accounts for former employees
LDAP synchronization as the primary control

When LDAP sync is active, user accounts are automatically managed based on AD group membership. Removing a user from the relevant AD group revokes their Passwork access on the next sync cycle. Verify the sync schedule is frequent enough to meet your access revocation SLA.


Summary checklist

#ControlStatus
1.12FA mandatory for Owner and all Admin roles
1.2No admin accounts with 2FA disabled
2Account lockout after ≤ 5 failed attempts with ≥ 15-min cooldown
3.1Session timeout ≤ 60 min (≤ 30 min for admins)
3.2Session history retention ≥ 90 days
4.1Local password: ≥ 12 chars, all character classes
4.2Master password: ≥ 14 chars (if CSE enabled)
5.1LDAP uses LDAPS (port 636, TLS)
5.2LDAP service account is read-only
5.3config.env file permissions: 600, owned by web server user
6.1SSO ACS URL is exact (no wildcard)
6.2Local password disabled for SSO users (if applicable)
6.3Passwork session lifetime ≤ IdP session lifetime
7No orphaned/inactive accounts with active vault access