Integrations and contracts¶
This document provides the technical reference for network port allocations, charm endpoint definitions, and Juju relation databag contracts across the Charmed Authentik suite.
Network ports and entrypoints¶
Component |
Port |
Protocol |
Relation / Scope |
Description |
|---|---|---|---|---|
``authentik-server`` |
|
TCP / HTTP |
|
Primary administrative web UI, user portal, and REST API. |
|
TCP / HTTPS |
Opened on unit |
Opened container port; unused by the charm’s default HTTP traffic routing. |
|
|
TCP / HTTP |
|
Prometheus metrics listener (scraped pod-to-pod, not opened on unit). |
|
``authentik-worker`` |
|
TCP / HTTP |
|
Prometheus metrics listener (scraped pod-to-pod, not opened on unit). |
``authentik-ldap-outpost`` |
|
TCP / LDAP |
Opened on unit |
Cleartext LDAP listener running in the workload container. Traefik backend target. |
|
TCP / LDAPS |
|
External LDAPS entrypoint terminated at Traefik with TLS. |
|
|
TCP / LDAP |
|
Optional cleartext LDAP entrypoint (exposed when |
|
|
TCP / HTTP |
|
Prometheus metrics listener (scraped pod-to-pod, not opened on unit). |
SNI routing and ingress behavior¶
LDAPS (Port 636): Traefik routes incoming TLS traffic to the outpost backend on port 3389. When
ingress_domainis configured, Traefik matches viaHostSNI("<domain>"). If unset, it defaults toHostSNI("*"), which causes collisions if multiple outposts share the same Traefik instance.Plain LDAP (Port 389): When enabled, Traefik routes cleartext TCP using
HostSNI("*"). Theingress_domainsetting does not affect Port 389.StartTLS: Opportunistic StartTLS on Port 389 is not supported (
starttls=Falseis hardcoded). All encrypted directory access must use implicit LDAPS on Port 636.
Charm endpoint inventory¶
Authentik Server (authentik-server)¶
Endpoint |
Direction |
Interface |
Limit / Optional |
Description |
|---|---|---|---|---|
|
Requires |
|
Limit: 1, Mandatory |
PostgreSQL database relation. |
|
Requires |
|
Limit: 1, Mandatory |
Ingress integration for web UI and API routing. |
|
Requires |
|
Optional |
Log forwarding to Loki. |
|
Requires |
|
Limit: 1, Optional |
OTLP trace forwarding to Tempo. |
|
Requires |
|
Optional |
Outbound CA trust certificate transfer. |
|
Requires |
|
Limit: 1, Optional |
Outbound email notification integration. |
|
Provides |
|
Mandatory |
Cluster key and database credentials for worker units. |
|
Provides |
|
Optional |
Server URL and API automation token for outposts. |
|
Provides |
|
Optional |
Dynamic OIDC / OAuth2 integration for consumer apps. |
|
Provides |
|
Optional |
Prometheus application metrics scraping. |
|
Provides |
|
Optional |
Built-in Grafana dashboard provisioning. |
|
Peer |
|
N/A |
Unit clustering and state coordination. |
Authentik Worker (authentik-worker)¶
Endpoint |
Direction |
Interface |
Limit / Optional |
Description |
|---|---|---|---|---|
|
Requires |
|
Optional |
Receives cluster secret key and DB config from server. |
|
Requires |
|
Optional |
Log forwarding to Loki. |
|
Requires |
|
Limit: 1, Optional |
OTLP trace forwarding to Tempo. |
|
Provides |
|
Optional |
Prometheus metrics scraping. |
|
Provides |
|
Optional |
Built-in Grafana dashboard provisioning. |
Authentik LDAP Outpost (authentik-ldap-outpost)¶
Endpoint |
Direction |
Interface |
Limit / Optional |
Description |
|---|---|---|---|---|
|
Requires |
|
Optional |
Receives server API URL and automation token. |
|
Requires |
|
Limit: 1, Optional |
Ingress routing for LDAPS and LDAP entrypoints. |
|
Requires |
|
Optional |
Log forwarding to Loki. |
|
Requires |
|
Limit: 1, Optional |
OTLP trace forwarding to Tempo. |
|
Provides |
|
Mandatory |
LDAP directory service relation for consumer apps. |
|
Provides |
|
Optional |
Prometheus metrics scraping. |
|
Provides |
|
Optional |
Built-in Grafana dashboard provisioning. |
|
Peer |
|
N/A |
Outpost clustering and coordination. |
Relation databag contracts¶
authentik-cluster relation contract¶
Interface:
authentik_clusterProvider:
authentik-server| Requirer:authentik-workerApplication Databag Fields:
Field
Description
secret_key_secret_idJuju Secret ID holding
secret-keyanddb-password.db_hostPrimary database host address.
db_portPrimary database port.
db_userDatabase username.
db_nameThe server requests the database
authentikand forwards the name to workers unchanged.db_read_replicasComma-separated
host:portread replica addresses (empty if none).db_use_pgbouncer"true"when using PgBouncer in transaction pooling mode.server_versionAuthentik server workload version string.
authentik-server-info relation contract¶
Interface:
authentik_server_infoProvider:
authentik-server| Requirer:authentik-ldap-outpostApplication Databag Fields:
Field
Description
authentik_hostIn-cluster HTTP API URL of the Authentik server (e.g.
http://<server-app>.<model>.svc.cluster.local:9000).authentik_token_secret_idJuju Secret ID holding the administrative API token (key:
api-token).
ldap relation contract¶
Interface:
ldapProvider:
authentik-ldap-outpost| Requirer: Downstream LDAP clients (e.g.,sssd)Application Databag Fields:
Field
Description
urlsJSON-formatted list with a single cleartext LDAP URL (e.g.
["ldap://outpost.example.com:389"]or in-cluster["ldap://<app>.<model>.svc:3389"]).ldaps_urlsJSON-formatted list with the LDAPS URL (e.g.
["ldaps://outpost.example.com:636"]). Empty list when LDAPS is not active.base_dnBase Distinguished Name (default:
dc=ldap,dc=goauthentik,dc=io).bind_dnUnique dynamically generated user DN (e.g.
cn=ldap-client-...,ou=users,dc=ldap,...).bind_password_secretJuju Secret URI granting access to the secret containing the
passwordkey.starttlsAlways
False.auth_methodAlways
"simple".ldaps_enabled"true"or"false", indicating whether LDAPS is terminated and active at Traefik.