# Authentication
MediaManager supports multiple authentication methods. Email/password authentication is the default, but you can also
enable OpenID Connect (OAuth 2.0) for integration with external identity providers.
Note the lack of a trailing slash in some env vars like FRONTEND_URL. This is important.
| Variable | Description | Default | Example | Required |
|-------------------------|--------------------------------------------------------------------------|-----------------|-------------------------------------------|----------|
| `AUTH_TOKEN_SECRET` | Strong secret key for signing JWTs (create with `openssl rand -hex 32`). | - | `AUTH_TOKEN_SECRET=your_super_secret_key` | Yes |
| `AUTH_SESSION_LIFETIME` | Lifetime of user sessions in seconds. | `86400` (1 day) | `AUTH_SESSION_LIFETIME=604800` (1 week) | No |
| `AUTH_ADMIN_EMAIL` | Email address of the administrator accounts. | - | `AUTH_ADMIN_EMAIL=admin@example.com` | Yes |
| `FRONTEND_URL` | The url the frontend will be accessed from. | - | `https://mediamanager.example` | Yes |
On login/registration, every user whose email is in `AUTH_ADMIN_EMAIL` will be granted admin privileges.
Users whose email is not in `AUTH_ADMIN_EMAIL` will be regular users and will need to be verified by an administrator,
this can be done in the settings page.
## OpenID Connect (OAuth 2.0)
| Variable | Description | Default | Example |
|---------------------------------|--------------------------------------------------------------------------------------------------|----------|---------------------------------------------------------------------------------------------|
| `OPENID_ENABLED` | Enables OpenID authentication | `FALSE` | `TRUE` |
| `OPENID_CLIENT_ID` | Client ID from your OpenID provider. | - | - |
| `OPENID_CLIENT_SECRET` | Client Secret from your OpenID provider. | - | - |
| `OPENID_CONFIGURATION_ENDPOINT` | URL of your OpenID provider's discovery document (e.g., `.../.well-known/openid-configuration`). | - | `https://authentik.example.com/application/o/mediamanager/.well-known/openid-configuration` |
| `OPENID_NAME` | Display name for this OpenID provider. | `OpenID` | `Authentik` |
### Configuring OpenID Connect
1. Set `OPENID_ENABLED=TRUE`
2. Configure the following environment variables:
* `OPENID_CLIENT_ID`
* `OPENID_CLIENT_SECRET`
* `OPENID_CONFIGURATION_ENDPOINT`
* `OPENID_NAME` (optional)
* `FRONTEND_URL` (it is important that this is set correctly, as it is used for the redirect URIs)
3. Your OpenID server will likely want a redirect URI. This URL will be like:
`{FRONTEND_URL}/api/v1/auth/cookie/{OPENID_NAME}/callback`. The exact path depends on the `OPENID_NAME`.
4. Example URL: `https://mediamanager.example/api/v1/auth/cookie/Authentik/callback`