# IAM Server Configuration Example
#
# Copy this file to iam.toml and adjust the settings.
#
# Admin API protection:
#   Set environment variable IAM_ADMIN_TOKEN (or PHOTON_IAM_ADMIN_TOKEN) to
#   require an admin token for all IamAdminService gRPC calls.

[server]
# Listen address
addr = "0.0.0.0:50051"

# TLS configuration (optional)
# [server.tls]
# cert_file = "/etc/iam/certs/server.crt"
# key_file = "/etc/iam/certs/server.key"
# ca_file = "/etc/iam/certs/ca.crt"
# require_client_cert = false

[store]
# Backend type: "flaredb", "postgres", "sqlite", or "memory" (memory is test/dev only)
backend = "flaredb"

# FlareDB backend configuration
flaredb_endpoint = "127.0.0.1:2479"
flaredb_namespace = "iam"

# SQL backend configuration (required when backend is "postgres" or "sqlite")
# database_url = "postgres://iam:secret@127.0.0.1:5432/iam"
# SQLite is supported only in single-node mode
# single_node = true

[cluster]
# ChainFire endpoint for cluster coordination only
# chainfire_endpoint = "http://localhost:2379"

[authn]
# JWT/OIDC configuration (optional)
# [authn.jwt]
# jwks_url = "https://auth.example.com/.well-known/jwks.json"
# issuer = "https://auth.example.com"
# audience = "iam"
# jwks_cache_ttl_seconds = 3600

# Internal token configuration
[authn.internal_token]
# Signing key for internal tokens
# IMPORTANT: Change this to a secure random value in production!
signing_key = "change-this-to-a-secure-random-value-in-production"
issuer = "iam"
default_ttl_seconds = 3600      # 1 hour
max_ttl_seconds = 604800        # 7 days

[logging]
# Log level: "trace", "debug", "info", "warn", "error"
level = "info"
# Log format: "text" or "json"
format = "text"
