4.38: Pre-Release Notes

Posted in News, Release Notes on January 18, 2023 by James Elliott ‐ 8 min read

4.38: Pre-Release Notes

Authelia 4.38 is just around the corner. This version has several additional features and improvements to existing features. In this blog post we’ll discuss the new features and roughly what it means for users.

Overall this release adds several major roadmap items. It’s quite a big release. We expect a few bugs here and there but nothing major. It’s one of our biggest releases to date, so while it’s taken a longer time than usual it’s for good reason we think.

We understand it’s taking a bit longer than usual and people are getting anxious for their particular feature of interest. We’re trying to ensure that we sufficiently add automated tests to all of the new features in both the backend and in the frontend via automated browser-based testing in Chromium to ensure a high quality user experience.

As this is a larger release we’re probably going to ask users to help with some experimentation. If you’re comfortable backing up your database then please keep your eyes peeled in the chat.

Note: These features discussed in this blog post are still subject to change however they represent the most likely outcome.

Important Note: There are some changes in this release which deprecate older configurations. The changes should be backwards compatible, however mistakes happen. In addition we advise making the adjustments to your configuration as necessary as several new features will not be available or even possible without making the necessary adjustments. We will be publishing some guides on making these adjustments on the blog in the near future, including an FAQ catered to specific scenarios.

Builds

The following contains information on getting access to the pre-production builds of 4.38.0.

Note: We strongly recommend people who wish to try the beta builds make backups of their proxy configuration, authelia configuration, and authelia database prior to attempting to do so.

4.38.0-beta1

Notable Missing Features from this build:

  • OpenID Connect 1.0 PAR
  • Multi-Device Webauthn
  • Device Registration OTP

Actual Builds:

Major Documentation Changes:

OpenID Connect 1.0

As part of our ongoing effort for comprehensive support for OpenID Connect 1.0 we’ll be introducing several important features. Please see the roadmap for more information.

OAuth 2.0 Pushed Authorization Requests

Support for RFC9126 known as Pushed Authorization Requests is one of the main features being added to our OpenID Connect 1.0 implementation in this release.

Pushed Authorization Requests allows for relying parties / clients to send the Authorization Request parameters over a back-channel and receive an opaque URI to be used as the redirect_uri on the standard Authorization endpoint in place of the standard Authorization Request parameters.

The endpoint used by this mechanism requires the relying party provides the Token Endpoint authentication parameters.

This means the actual Authorization Request parameters are never sent in the clear over the front-channel. This helps mitigate a few things:

  1. Enhanced privacy. This is the primary focus of this specification.
  2. Part of conforming to the OpenID Connect 1.0 specification Financial-grade API Security Profile 1.0 (Advanced).
  3. Reduces the attack surface by preventing an attacker from adjusting request parameters prior to the Authorization Server receiving them.
  4. Reduces the attack surface marginally as less information is available over the front-channel which is the most likely location where an attacker would have access to information. While reducing access to information is not a reasonable primary security method, when combined with other mechanisms present in OpenID Connect 1.0 it is meaningful.

Even if an attacker gets the Authorization Code, they are unlikely to have the client_id for example, and this is required to exchange the Authorization Code for an Access Token and ID Token.

This option can be enforced globally for users who only use relying parties which support Pushed Authorization Requests, or can be individually enforced for each relying party which has support.

Proof Key for Code Exchange by OAuth Public Clients

While we already support RFC7636 commonly known as Proof Key for Code Exchange, and support enforcement at a global level for either public clients or all clients, we’re adding a feature where administrators will be able to enforce Proof Key for Code Exchange on individual clients.

It should also be noted that Proof Key for Code Exchange can be used at the same time as OAuth 2.0 Pushed Authorization Requests.

These features combined with our requirement for the HTTPS scheme are very powerful security measures.

Multi-Domain Protection

In this release we are releasing the main implementation of the Multi-Domain Protection roadmap item. Please see the roadmap for more information.

Initial Implementation

