Skip to content

Use a unique temporary password per migrated user #147

Description

@jeffmcutter

Summary

User import assigns the same temporary password to every created user in a migration session via a session-cached get_dummy_password(). Source passwords are never available from the API ($encrypted$ / "Password Disabled"), which is expected — but sharing one temp password across all created users is a security concern when Local Database authentication remains enabled on the target.

Current behavior

  • UserImporter strips source password / ldap_dn and sets performance_config.get_dummy_password() for all creates, including superusers.
  • get_dummy_password() generates one random value per process and reuses it.
  • Pre-existing users found by username precheck are mapped and not password-updated.

Why it matters

  • If Local auth is enabled, every migrated user shares one known password for the import session.
  • For SSO/LDAP users this may be unused for IdP login, but it remains a local-auth fallback until passwords are reset or local auth is disabled.
  • Credentials already treat secrets as non-extractable (optional Vault rehydration); users have no equivalent secret path.

Proposed direction

  1. Generate a unique random temporary password per created user.
  2. Decide reporting/storage: include in migration report securely, or omit and document forced reset / SSO-only.
  3. Document clearly that passwords are never migrated and local login requires reset (or IdP).

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions