In previous authentik versions, invitations were considered valid regardless if they are expired or not, thus relying on background tasks to clean up expired ones. In a normal scenario this can take up to 5 minutes because the cleanup of expired objects is scheduled to run every 5 minutes. However, with a large amount of tasks in the backlog, this might take longer.
authentik 2025.8.5 and 2025.10.2 fix this issue; for other versions the workaround below can be used.
Users can create a policy that explicitly checks whether the invitation is still valid, and then bind it to the invitation stage on your invitation flow, and deny access if the invitation is not valid.
return not context['flow_plan'].context['invitation'].is_expired
If users have any questions or comments about this advisory:
{
"severity": "MODERATE",
"cwe_ids": [
"CWE-613"
],
"nvd_published_at": "2025-11-19T17:15:52Z",
"github_reviewed_at": "2025-11-19T18:47:07Z",
"github_reviewed": true
}