# oauth2-proxy config for Backup Dashboard's Microsoft 365 (Entra ID) sign-in. # Install as /etc/oauth2-proxy/backup-dashboard.cfg, readable only by root and the oauth2-proxy # user (it holds the cookie secret). Needs oauth2-proxy 7.8 or newer for the entra-id provider. # Replace the four <...> values; see the README's "Microsoft 365 sign-in" section. ## Where it listens: only nginx talks to it http_address = "127.0.0.1:4180" reverse_proxy = true # Only nginx (on this machine) may supply X-Forwarded-* headers trusted_proxy_ips = ["127.0.0.1/32", "::1/128"] ## Entra ID app registration (single tenant) provider = "entra-id" oidc_issuer_url = "https://login.microsoftonline.com//v2.0" client_id = "" # The client secret's *value*, in a file of its own, root:oauth2-proxy, mode 640 client_secret_file = "/etc/oauth2-proxy/client-secret" redirect_url = "https:///oauth2/callback" ## Who may sign in # Anyone in the tenant that Entra lets through. Limit it in Entra itself: Enterprise # applications -> this app -> Properties -> "Assignment required" = Yes, then assign users or a # group. Entra then refuses everyone else before they ever reach the dashboard. email_domains = ["*"] # The user's sign-in name (UPN), which every work account has. The "email" claim is only present # when the account has a mailbox address. oidc_email_claim = "preferred_username" ## Session cookie # Generate with: openssl rand -base64 32 | tr -- '+/' '-_' cookie_secret = "" cookie_name = "_backup_dashboard" cookie_secure = true cookie_samesite = "lax" # Sign in again (usually silently, via the Microsoft session) after this long cookie_expire = "12h" ## Behaviour with nginx's auth_request # Auth-only: nginx serves the dashboard; oauth2-proxy just answers "signed in or not" upstreams = ["static://202"] # Put the user in X-Auth-Request-* headers on /oauth2/auth responses, for nginx to pass on set_xauthrequest = true # Go straight to Microsoft instead of showing a "Sign in with..." page first skip_provider_button = true # Allow "Sign out" to continue to Microsoft's sign-out page whitelist_domains = ["login.microsoftonline.com"]