System Settings holds the two settings that apply to the whole deployment instead of one tenant: the password policy and the identity provider logo. Passwords belong to the user, not to a tenant, so the policy that governs them is global too. The screen is not scoped to the tenant selector in the sidebar.
Before you start
| Need | Permission |
|---|---|
| See the screen | security:read |
| Change the settings (the Edit button) | security:manage |
The settings live in Central and reach auth through its configuration sync, so a saved change applies after the next refresh. edge does not use them.

Fields
Edit opens the form below. Save writes all four values at once; Cancel discards them.
| Field | Controls | Default | Validation |
|---|---|---|---|
| Password Regex | The pattern every password a user types must match in full. | ^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,}$ (at least 8 characters with an uppercase letter, a lowercase letter and a digit) | Required. The console refuses a pattern that is not a valid regular expression. |
| Password History Size | How many previous passwords Versola keeps per user, counting the current one. | 2 | A whole number, 0 or more. |
| Different Passwords Required | How many of the most recent kept passwords a new password must differ from. | 1 (the new password must differ from the current one) | A whole number, 0 or more. |
| Identity Provider Logo | A logo shown on the login screens and used as the favicon of the login pages. | empty (shown as — in the read-only view) | Empty, or an absolute http or https URL with a host. Whitespace is trimmed; an empty value clears the logo. |

Central rejects a logo that is not an absolute http(s) URL with the message Identity provider logo must be an absolute HTTP(S) URL. Central does not validate the regular expression; the check in the console is the only one. The browser form checks it as a JavaScript pattern, while auth evaluates it in Java, so keep to constructs both support (character classes, quantifiers, lookaheads).
Only passwords that are kept count. Different Passwords Required larger than Password History Size adds nothing, because auth has no older passwords to compare with.
How the policy is applied
The regular expression is checked by auth on the server whenever a password is typed into a sign-in page: the password step, the combined login-and-password step and the Set New Password step. A submission that does not match is rejected with 400 before the password is checked against the stored one.
Warning: The pattern also applies to sign-in, not only to new passwords. After you make it stricter, a user whose existing password no longer matches cannot submit it on the login page. Change the pattern together with a plan for those users, for example a password reset.
If the pattern is not a valid Java regular expression, auth treats every password as matching. The console blocks invalid patterns, so this happens only if the setting was written to Central through the API.
The history rules apply when a user sets a permanent password. A new password is refused when it equals one of the last Different Passwords Required passwords. After it is stored, only the newest Password History Size passwords stay on record. If a user signs in with an old password that is still on record, auth does not accept it and shows when the password was changed.
First sign-in and password reset
Temporary passwords come from two places: the bootstrap password of the first administrator and the Reset Password button on the user card (see User). Both follow the same path:
- The user signs in with the temporary password.
authaccepts it as the password factor, finishes the remaining factors (for example the OTP code) and then shows Set New Password. An expired temporary password is refused. - The new password must match Password Regex and pass the history rules above. A password that repeats a recent one is refused with a reuse message, and the failed attempt counts against the password submission limits of the tenant (see Challenges & Security).
- Saving the new password stores it as permanent, deletes the temporary one and keeps the temporary password out of the history.
Reset generates a temporary password of 16 characters that satisfies Password Regex, trying up to 20 times. If your pattern is so strict that random passwords rarely match it, the reset fails instead of issuing a weak password. A reset without a lifetime expires after 12 hours. In a production environment the password is delivered to the user by email or SMS with the password template from Challenges & Security; showing it in the console is allowed outside production only.
The internal POST /users/password/set call of auth applies the history rules but does not run Password Regex.
Next steps
- Challenges & Security for templates and password submission limits
- User and How to register a user
- Well Known