From a95e730cdb00ec6af219e037ce06c9ab6aebe7e4 Mon Sep 17 00:00:00 2001 From: Marc 'risson' Schmitt Date: Thu, 5 Jun 2025 19:56:31 +0200 Subject: [PATCH] wip Signed-off-by: Marc 'risson' Schmitt --- authentik/providers/proxy/tasks.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 authentik/providers/proxy/tasks.py diff --git a/authentik/providers/proxy/tasks.py b/authentik/providers/proxy/tasks.py new file mode 100644 index 0000000000..f742be2e48 --- /dev/null +++ b/authentik/providers/proxy/tasks.py @@ -0,0 +1,26 @@ +"""proxy provider tasks""" + +from asgiref.sync import async_to_sync +from channels.layers import get_channel_layer +from dramatiq.actor import actor + +from authentik.outposts.consumer import OUTPOST_GROUP +from authentik.outposts.models import Outpost, OutpostType +from authentik.providers.oauth2.id_token import hash_session_key + + +@actor +def proxy_on_logout(session_id: str): + """Update outpost instances connected to a single outpost""" + layer = get_channel_layer() + hashed_session_id = hash_session_key(session_id) + for outpost in Outpost.objects.filter(type=OutpostType.PROXY): + group = OUTPOST_GROUP % {"outpost_pk": str(outpost.pk)} + async_to_sync(layer.group_send)( + group, + { + "type": "event.provider.specific", + "sub_type": "logout", + "session_id": hashed_session_id, + }, + )