diff --git a/www/caddy/Makefile b/www/caddy/Makefile
index cde2e3915..1c2aedae1 100644
--- a/www/caddy/Makefile
+++ b/www/caddy/Makefile
@@ -1,5 +1,5 @@
PLUGIN_NAME= caddy
-PLUGIN_VERSION= 1.6.1
+PLUGIN_VERSION= 1.6.2
PLUGIN_DEPENDS= caddy-custom
PLUGIN_COMMENT= Easy to configure Reverse Proxy with Automatic HTTPS and Dynamic DNS
PLUGIN_MAINTAINER= cedrik@pischem.com
diff --git a/www/caddy/pkg-descr b/www/caddy/pkg-descr
index 7ef7b776b..4c2b95605 100644
--- a/www/caddy/pkg-descr
+++ b/www/caddy/pkg-descr
@@ -25,6 +25,10 @@ DOC: https://docs.opnsense.org/manual/how-tos/caddy.html
Plugin Changelog
================
+1.6.2
+
+* Add Authentik as authentication provider (contributed by Tim-Sc)
+
1.6.1
Add: Run Caddy as "www" user and group, by enabling "Disable Superuser" in General Settings.
diff --git a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/authprovider.xml b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/authprovider.xml
index 1790ceda4..29527af13 100644
--- a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/authprovider.xml
+++ b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/authprovider.xml
@@ -3,7 +3,7 @@
caddy.general.AuthProvider
dropdown
-
+
caddy.general.AuthToDomain
diff --git a/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml b/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml
index c5f3474de..38cec5fc2 100644
--- a/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml
+++ b/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml
@@ -129,6 +129,7 @@
None (default)
Authelia
+ Authentik
diff --git a/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/includeAuthProvider b/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/includeAuthProvider
index 4bf4b09ef..8dd207f85 100644
--- a/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/includeAuthProvider
+++ b/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/includeAuthProvider
@@ -2,12 +2,28 @@
# This file gets imported to configure forward auth in handlers.
# - Section: Reverse Proxy Configurations
#}
-{% if generalSettings.AuthProvider == 'authelia' %}
+{% if generalSettings.AuthProvider %}
{# Check if the domain is IPv6 and wrap in square brackets if necessary #}
{% set is_ipv6 = (':' in generalSettings.AuthToDomain and generalSettings.AuthToDomain.count(':') >= 2) %}
- forward_auth {% if generalSettings.AuthToTls|default("0") == "1" %}https://{% endif %}{{ '[' if is_ipv6 else '' }}{{ generalSettings.AuthToDomain|default("") }}{{ ']' if is_ipv6 else '' }}{% if generalSettings.AuthToPort %}:{{ generalSettings.AuthToPort }}{% endif %} {
- {% if generalSettings.AuthToUri %}uri {{ generalSettings.AuthToUri|default("") }}{% endif %}
-
+ {% set auth_url = (generalSettings.AuthToTls|default("0") == "1" and 'https://' or 'http://') + (is_ipv6 and '[' or '') + generalSettings.AuthToDomain|default("") + (is_ipv6 and ']' or '') + (generalSettings.AuthToPort and ':' + generalSettings.AuthToPort or '') %}
+{% endif %}
+{% if generalSettings.AuthProvider == 'authelia' %}
+ forward_auth {{ auth_url }} {
+ {% if generalSettings.AuthToUri %}
+ uri {{ generalSettings.AuthToUri|default("") }}
+ {% endif %}
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
}
+{% elif generalSettings.AuthProvider == 'authentik' %}
+ reverse_proxy /outpost.goauthentik.io/* {{ auth_url }} {
+ {% if generalSettings.AuthToTls|default("0") == "1" %}
+ header_up Host {http.reverse_proxy.upstream.hostport}
+ {% endif %}
+ }
+ forward_auth {{ auth_url }} {
+ {% if generalSettings.AuthToUri %}
+ uri {{ generalSettings.AuthToUri|default("") }}
+ {% endif %}
+ copy_headers X-Authentik-Username X-Authentik-Groups X-Authentik-Email X-Authentik-Name X-Authentik-Uid X-Authentik-Jwt X-Authentik-Meta-Jwks X-Authentik-Meta-Outpost X-Authentik-Meta-Provider X-Authentik-Meta-App X-Authentik-Meta-Version
+ }
{% endif %}