Release 2023.10
Breaking changes
-
Requests with missing trailing slash are no longer redirected
In previous versions, requests to a path like
/api/v3/core/users
would be redirected to[...]/users/
. This redirect would cause mutating requests (such as POST, PUT and PATCH) to fail as they would get redirected to[...]/users/
. The redirect has been disabled, which will not have have an impact on a correctly configured setup. -
It is only possible to upgrade to 2023.10 from 2023.8. This is due to a bug in the migrations which will be fixed in a future release (#7326).
-
Warning: The first 2024.x version of this chart will see a rework that will include breaking changes. The breaking changes will be noted in the next Release notes.
New features
-
RBAC (preview)
With this release we're introducing the ability to finely configure permissions within authentik. These permissions can be used to delegate different tasks, such as user management, application creation and more to users without granting them full superuser permissions. With this system, a least-privilege system can also be implemented much more easily. See more info here
-
LDAP Provider improvements
The LDAP Provider now has an expanded schema, increasing the compatibility with clients that use the LDAP schema to parse data and .Net applications on Windows.
-
Improved Proxy provider logout
The proxy provider will now terminate all sessions when a user logs out of authentik or their session expires.
-
LDAP Source structure mirroring
The LDAP Source has a new default property mapping called
authentik default LDAP Mapping: DN to User Path
which will map the LDAP users' DN to the user path in authentik, keeping the same structure as the directory the source syncs from. -
OAuth Source OIDC auto-refresh
OAuth sources that have a OIDC Well-known URL or OIDC JWKS URL set will periodically be updated to use the correct configuration based on the configured URLs.
Upgrading
This release does not introduce any new requirements.
docker-compose
To upgrade, download the new docker-compose file and update the Docker stack with the new version, using these commands:
wget -O docker-compose.yml https://goauthentik.io/version/2023.10/docker-compose.yml
docker-compose up -d
The -O
flag retains the downloaded file's name, overwriting any existing local file with the same name.
Kubernetes
Upgrade the Helm Chart to the new version, using the following commands:
helm repo update
helm upgrade authentik authentik/authentik -f values.yaml --version ^2023.10
Minor changes/fixes
- blueprints: fix mismatched user-login stage order (#7030)
- ci: test with postgres 16
- core/api: add uuid field to core api user http response (#7110)
- core: Initial RBAC (#6806)
- core: Use branding_title in the end session page (#7282)
- core: prevent self-impersonation (#6885)
- core: remove celery's duplicate max_tasks_per_child (#6840)
- events: fix error when storing events with date/time/datetime/etc (#7028)
- flows: remove need for post() wrapper by using dispatch (#6765)
- flows: stage_invalid() makes flow restart depending on invalid_response_action setting (#6780)
- outposts: use channel groups instead of saving channel names (#7183)
- policies/reputation: require either check to be enabled (#6764)
- policies: fix cached policy metric (#7068)
- providers/ldap: add windows adsi support (#7098)
- providers/proxy: improve SLO by backchannel logging out sessions (#7099)
- providers/radius: TOTP MFA support (#7217)
- providers/saml: add default RelayState value for IDP-initiated requests (#7100)
- providers/saml: set WantAuthnRequestsSigned in metadata (#6851)
- providers/scim: check that a provider exists before starting scim task (#6841)
- providers/scim: remove preview banner (#7166)
- root: add option to disable beat when running worker (#6849)
- root: connect to backend via socket (#6720)
- root: disable APPEND_SLASH (#6928)
- root: extended flow and policy metrics (#7067)
- root: handle SIGHUP and SIGUSR2, healthcheck gunicorn (#6630)
- root: make Celery worker concurrency configurable (#6837)
- root: replace boj/redistore with vendored version of rbcervilla/redisstore (#6988)
- sources/ldap: add default property mapping to mirror directory structure (#6990)
- sources/ldap: add lock to sync (#6930)
- sources/ldap: add warning when a property mapping returns None or bytes (#6913)
- sources/ldap: fix FreeIPA nsaccountlock sync (#6745)
- sources/ldap: fix attribute path resolution (#7090)
- sources/ldap: fix inverted interpretation of FreeIPA nsaccountlock (#6877)
- sources/ldap: fix task timeout for ldap_sync_all and ldap_sync_single (#6809)
- sources/oauth: fix oidc well-known parsing (#7248)
- sources/oauth: include default JWKS URLs for OAuth sources (#6992)
- sources/oauth: periodically update OAuth sources' OIDC configuration (#7245)
- stages/authenticator_sms: fix error when phone number from context already exists (#7264)
- stages/authenticator: vendor otp (#6741)
- stages/deny: add custom message (#7144)
- stages/email: Fix query parameters getting lost in Email links (#5376)
- stages/email: rework email templates (#7029)
- stages/invitation: fix mis-matched serializer class for invitation (#7018)
- stages/password: fix failed_attempts_before_cancel allowing one too many (#6763)
- web/admin: add additional Flow info (#7155)
- web/admin: fix application icon size (#6738)
- web/admin: fix flow-search not being able to unset (#6838)
- web/admin: fix not being able to unset certificates (#6767)
- web/admin: fix prompt form and codemirror mode (#7231)
- web/admin: fix webauthn label order, add raw value (#6905)
- web/admin: improve user email button labels (#7233)
- web/admin: invitation stage: default "continue without invitation" to false
- web/admin: use
<pre>
for order field on bound elements (#7031) - web/admin: user details few tooltip buttons (#6899)
- web/flows: fix plex login not opening new tab on mobile safari (#7050)
- web/user: fix incorrect link to admin interface (#6993)
- web/user: fix unenrollment flow not being shown (#6972)
- web: change 'Attributes' to 'Custom attributes' on Invitation Field (#7145)
- web: the return of pseudolocalization (#7190)
Fixed in 2023.10.1
- lifecycle: fix otp merge migration (#7315)
Fixed in 2023.10.2
- *: fix GHSA-rjvp-29xq-f62w.md, reported by @devSparkle
- blueprints: fix entries with state: absent not being deleted if their serializer has errors (#7345)
- crypto: fix race conditions when creating self-signed certificates on startup (#7344)
- lifecycle: rework otp_merge migration (#7359)
- providers/proxy: to fix duplicate cookie (#7324)
- rbac: handle lookup error (#7341)
- stages/email: fix sending emails from task (#7325)
- web/admin: fix @change handler for ak-radio elements (#7348)
- web/admin: fix role form reacting to enter (#7330)
Fixed in 2023.10.3
- ci: explicitly give write permissions to packages (cherry-pick #7428) (#7430)
- core: fix worker beat toggle inverted (cherry-pick #7508) (#7509)
- events: fix gdpr compliance always running (cherry-pick #7491) (#7505)
- providers/oauth2: set auth_via for token and other endpoints (cherry-pick #7417) (#7427)
- providers/proxy: fix closed redis client (cherry-pick #7385) (#7429)
- root: Improve multi arch Docker image build speed (cherry-pick #7355) (#7426)
- sources/oauth: fix patreon (cherry-pick #7454) (#7456)
- stages/email: fix duplicate querystring encoding (cherry-pick #7386) (#7425)
- web: bugfix: broken backchannel selector (cherry-pick #7480) (#7507)
- web/admin: fix html error on oauth2 provider page (cherry-pick #7384) (#7424)
- web/flows: attempt to fix bitwareden android compatibility (cherry-pick #7455) (#7457)
Fixed in 2023.10.4
- ci: fix permissions for release pipeline to publish binaries (cherry-pick #7512) (#7621)
- core: bump golang from 1.21.3-bookworm to 1.21.4-bookworm (cherry-pick #7483) (#7622)
- events: don't update internal service accounts unless needed (cherry-pick #7611) (#7640)
- events: fix missing model_* events when not directly authenticated (cherry-pick #7588) (#7597)
- events: sanitize functions (cherry-pick #7587) (#7589)
- providers/proxy: Fix duplicate cookies when using file system store. (cherry-pick #7541) (#7544)
- providers/scim: fix missing schemas attribute for User and Group (cherry-pick #7477) (#7596)
- root: specify node and python versions in respective config files, deduplicate in CI (#7620)
- security: fix CVE-2023-48228, Reported by @Sapd (#7666)
- stages/email: use uuid for email confirmation token instead of username (cherry-pick #7581) (#7584)
- web/admin: fix admins not able to delete MFA devices (#7660)
Fixed in 2023.10.5
- blueprints: improve file change handler (cherry-pick #7813) (#7934)
- events: add better fallback for sanitize_item to ensure everything can be saved as JSON (cherry-pick #7694) (#7937)
- events: fix lint (#7700)
- events: include user agent in events (cherry-pick #7693) (#7938)
- providers/scim: change familyName default (cherry-pick #7904) (#7930)
- root: don't show warning when app has no URLs to import (cherry-pick #7765) (#7935)
- root: Fix cache related image build issues (cherry-pick #7831) (#7932)
- stages/email: improve error handling for incorrect template syntax (cherry-pick #7758) (#7936)
- tests: fix flaky tests (cherry-pick #7676) (#7939)
- web: dark/light theme fixes (#7872)
- web: fix overflow glitch on ak-page-header (cherry-pick #7883) (#7931)
- web/admin: always show oidc well-known URL fields when they're set (#7560)
- web/user: fix search not updating app (cherry-pick #7825) (#7933)
Fixed in 2023.10.6
- core: fix PropertyMapping context not being available in request context
- outposts: disable deployment and secret reconciler for embedded outpost in code instead of in config (cherry-pick #8021) (#8024)
- outposts: fix Outpost reconcile not re-assigning managed attribute (cherry-pick #8014) (#8020)
- providers/oauth2: fix CVE-2024-21637, Reported by @lauritzh (#8104)
- providers/oauth2: remember session_id from initial token (cherry-pick #7976) (#7977)
- providers/proxy: use access token (cherry-pick #8022) (#8023)
- rbac: fix error when looking up permissions for now uninstalled apps (cherry-pick #8068) (#8070)
- sources/oauth: fix missing get_user_id for OIDC-like sources (Azure AD) (#7970)
- web/flows: fix device picker incorrect foreground color (cherry-pick #8067) (#8069)
Fixed in 2023.10.7
- providers/oauth2: fix fix CVE-2024-23647 (cherry-pick #8345) (#8347)
- rbac: fix invitations listing with restricted permissions (cherry-pick #8227) (#8229)
- root: fix listen trusted_proxy_cidrs config loading from environment (#8075)
- root: fix redis config not being updated to match previous change
- sources/oauth: fix azure_ad user_id and add test and fallback (cherry-pick #8146) (#8152)
- sources/oauth: fix URLs being overwritten by OIDC urls (cherry-pick #8147) (#8156)
- sources/oauth: revert azure_ad profile URL change (cherry-pick #8139) (#8141)
- stages/authenticator_validate: use friendly_name for stage selector when enrolling (cherry-pick #8255) (#8256)
- web/flows: fix icon for generic oauth source with dark theme (cherry-pick #8148) (#8151)
API Changes
What's New
PUT
/core/transactional/applications/
GET
/rbac/permissions/
GET
/rbac/permissions/{id}/
GET
/rbac/permissions/assigned_by_roles/
POST
/rbac/permissions/assigned_by_roles/{uuid}/assign/
PATCH
/rbac/permissions/assigned_by_roles/{uuid}/unassign/
GET
/rbac/permissions/assigned_by_users/
POST
/rbac/permissions/assigned_by_users/{id}/assign/
PATCH
/rbac/permissions/assigned_by_users/{id}/unassign/
GET
/rbac/permissions/roles/
GET
/rbac/permissions/users/
GET
/rbac/roles/
POST
/rbac/roles/
GET
/rbac/roles/{uuid}/
PUT
/rbac/roles/{uuid}/
DELETE
/rbac/roles/{uuid}/
PATCH
/rbac/roles/{uuid}/
GET
/rbac/roles/{uuid}/used_by/
What's Changed
GET
/authenticators/admin/totp/{id}/
Parameters:
Changed: id
in path
A unique integer value identifying this TOTP Device.
PUT
/authenticators/admin/totp/{id}/
Parameters:
Changed: id
in path
A unique integer value identifying this TOTP Device.
DELETE
/authenticators/admin/totp/{id}/
Parameters:
Changed: id
in path
A unique integer value identifying this TOTP Device.
PATCH
/authenticators/admin/totp/{id}/
Parameters:
Changed: id
in path
A unique integer value identifying this TOTP Device.
GET
/authenticators/totp/{id}/
Parameters:
Changed: id
in path
A unique integer value identifying this TOTP Device.
PUT
/authenticators/totp/{id}/
Parameters:
Changed: id
in path
A unique integer value identifying this TOTP Device.
DELETE
/authenticators/totp/{id}/
Parameters:
Changed: id
in path
A unique integer value identifying this TOTP Device.
PATCH
/authenticators/totp/{id}/
Parameters:
Changed: id
in path
A unique integer value identifying this TOTP Device.
POST
/core/groups/{group_uuid}/add_user/
Parameters:
Changed: group_uuid
in path
A UUID string identifying this Group.
POST
/core/groups/{group_uuid}/remove_user/
Parameters:
Changed: group_uuid
in path
A UUID string identifying this Group.
GET
/enterprise/license/{license_uuid}/
Parameters:
Changed: license_uuid
in path
A UUID string identifying this License.
PUT
/enterprise/license/{license_uuid}/
Parameters:
Changed: license_uuid
in path
A UUID string identifying this License.
DELETE
/enterprise/license/{license_uuid}/
Parameters:
Changed: license_uuid
in path
A UUID string identifying this License.
PATCH
/enterprise/license/{license_uuid}/
Parameters:
Changed: license_uuid
in path
A UUID string identifying this License.
GET
/outposts/instances/{uuid}/health/
Parameters:
Changed: uuid
in path
A UUID string identifying this Outpost.
GET
/outposts/radius/{id}/
Return Type:
Changed response : 200 OK
-
Changed content type :
application/json
- Added property
mfa_support
(boolean)When enabled, code-based multi-factor authentication can be used by appending a semicolon and the TOTP code to the password. This should only be enabled if all users that will bind to this provider have a TOTP device configured, as otherwise a password may incorrectly be rejected if it contains a semicolon.
- Added property