Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/vufind-org/vufind/llms.txt

Use this file to discover all available pages before exploring further.

VuFind supports a wide range of authentication methods, from a built-in local database to federated identity providers and ILS-native login. All methods are selected through the method key in the [Authentication] section of config.ini, and each method has its own configuration section or companion file. The permission system in permissions.ini sits on top of authentication and lets you gate specific features by role, IP address, Shibboleth attribute, or username.

Selecting an authentication method

Set the method key in config.ini:
[Authentication]
method = Database
Available values:
MethodDescription
DatabaseVuFind’s built-in user database (username + password stored locally)
ILSAuthenticate directly against the ILS patron database
MultiILSILS login across multiple backends (requires MultiBackend driver)
LDAPLDAP/Active Directory directory service
ShibbolethSAML 2.0 federated login via Shibboleth SP
CASCentral Authentication Service (deprecated — prefer OpenIDConnect)
OpenIDConnectOpenID Connect / OAuth 2.0 (configure in OpenIDConnectClient.ini)
AlmaDatabaseAlma patron lookup combined with VuFind local database
EmailPasswordless login via emailed authentication link
SIP2SIP2 protocol authentication against ILS
FacebookFacebook OAuth (configure in [Facebook] section)
PasswordAccessHard-coded list of shared access passwords
SimulatedSSOSimulated SSO for development and testing only
MultiAuthTry multiple methods in sequence (e.g., ILS then LDAP)
ChoiceAuthPresent multiple login options to the user

Common authentication settings

[Authentication]
method = Database

; Allow users to change their password
change_password = true

; Allow password recovery via email
recover_password = false
recover_interval = 60

; Force email verification before first login (Database only)
verify_email = false

; Hide the login link entirely (e.g., when Shibboleth handles auth externally)
hideLogin = false

; Hash passwords with bcrypt (always leave this true)
hash_passwords = true

; Encrypt catalog (ILS) passwords stored in the database
encrypt_ils_password = false
ils_encryption_key   = false
ils_encryption_algo  = "aes"

; Restrict registration to specific email domains
;legal_domains[] = "myuniversity.edu"
Never set hash_passwords = false in a production environment. Plain-text password storage is provided only for migrating data from very old VuFind releases.

Authentication methods

VuFind’s built-in method. Users create accounts through the registration form, and credentials are stored in VuFind’s own database.No additional section is needed beyond the [Authentication] block. To enable self-registration, ensure the registration route is accessible and optionally restrict to specific email domains:
[Authentication]
method = Database
change_password    = true
recover_password   = true
verify_email       = true
;legal_domains[] = "myuniversity.edu"

Multi-auth setups

MultiAuth — sequential fallback

MultiAuth tries each method in order and grants access on the first success. It is only compatible with username/password methods (not Shibboleth).
[Authentication]
method = MultiAuth

[MultiAuth]
method_order = ILS,LDAP
; Trim whitespace from username and password before attempting login
filters = "username:trim,password:trim"

ChoiceAuth — user selects a method

ChoiceAuth presents a login page where the user picks between two or more auth options.
[Authentication]
method = ChoiceAuth

[ChoiceAuth]
choice_order = Shibboleth,Database
ChoiceAuth does not reconcile usernames across methods. Ensure that any two methods you combine will return the same username for a given patron, or users may end up with duplicate accounts.

Persistent login (remember me)

[Authentication]
; Enable "remember me" for the listed methods
;persistent_login = "database,multiils"

; Token lifetime in days (default 60)
;persistent_login_lifetime = 60

; Send email on suspicious login
;send_login_warnings = true

Permission system (permissions.ini)

permissions.ini grants named permissions to users based on conditions such as IP address, Shibboleth attribute, role, or username. VuFind checks these permissions at runtime to control access to specific features.

How rules work

Each section in permissions.ini defines one rule. The rule grants one or more named permissions when its conditions are satisfied.
[rule.name]
require    = ANY         ; ALL (default) or ANY
permission = access.AdminModule
role[]     = loggedin
ipRange[]  = "10.0.0.0-10.255.255.255"
Built-in roles: guest (not logged in) and loggedin (any authenticated user).

Available condition types

Condition keyDescription
roleMatch a named role (guest, loggedin)
ipRangeSingle IP or range (e.g., 10.0.0.0-10.0.255.255)
ipRegExRegular expression matched against the client IP
usernameMatch specific usernames
serverParamMatch Apache/PHP server parameters (including Shibboleth attributes)
shibbolethLike serverParam but supports multi-valued Shibboleth attributes
insecureCookieMatch a browser cookie value (low-security use only)

Commonly used permissions

; Grant admin access to users from the library network
[admin.ip]
require    = ANY
ipRange    = "192.168.1.0-192.168.1.255"
permission = access.AdminModule

; Grant staff view to logged-in users with a specific Shibboleth entitlement
[staff.shibboleth]
shibboleth = "entitlement urn:mace:dir:entitlement:library-staff"
permission = access.StaffViewTab

; Allow Primo module for all users
[default.PrimoModule]
role[] = guest
role[] = loggedin
permission = access.PrimoModule

; Gate favorites to logged-in users only
[default.Favorites]
role[] = loggedin
permission = feature.Favorites

Full list of built-in permission names

PermissionControls
access.AdminModuleAdmin panel (also requires admin_enabled = true in config.ini)
access.DebugMode?debug=true GET parameter
access.EDSExtendedResultsProtected EDS result fields
access.EITModuleEBSCO EIT module
access.PrimoModuleAll Primo content
access.StaffViewTabStaff view tab on record pages
access.SummonExtendedResultsProtected Summon result fields
feature.DeveloperDeveloper settings including API keys
feature.FavoritesSave favorites / lists feature
See the VuFind wiki on permission options for a complete reference including custom permission providers.

Build docs developers (and LLMs) love