Documentation
¶
Index ¶
Constants ¶
View Source
const ( OrgModePersonal = "personal" OrgModeSingle = "single" OrgModeMulti = "multi" )
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 Authentication ¶ added in v0.17.0
type Authentication struct {
UsernameLoginEnabled bool `env:"AUTHARA_USERNAME_LOGIN_ENABLED,default=false"`
}
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 Config struct {
Values Values
DB DB
Cache Cache
Logging Logging
UI UI
OAuth OAuth
Token Token
Session Session
RateLimit RateLimit
Webhook Webhook
AccessPolicy AccessPolicy
Admin Admin
InternalAPI InternalAPI
Organization Organization
Authentication Authentication
Challenge Challenge
Email Email
}
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 InternalAPI ¶ added in v0.1.24
type InternalAPI struct {
Token string `env:"AUTHARA_INTERNAL_API_TOKEN"`
}
type Organization ¶ added in v0.1.24
type Organization struct {
Mode string `env:"AUTHARA_ORG_MODE,default=single"`
PublicOrganizationManagementEnabled bool `env:"AUTHARA_PUBLIC_ORGANIZATION_MANAGEMENT_ENABLED,default=false"`
InvitationEmailIncludeCode bool `env:"AUTHARA_INVITATION_EMAIL_INCLUDE_CODE,default=false"`
InvitationTTLRaw string `env:"AUTHARA_ORGANIZATION_INVITATION_TTL,default=168h"`
InvitationTTL time.Duration
}
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 UI ¶ added in v0.10.0
type UI struct {
DefaultReturnTo string `env:"AUTHARA_DEFAULT_RETURN_TO,default=/"`
}
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"`
Timeout time.Duration `env:"AUTHARA_WEBHOOK_TIMEOUT,default=5s"`
WorkerCount int `env:"AUTHARA_WEBHOOK_WORKER_COUNT,default=2"`
MaxDeliveryAttempts int `env:"AUTHARA_WEBHOOK_MAX_DELIVERY_ATTEMPTS,default=3"`
ProcessingStaleAfter time.Duration `env:"AUTHARA_WEBHOOK_PROCESSING_STALE_AFTER,default=2m"`
StaleReaperInterval time.Duration `env:"AUTHARA_WEBHOOK_STALE_REAPER_INTERVAL,default=1m"`
DeliveredRetention time.Duration `env:"AUTHARA_WEBHOOK_DELIVERED_RETENTION,default=24h"`
FailedRetention time.Duration `env:"AUTHARA_WEBHOOK_FAILED_RETENTION,default=720h"`
CleanupInterval time.Duration `env:"AUTHARA_WEBHOOK_CLEANUP_INTERVAL,default=1h"`
MaintenanceBatchSize int `env:"AUTHARA_WEBHOOK_MAINTENANCE_BATCH_SIZE,default=1000"`
URL string
EnabledEventSet map[string]struct{}
}
func (*Webhook) EventEnabled ¶ added in v0.1.3
Click to show internal directories.
Click to hide internal directories.