Skip to content
Packages Examples Agents Blog Get started

The configuration section key is auth. Values are read from YAML, environment variables (ORI_AUTH__*), or passed directly to AuthConfig(...).

KeyTypeDefaultEnv VarDescription
enabledboolTrueORI_AUTH__ENABLEDEnable auth module
secret_keystr(required)ORI_AUTH__SECRET_KEYSecret key for signing tokens
admin_emailstrNoneORI_AUTH__ADMIN_EMAILInitial admin email
admin_passwordstrNoneORI_AUTH__ADMIN_PASSWORDInitial admin password
login_rate_limitstr"5/minute"ORI_AUTH__LOGIN_RATE_LIMITRate limit for login endpoints
max_sessions_per_userintNoneORI_AUTH__MAX_SESSIONS_PER_USERMax concurrent sessions (None = unlimited)
userslist[AuthUserConfig][]Bootstrap users
rolesdict[str, AuthRoleConfig]{}RBAC role definitions
oauth2_providersdict[str, dict]{}OAuth2 provider configs (client_id, client_secret, etc.)
KeyTypeDefaultEnv VarDescription
enabledboolTrueORI_AUTH__RBAC__ENABLEDEnable RBAC enforcement
superuser_bypassboolTrueORI_AUTH__RBAC__SUPERUSER_BYPASSSuperuser bypasses all checks
default_rolestr"viewer"ORI_AUTH__RBAC__DEFAULT_ROLEDefault role for new users
cache_permissionsboolTrueORI_AUTH__RBAC__CACHE_PERMISSIONSCache resolved permissions
permission_cache_ttlint300ORI_AUTH__RBAC__PERMISSION_CACHE_TTLPermission cache TTL (seconds)
KeyTypeDefaultEnv VarDescription
secret_keystr(required)ORI_AUTH__TOKEN__SECRET_KEYJWT signing secret
algorithmstr"HS256"ORI_AUTH__TOKEN__ALGORITHMSigning algorithm
access_token_expireDuration30 minutesORI_AUTH__TOKEN__ACCESS_TOKEN_EXPIREAccess token lifetime
refresh_token_expireDuration7 daysORI_AUTH__TOKEN__REFRESH_TOKEN_EXPIRERefresh token lifetime
id_token_expireDuration1 hourORI_AUTH__TOKEN__ID_TOKEN_EXPIREID token lifetime
key_rotation_grace_periodDuration300 secondsORI_AUTH__TOKEN__KEY_ROTATION_GRACE_PERIODGrace period for rotated keys
required_audiencestrNoneORI_AUTH__TOKEN__REQUIRED_AUDIENCERequired aud claim
KeyTypeDefaultEnv VarDescription
min_lengthint12ORI_AUTH__PASSWORD__MIN_LENGTHMinimum password length
max_lengthint128ORI_AUTH__PASSWORD__MAX_LENGTHMaximum password length
require_uppercaseboolTrueORI_AUTH__PASSWORD__REQUIRE_UPPERCASERequire uppercase letter
require_lowercaseboolFalseORI_AUTH__PASSWORD__REQUIRE_LOWERCASERequire lowercase letter
require_digitsboolTrueORI_AUTH__PASSWORD__REQUIRE_DIGITSRequire digit
require_specialboolFalseORI_AUTH__PASSWORD__REQUIRE_SPECIALRequire special character
banned_patternslist[str][]Case-insensitive banned substrings
KeyTypeDefaultEnv VarDescription
backendstr"session"ORI_AUTH__MIDDLEWARE__BACKENDAuth backend type
header_namestr"Authorization"ORI_AUTH__MIDDLEWARE__HEADER_NAMEHeader for token
schemestr"Bearer"ORI_AUTH__MIDDLEWARE__SCHEMEToken scheme
optional_authboolFalseORI_AUTH__MIDDLEWARE__OPTIONAL_AUTHAuth is optional
login_urlstrNoneORI_AUTH__MIDDLEWARE__LOGIN_URLLogin redirect URL
login_rate_limitstr"5/minute"ORI_AUTH__MIDDLEWARE__LOGIN_RATE_LIMITRate limit
exclude_pathslist[str][]Paths excluded from auth
exclude_prefixeslist[str][]Path prefixes excluded
auth:
secret_key: "${ORI_AUTH__SECRET_KEY}"
login_rate_limit: "10/minute"
max_sessions_per_user: 3
rbac:
enabled: true
superuser_bypass: true
default_role: "viewer"
token:
algorithm: "RS256"
access_token_expire: "15m"
refresh_token_expire: "7d"
required_audience: "my-service"
password:
min_length: 12
require_uppercase: true
require_digits: true
banned_patterns:
- "password"
- "123456"
oauth2_providers:
google:
client_id: "${GOOGLE_CLIENT_ID}"
client_secret: "${GOOGLE_CLIENT_SECRET}"
Terminal window
# Required
export ORI_AUTH__SECRET_KEY="your-256-bit-secret"
export ORI_AUTH__TOKEN__SECRET_KEY="your-256-bit-secret"
# RBAC
export ORI_AUTH__RBAC__ENABLED=true
export ORI_AUTH__RBAC__DEFAULT_ROLE="admin"
# JWT
export ORI_AUTH__TOKEN__ALGORITHM="RS256"
export ORI_AUTH__TOKEN__ACCESS_TOKEN_EXPIRE="30m"
# Password policy
export ORI_AUTH__PASSWORD__MIN_LENGTH=12
export ORI_AUTH__PASSWORD__REQUIRE_UPPERCASE=true
# Middleware
export ORI_AUTH__MIDDLEWARE__OPTIONAL_AUTH=false