Important Note: This feature at the time of this writing, will not work well with Webauthn. Steps are being taken to address this however it will not specifically delay the release of this feature.

This release see’s the initial implementation of multi-domain protection. Users will be able to configure more than a single root domain for cookies provided none of them are a subdomain of another domain configured. In addition each domain can have individual settings.

This does not allow single sign-on between these distinct domains. When surveyed users had very low interest in this feature and technically speaking it’s not trivial to implement such a feature as a lot of critical security considerations need to be addressed.

In addition this feature will allow configuration based detection of the Authelia Portal URI on proxies other than NGINX/NGINX Proxy Manager/SWAG/HAProxy with the use of the new Customizable Authorization Endpoints. This is important as it means you only need to configure a single middleware or helper to perform automatic redirection.

Webauthn

As part of our ongoing effort for comprehensive support for Webauthn we’ll be introducing several important features. Please see the roadmap for more information.

Multiple Webauthn Credentials Per-User

In this release we see full support for multiple Webauthn credentials. This is a fairly basic feature but getting the frontend experience right is important to us. This is going to be supported via the User Control Panel.

Customizable Authorization Endpoints

For the longest time we’ve managed to have the /api/verify endpoint perform all authorization verification. This has served us well however we’ve been growing out of it. This endpoint is being deprecated in favor of new customizable per-implementation endpoints. Each existing proxy we support uses one of these distinct implementations.

The old endpoint will still work, in fact you can technically configure an additional endpoint using the methodology of it via the Legacy implementation. However this is strongly discouraged and will not intentionally have new features or fixes (excluding security fixes) going forward.

In addition to being able to customize them you can create your own, and completely disable support for all other implementations in the process. Use of these new endpoints will require reconfiguration of your proxy, we plan to release a guide for each proxy.

See the server authz endpoints docs and reference guide in the builds section for more information.

User Dashboard / Control Panel

As part of our ongoing effort for comprehensive support for a User Dashboard / Control Panel we’ll be introducing several important features. Please see the roadmap for more information.

Device Registration OTP

Instead of the current link, in this release users will instead be sent a One Time Password, cryptographically randomly generated by Authelia. This One Time Password will grant users a duration to perform security sensitive tasks.

The motivation for this is that it works in more situations, and is slightly less prone to phishing.

TOTP Registration

Instead of just assuming that users have successfully registered their TOTP application, we will require users to enter the TOTP code prior to it being saved to the database.

Configuration

Several enhancements are landing for the configuration.

Directories

Users will now be able to configure a directory where all .yml and .yaml files will be loaded in lexical order. This will not allow combining lists of items, but it will allow you to split portions of the configuration easily.

Discovery

Environment variables are being added to assist with configuration discovery, and this will be the default method for our containers. The advantage is that since the variable will be available when execing into the container, even if the configuration paths have changed or you’ve defined additional paths, the authelia command will know where the files are if you properly use this variables.

Templating

The file based configuration will have access to several experimental templating filters which will assist in creating configuration templates. The initial one will just expand most environment variables into the configuration. The second will use the go template engine in a very similar way to how Helm operates.

As these features are experimental they may break, be removed, or otherwise not operate as expected. However most of our testing indicates they’re incredibly solid.

See the templating reference guide in the builds section for more information.

LDAP Implementation

Several new LDAP implementations which provide defaults are being introduced in this version to assist users in integrating their LDAP server with Authelia.

Miscellaneous

Some miscellaneous notes about this release.

Email Notifications

Events triggered by users will generate new notifications sent to their inbox, for example adding a new 2FA device.

Storage Import/Export

Utility functions to assist in exporting and subsequently importing the important values in Authelia are being added and unified in this release.

Privacy Policy

We’ll be introducing a feature which allows administrators to more easily comply with the GDPR which optionally shows a link to their individual privacy policy on the frontend, and optionally requires users to accept it before using Authelia.

LDAP Implementations

This release adds several LDAP implementations into our existing set. See the reference guide in the builds section for more information.