Release 2024.8
Highlights
- Source property mappings for SCIM, OAuth, SAML, and Plex sources: All sources now support property mappings to configure how authentik interprets the incoming source's data. Additionally, groups can be synced from all sources that provide group info.
- RADIUS provider custom attribute support: Integrate RADIUS better into network infrastructure by sending vendor-specific attributes based on the user authenticating.
- SAML encryption support: SAML source and provider support encryption now, which prevents anyone from viewing the information of in-flight assertions.
- RBAC support for blueprints and Terraform: Permissions can now be assigned and automated using both blueprints and Terraform.
Breaking changes
Manual action is required
-
LDAP property mappings simplification
LDAP property mappings have been reworked to remove Object field. With this release, instead of returning a single user or group attribute for each property mapping, you can now return several of them. Here is an example of what new property mappings look like:
return {
"username": ldap.get("uid"), # list_flatten is automatically applied to top-level attributes
"attributes": {
"phone": list_flatten(ldap.get("phoneNumber")), # but not for attributes!
},
}This property mapping populates the
username
andattributes.phone
attributes of a user at the same time, reducing the number of mappings that are run and thus improving performance. Additionally, they are more straightforward to read, and this change allowed us to implement property mappings for OAuth and SAML sources as well.authentik will automatically convert existing property mappings to this new format, by generating some Python code for each of the existing property mappings expressions. Property mappings that are managed by authentik will automatically get updated to the new format.
If you have any custom property mappings, we recommend converting them to this new format.
-
OAuth and SAML sources now sync groups by default
OAuth (specifically OpenID and Okta) sources now sync groups by default when a
groups
claim is available.SAML sources now sync groups by default when a
http://schemas.xmlsoap.org/claims/Group
attribute is available in the assertion.To disable that behavior, create an OAuth/SAML source property mapping with the expression below and assign it as a user property mapping on the source.
return {
"groups": [],
} -
Terraform Resource rename
Several resources in the Terraform provider have been renamed to align with new functionality. This mainly applies to property mapping-related resources. With the authentik version 2024.8.1 of the Terraform provider, both the old and new resources are available, and resources can be moved to the new name using
terraform state mv
.These resources have been renamed:
authentik_property_mapping_google_workspace
authentik_property_mapping_ldap
authentik_property_mapping_microsoft_entra
authentik_property_mapping_rac
authentik_property_mapping_radius
authentik_property_mapping_saml
authentik_property_mapping_scim
Manual action may be required
-
Changes to the external user type
Since the introduction of user types with 2023.8, the main difference between internal and external users has mostly been relevant when using the Enterprise version of authentik.
With this release, authentik improves support for B2C use-cases, which external users are intended for. It is now possible to configure a default application. External users not attempting to access a specific application will always be redirected to this default application.
As part of this, external users will no longer have access to the User and Admin interfaces. If you're using the open-source version and you require this workflow, you can change users to be Internal, which will have no side-effects. For Enterprise customers, please reach out to us with any questions.
Bulk changing the user type
In the container, run the commandak change_user_type --all --type internal
to change all users to Internal. Instead of using--all
you can also pass usernames to the command to only change individual users to internal. -
Changed HTTP healthcheck endpoints status code
For increased compatibility, the
/-/health/live/
and/-/health/ready/
endpoints return 200 HTTP Status codes for successful checks. Previously these endpoints returned 204, which means in most cases no changes are required.
New features
-
Source property mappings for SCIM, OAuth, SAML and Plex sources
All source types now support property mappings to customize how authentik should interpret the data the source provides. In addition to that, it is also now possible to sync groups and group membership from sources that provide group information. See Property Mappings.
-
RADIUS provider custom attribute support
With 2024.8 it is possible to define custom attributes for the RADIUS provider, for example vendor-specific attributes like Cisco's
AV-Pair
attribute. These attributes are defined in property mappings which means they can be dynamically defined based on the user authenticating. See RADIUS Provider -
SAML encryption support
It is now possible to configure SAML sources and providers to decrypt and validate encrypted assertions. This can be configured by creating a Certificate-keypair and selecting it in the SAML source or provider.
-
GeoIP Policy
With the new GeoIP Policy it is possible to grant/deny access based on Country and ASN, without having to write an expression policy.
-
Simplification of LDAP Provider permissions
The LDAP provider now uses RBAC to assign the appropriate permission to search the full directory instead of requiring a dedicated group to be created. As part of the upgrade, existing search groups' users are migrated to grant the required permission to search the full directory.
-
RBAC support for blueprints and Terraform
RBAC permissions for global/object level permissions for users/roles can now be managed via blueprints and Terraform. This allows for the automatic configuration of permissions.
-
UX improvements
In previous versions of authentik, there were several places in the Admin interface where you could not select more than 100 items. With this change, it is now possible to search for items and select more than 100 items.
-
WebFinger support
With the addition of the default application setting, when the default application uses an OIDC provider, a WebFinger endpoint is available now.
Upgrading
This release does not introduce any new requirements. You can follow the upgrade instructions below; for more detailed information about upgrading authentik, refer to our Upgrade documentation.
When you upgrade, be aware that the version of the authentik instance and of any outposts must be the same. We recommended that you always upgrade any outposts at the same time you upgrade your authentik instance.
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/2024.8/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 ^2024.8
Minor changes/fixes
- api: use custom json renderer for speed (#9977)
- blueprints: handle model referencing non-existent app/model (#10796)
- brands: add OIDC webfinger support (#10400)
- core: add index on enabled field of sources (#10572)
- core: add primitives for source property mappings (#10651)
- core: b2c improvements p1 (#9257)
- core: fix error when raising SkipObject in mapping (#10153)
- core: fix migrations missing using db_alias (#10409)
- core: fix source flow_manager not resuming flow when linking (#10436)
- core: fix URLValidator regex to allow single digit port (#10280)
- core: remove deprecated sentry-sdk method usage (#10648)
- core: remove html language tag for pages that are translated (#10611)
- core: remove transitionary old JS urls (#10317)
- core: rework base for SkipObject exception to better support control flow exceptions (#10186)
- enterprise: add support for license flags (#10842)
- enterprise: UI improvements, better handling of expiry (#10828)
- enterprise/rac: fix error when listing connection tokens as non-superuser (#10771)
- events: associate login_failed events to a user if possible (#10270)
- events: fix race condition (#10602)
- flows: remove stage challenge type (#10476)
- internal: Use loop instead of recursion in NewAPIController (#10745)
- lib/sync: handle SkipObject in direct triggered tasks (#10590)
- lifecycle: only create tenant media root if needed (#10616)
- outposts: add better UI for showing mismatched versions (#10885)
- outposts: ensure minimum refresh interval (#10701)
- outposts: implement general paginator for list API requests (#10619)
- outposts: make refresh interval configurable (#10138)
- policies: add GeoIP policy (#10454)
- policies/reputation: fix existing reputation update (#10124)
- providers: add provider/ prefix for property mappings API (#10874)
- providers/ldap: fix missing using in migrations (#10906)
- providers/ldap: Remove search group (#10639)
- providers/proxy: avoid erroring on logout with session_id is None (#9119)
- providers/proxy: fix Traefik label generation for v3 (#10411)
- providers/radius: Add support for custom attributes (#10509)
- providers/radius: fix custom attribute (#10704)
- providers/radius: property mapping docs (#10908)
- providers/saml: encryption support (#10934)
- providers/saml: fix incorrect migration for sign_response (#10975)
- providers/saml: fix metadata import error handling (#10349)
- providers/saml: remove redundant ACSUrl in POST (#10707)
- providers/scim: Fix exception handling for missing ServiceProviderConfig (#10322)
- rbac: generate blueprint schema permissions from defined models not DB (#10962)
- rbac: rework API for terraform, add blueprint support (#10698)
- root: allow extra sentry settings (#10269)
- root: dependency maintenance (#10689)
- root: Make health checks compatible with cloud platform load balancers (#10554)
- root: make pyrad a standard dependency (#10649)
- root: makefile: add codespell to make-website (#10116)
- root: only load daphne django app in development (#10723)
- root: use custom model serializer that saves m2m without bulk (#10139)
- sources: add property mappings for all oauth and saml sources (#8771)
- sources: introduce new property mappings per user and group (#8750)
- sources: refactor user connection api (#10607)
- sources/ldap: Add enabled filter for ldap_password_validate signal (#10823)
- sources/ldap: fix migrations failing (#10588)
- sources/ldap: rename ldappropertymapping to ldapsourcepropertymapping (#10606)
- sources/oauth: fix link not being saved (#10374)
- sources/plex: add property mappings (#10772)
- sources/saml: Basic support for EncryptedAssertion element. (#10099)
- sources/saml: fix pickle error, add saml auth tests (#10348)
- sources/scim: add property mappings (#10650)
- sources/scim: fix duplicate service account users and changing token (#10735)
- sources/scim: fix schema loading with pwd is not set properly (#10574)
- stages/authenticator_validate: fix friendly_name being required (#10382)
- stages/authenticator: actually update last_used (#10813)
- stages/authenticator: add created, last_updated and last_used metadata (#10636)
- stages/prompt: fix prompt not editable with invalid expression (#10603)
- stages/user_login: fix ?next parameter not carried through broken session binding (#10301)
- web: disable reading dark mode out of the UI by default (#10256)
- web: enable custom-element-manifest and DOM/JS integration checking. (#10177)
- web: enhance search select with portal, overflow, and keyboard controls (#9517)
- web: fix bad name target that's breaking build (#10506)
- web: fix dark theme and theme switch (#10667)
- web: fix docker build for non-release versions (#10154)
- web: fix early modal stack depletion (#10068)
- web: fix mismatched button labels for boundpolicy and boundstage list (#10551)
- web: fix needed because recent upgrade to task breaks spinner button (#10142)
- web: fix theme not applying to document correctly (#10721)
- web: fixed missed internationalized strings (#10323)
- web: licenseStatus is not defined on initial render (#10894)
- web: provide 'show password' button (#10337)
- web: provide a test framework (#9681)
- web: provide better feedback on Application Library page about search results (#9386)
- web: provide default endpoint api configuration (#10319)
- web: replace all occurrences of the theme placeholder (#10749)
- web: replace multi-select with dual-select for all propertyMapping invocations (#9359)
- web: restore hasLaunchUrl to client-side criteria for filtering apps (#10291)
- web: search select with focus, autocomplete, and progressive search (#10728)
- web: set noopener and noreferrer on all external links (#10304)
- web/admin: fix access token list calling wrong API (#10434)
- web/admin: fix authentication/enrollment flow in sources being marked as required (#10911)
- web/admin: fix missing SAML Provider ECDSA options (#10612)
- web/admin: fix selectable card colour in dark theme (#10794)
- web/admin: refactor property mappings forms (#10810)
- web/admin: show matching user reputation scores in user details (#10276)
- web/admin: widen prompt form (#10615)
- web/elements: fix empty enterprise banner (#10882)
- web/flows: clean up loading, syntax and transitions (#10792)
- web/flows: don't grab focus for password input on identification stage (#10593)
- web/flows: remove background image link (#10318)
- web/flows: remove continue button from AutoSubmit stage (#10253)
- web/flows: Simplified flow executor (#10296)
Fixed in 2024.8.1
- core: bump cryptography from 43.0.0 to 43.0.1 (cherry-pick #11185) (#11202)
- core: fix change_user_type always requiring usernames (cherry-pick #11177) (#11178)
- core: fix missing argument name escaping for property mapping (cherry-pick #11231) (#11252)
- internal: fix go paginator not setting page correctly (cherry-pick #11253) (#11255)
- providers/ldap: fix incorrect permission check for search access (cherry-pick #11217) (#11218)
- providers/ldap: fix migration assuming search group is set (cherry-pick #11170) (#11172)
- providers/ldap: rework search_group migration to work with read replicas (cherry-pick #11228) (#11229)
- root: backport s3 storage changes (cherry-pick #11181) (#11183)
- web/admin: fix error in Outpost creation form (cherry-pick #11173) (#11175)
- web/admin: fix misc dual select on different forms (#11203)
- web/admin: fix missing Sync object button SCIM Provider (cherry-pick #11211) (#11213)
- web/admin: improve error handling (cherry-pick #11212) (#11219)
- web/users: show - if device was registered before we started saving the time (cherry-pick #11256) (#11257)
Fixed on 2024.8.2
- core: ensure all providers have correct priority (cherry-pick #11280) (#11281)
- core: ensure proxy provider is correctly looked up (cherry-pick #11267) (#11269)
- core: fix permission check for scoped impersonation (cherry-pick #11315) (#11316)
- enterprise: fix API mixin license validity check (cherry-pick #11331) (#11342)
- enterprise: show specific error if Install ID is invalid in license (cherry-pick #11317) (#11319)
- events: optimise marking events as seen (cherry-pick #11297) (#11299)
- providers/proxy: fix URL path getting lost when partial URL is given to rd= (cherry-pick #11354) (#11355)
- root: fix ensure
outpost_connection_discovery
runs on worker startup (cherry-pick #11260) (#11270) - sources/ldap: fix missing search attribute (cherry-pick #11125) (#11340)
- web: revert lockfile lint, re-add integrity (#11380)
- web/admin: fix notification property mapping forms (cherry-pick #11298) (#11300)