Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccessPolicy ¶ added in v0.1.10
type AccessPolicy struct {
AllowedEmailEnabled bool `env:"AUTHARA_ACCESS_POLICY_ALLOWLIST_ENABLED,default=false"`
}
type Admin ¶ added in v0.1.23
type Admin struct {
AuditRetentionDays int `env:"AUTHARA_ADMIN_AUDIT_RETENTION_DAYS,default=180"`
}
type Challenge ¶ added in v0.1.12
type Challenge struct {
Enabled bool `env:"AUTHARA_CHALLENGE_ENABLED,default=false"`
TTL time.Duration `env:"AUTHARA_CHALLENGE_TTL,default=30m"`
VerificationCodeTTL time.Duration `env:"AUTHARA_CHALLENGE_VERIFICATION_CODE_TTL,default=10m"`
MaxAttempts int `env:"AUTHARA_CHALLENGE_MAX_ATTEMPTS,default=5"`
MaxResends int `env:"AUTHARA_CHALLENGE_MAX_RESENDS,default=3"`
MinResendInterval time.Duration `env:"AUTHARA_CHALLENGE_MIN_RESEND_INTERVAL,default=30s"`
}
type Config ¶
type DB ¶
type DB struct {
Host string `env:"POSTGRESQL_HOST,required"`
Port int `env:"POSTGRESQL_PORT,required"`
Username string `env:"POSTGRESQL_USERNAME,required"`
Password string `env:"POSTGRESQL_PASSWORD,required"`
Database string `env:"POSTGRESQL_DATABASE,required"`
Schema string `env:"POSTGRESQL_SCHEMA,default=authara"`
Timezone string `env:"POSTGRESQL_TIMEZONE,default=UTC"`
LogSQL bool `env:"POSTGRESQL_LOG_SQL,default=false"`
MaxOpenConns int `env:"AUTHARA_DB_MAX_OPEN_CONNS,default=40"`
MaxIdleConns int `env:"AUTHARA_DB_MAX_IDLE_CONNS,default=20"`
ConnMaxLifetime time.Duration `env:"AUTHARA_DB_CONN_MAX_LIFETIME,default=30m"`
ConnMaxIdleTime time.Duration `env:"AUTHARA_DB_CONN_MAX_IDLE_TIME,default=5m"`
}
type Email ¶ added in v0.1.12
type Email struct {
Provider string `env:"AUTHARA_EMAIL_PROVIDER,default=noop"`
From string `env:"AUTHARA_EMAIL_FROM"`
SMTPHost string `env:"AUTHARA_EMAIL_SMTP_HOST"`
SMTPPort int `env:"AUTHARA_EMAIL_SMTP_PORT,default=587"`
SMTPUsername string `env:"AUTHARA_EMAIL_SMTP_USERNAME"`
SMTPPassword string `env:"AUTHARA_EMAIL_SMTP_PASSWORD"`
SMTPTLS bool `env:"AUTHARA_EMAIL_SMTP_TLS,default=true"`
SMTPTimeout time.Duration `env:"AUTHARA_EMAIL_SMTP_TIMEOUT,default=10s"`
WorkerCount int `env:"AUTHARA_EMAIL_WORKER_COUNT,default=2"`
WorkerPollInterval time.Duration `env:"AUTHARA_EMAIL_WORKER_POLL_INTERVAL,default=2s"`
JobMaxAttempts int `env:"AUTHARA_EMAIL_JOB_MAX_ATTEMPTS,default=10"`
CleanupSentAfter time.Duration `env:"AUTHARA_EMAIL_CLEANUP_SENT_AFTER,default=720h"` // 30d
CleanupFailedAfter time.Duration `env:"AUTHARA_EMAIL_CLEANUP_FAILED_AFTER,default=2160h"` // 90d
}
type RateLimit ¶
type RateLimit struct {
LoginIPLimit int `env:"AUTHARA_RATE_LIMIT_LOGIN_IP_LIMIT,default=5"`
LoginIPWindowRaw string `env:"AUTHARA_RATE_LIMIT_LOGIN_IP_WINDOW,default=1m"`
LoginEmailLimit int `env:"AUTHARA_RATE_LIMIT_LOGIN_EMAIL_LIMIT,default=10"`
LoginEmailWindowRaw string `env:"AUTHARA_RATE_LIMIT_LOGIN_EMAIL_WINDOW,default=1h"`
SignupIPLimit int `env:"AUTHARA_RATE_LIMIT_SIGNUP_IP_LIMIT,default=3"`
SignupIPWindowRaw string `env:"AUTHARA_RATE_LIMIT_SIGNUP_IP_WINDOW,default=1h"`
SignupEmailLimit int `env:"AUTHARA_RATE_LIMIT_SIGNUP_EMAIL_LIMIT,default=3"`
SignupEmailWindowRaw string `env:"AUTHARA_RATE_LIMIT_SIGNUP_EMAIL_WINDOW,default=24h"`
PasswordResetIPLimit int `env:"AUTHARA_RATE_LIMIT_PASSWORD_RESET_IP_LIMIT,default=5"`
PasswordResetIPWindowRaw string `env:"AUTHARA_RATE_LIMIT_PASSWORD_RESET_IP_WINDOW,default=1h"`
PasswordResetEmailLimit int `env:"AUTHARA_RATE_LIMIT_PASSWORD_RESET_EMAIL_LIMIT,default=3"`
PasswordResetEmailWindowRaw string `env:"AUTHARA_RATE_LIMIT_PASSWORD_RESET_EMAIL_WINDOW,default=24h"`
PasskeyLoginIPLimit int `env:"AUTHARA_RATE_LIMIT_PASSKEY_LOGIN_IP_LIMIT,default=30"`
PasskeyLoginIPWindowRaw string `env:"AUTHARA_RATE_LIMIT_PASSKEY_LOGIN_IP_WINDOW,default=10m"`
ChallengeVerifyIPLimit int `env:"AUTHARA_RATE_LIMIT_CHALLENGE_VERIFY_IP_LIMIT,default=30"`
ChallengeVerifyIPWindowRaw string `env:"AUTHARA_RATE_LIMIT_CHALLENGE_VERIFY_IP_WINDOW,default=10m"`
ChallengeResendIPLimit int `env:"AUTHARA_RATE_LIMIT_CHALLENGE_RESEND_IP_LIMIT,default=10"`
ChallengeResendIPWindowRaw string `env:"AUTHARA_RATE_LIMIT_CHALLENGE_RESEND_IP_WINDOW,default=1h"`
CleanupEvery int `env:"AUTHARA_RATE_LIMIT_CLEANUP_EVERY,default=200"`
MaxEntries int `env:"AUTHARA_RATE_LIMIT_MAX_ENTRIES,default=50000"`
LoginIPWindow time.Duration
LoginEmailWindow time.Duration
SignupIPWindow time.Duration
SignupEmailWindow time.Duration
PasswordResetIPWindow time.Duration
PasswordResetEmailWindow time.Duration
PasskeyLoginIPWindow time.Duration
ChallengeVerifyIPWindow time.Duration
ChallengeResendIPWindow time.Duration
}
type Session ¶
type Session struct {
SessionTTLDays int `env:"AUTHARA_SESSION_TTL_DAYS,default=60"`
RefreshTokenTTLDays int `env:"AUTHARA_REFRESH_TOKEN_TTL_DAYS,default=14"`
RefreshTokenRotationRaw string `env:"AUTHARA_REFRESH_TOKEN_ROTATION_INTERVAL,default=24h"`
SessionTTL time.Duration
RefreshTokenTTL time.Duration
RefreshTokenRotation time.Duration
}
type Token ¶
type Token struct {
Issuer string `env:"AUTHARA_JWT_ISSUER,required"`
ActiveKeyID string `env:"AUTHARA_JWT_ACTIVE_KEY_ID,required"`
Keys map[string]string `env:"AUTHARA_JWT_KEYS,required"`
AccessTokenTTLMinutes int `env:"AUTHARA_ACCESS_TOKEN_TTL_MINUTES,default=10"`
AccessTokenTTL time.Duration
KeySet *token.KeySet
}
type Webhook ¶ added in v0.1.3
type Webhook struct {
URLRaw string `env:"AUTHARA_WEBHOOK_URL"`
Secret string `env:"AUTHARA_WEBHOOK_SECRET"`
EnabledEvents []string `env:"AUTHARA_WEBHOOK_ENABLED_EVENTS"`
TimeoutRaw string `env:"AUTHARA_WEBHOOK_TIMEOUT,default=5s"`
URL string
Timeout time.Duration
EnabledEventSet map[string]struct{}
}
func (*Webhook) EventEnabled ¶ added in v0.1.3
Click to show internal directories.
Click to hide internal directories.