Files
authelia/internal/suites/Standalone/configuration.yml
T
James ElliottandAmir Zarrinkafsh 3837cffa88 feat(handlers): derive authz response headers from user attributes (#9346)
Each authz endpoint takes a headers option mapping a response header
name to a user attribute, so any standard, extended, or custom attribute
can be sent to the proxy. Remote-User, Remote-Groups, Remote-Name and
Remote-Email remain the default for every implementation except legacy.

Extended user details are only retrieved when a configured attribute
requires them, which is determined when the endpoint is built. Header
names and the attributes they resolve are validated at startup.

---------

Signed-off-by: James Elliott <james-d-elliott@users.noreply.github.com>
Co-authored-by: Amir Zarrinkafsh <3339418+nightah@users.noreply.github.com>
2026-09-27 22:51:40 +00:00

174 lines
3.8 KiB
YAML

# SPDX-FileCopyrightText: 2026 Authelia
#
# SPDX-License-Identifier: Apache-2.0
---
certificates_directory: '/certs/'
theme: 'auto'
server:
address: 'tcp://:9091'
timeouts:
read: '30s'
tls:
certificate: '/pki/public.backend.crt'
key: '/pki/private.backend.pem'
endpoints:
health:
verbose: true
providers:
- 'storage'
- 'session'
- 'user'
cache: '0'
authz:
legacy:
implementation: 'Legacy'
auth-request:
implementation: 'AuthRequest'
ext-authz:
implementation: 'ExtAuthz'
forward-auth:
implementation: 'ForwardAuth'
forward-auth-attributes:
implementation: 'ForwardAuth'
headers:
Remote-User:
user_attribute: 'username'
Remote-Groups:
user_attribute: 'groups'
Remote-Given-Name:
user_attribute: 'given_name'
Remote-Employee-Id:
user_attribute: 'employee_id'
Remote-Is-Admin:
user_attribute: 'is_admin'
rate_limits:
reset_password_start:
buckets:
- period: '2 minutes'
requests: 20
reset_password_finish:
buckets:
- period: '2 minutes'
requests: 20
session_elevation_start:
buckets:
- period: '20 seconds'
requests: 20
- period: '30 seconds'
requests: 30
session_elevation_finish:
buckets:
- period: '20 seconds'
requests: 20
- period: '30 seconds'
requests: 30
telemetry:
metrics:
enabled: true
address: 'tcp://0.0.0.0:9959'
log:
level: 'debug'
storage:
encryption_key: 'a_not_so_secure_encryption_key'
local:
path: '/tmp/db.sqlite3'
notifier:
smtp:
address: 'smtp://mail.example.com:1025'
sender: 'admin@example.com'
ntp:
address: 'udp://time.cloudflare.com:123'
version: 4
max_desync: '3 seconds'
disable_startup_check: false
regulation:
max_retries: 3
find_time: '5 minutes'
ban_time: '15 minutes'
password_policy:
standard:
enabled: false
min_length: 8
max_length: 0
require_uppercase: true
require_lowercase: true
require_number: true
require_special: true
zxcvbn:
enabled: false
session:
cookies:
- domain: 'example.com'
authelia_url: 'https://login.example.com:8080'
expiration: '1 hour'
inactivity: '5 minutes'
remember_me: '1 year'
authentication_backend:
file:
path: '/config/users.yml'
extra_attributes:
employee_id:
value_type: 'integer'
definitions:
user_attributes:
is_admin:
expression: '"admins" in groups'
totp:
issuer: 'example.com'
disable_reuse_security_policy: true
webauthn:
disable: false
enable_passkey_login: true
display_name: 'Authelia'
attestation_conveyance_preference: 'indirect'
timeout: '60 seconds'
filtering:
permitted_aaguids: []
prohibited_aaguids: []
prohibit_backup_eligibility: false
selection_criteria:
attachment: ''
discoverability: 'required'
user_verification: 'preferred'
metadata:
enabled: false
validate_trust_anchor: true
validate_entry: false
validate_entry_permit_zero_aaguid: true
validate_status: true
validate_status_permitted: []
validate_status_prohibited: []
access_control:
default_policy: 'deny'
rules:
- domain: ['home.example.com', 'public.example.com']
policy: 'bypass'
- domain: 'secure.example.com'
policy: 'bypass'
methods:
- 'OPTIONS'
- domain: 'deny.example.com'
policy: 'deny'
- domain: 'admin.example.com'
policy: 'two_factor'
- domain: 'secure.example.com'
policy: 'two_factor'
- domain: 'singlefactor.example.com'
policy: 'one_factor'
...