website: Bump prettier from 3.3.3 to 3.4.1 in /website (#12205)
* website: Bump prettier from 3.3.3 to 3.4.1 in /website Bumps [prettier](https://github.com/prettier/prettier) from 3.3.3 to 3.4.1. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.3.3...3.4.1) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * update formatting Signed-off-by: Jens Langhammer <jens@goauthentik.io> * sigh Signed-off-by: Jens Langhammer <jens@goauthentik.io> * disable flaky test Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Jens Langhammer <jens@goauthentik.io> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
@ -3,6 +3,7 @@
|
|||||||
from json import loads
|
from json import loads
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
from unittest import skip
|
||||||
|
|
||||||
from selenium.webdriver.common.by import By
|
from selenium.webdriver.common.by import By
|
||||||
|
|
||||||
@ -123,6 +124,7 @@ class TestProviderProxyForward(SeleniumTestCase):
|
|||||||
title = session_end_stage.find_element(By.CSS_SELECTOR, ".pf-c-title.pf-m-3xl").text
|
title = session_end_stage.find_element(By.CSS_SELECTOR, ".pf-c-title.pf-m-3xl").text
|
||||||
self.assertIn("You've logged out of", title)
|
self.assertIn("You've logged out of", title)
|
||||||
|
|
||||||
|
@skip("Flaky test")
|
||||||
@retry()
|
@retry()
|
||||||
def test_nginx(self):
|
def test_nginx(self):
|
||||||
"""Test nginx"""
|
"""Test nginx"""
|
||||||
|
@ -18,23 +18,23 @@ For information about creating and managing applications, refer to [Manage appli
|
|||||||
|
|
||||||
Applications are displayed to users when:
|
Applications are displayed to users when:
|
||||||
|
|
||||||
- The user has access defined via policies (or the application has no policies bound)
|
- The user has access defined via policies (or the application has no policies bound)
|
||||||
- A valid Launch URL is configured/could be guessed, this consists of URLs starting with http:// and https://
|
- A valid Launch URL is configured/could be guessed, this consists of URLs starting with http:// and https://
|
||||||
|
|
||||||
The following options can be configured:
|
The following options can be configured:
|
||||||
|
|
||||||
- _Name_: This is the name shown for the application card
|
- _Name_: This is the name shown for the application card
|
||||||
- _Launch URL_: The URL that is opened when a user clicks on the application. When left empty, authentik tries to guess it based on the provider
|
- _Launch URL_: The URL that is opened when a user clicks on the application. When left empty, authentik tries to guess it based on the provider
|
||||||
|
|
||||||
You can use placeholders in the launch url to build them dynamically based on the logged in user. For example, you can set the Launch URL to `https://goauthentik.io/%(username)s`, which will be replaced with the currently logged in user's username.
|
You can use placeholders in the launch url to build them dynamically based on the logged in user. For example, you can set the Launch URL to `https://goauthentik.io/%(username)s`, which will be replaced with the currently logged in user's username.
|
||||||
|
|
||||||
Only applications whose launch URL starts with `http://` or `https://` or are relative URLs are shown on the users' **My applications** page. This can also be used to hide applications that shouldn't be visible on the **My applications** page but are still accessible by users, by setting the _Launch URL_ to `blank://blank`.
|
Only applications whose launch URL starts with `http://` or `https://` or are relative URLs are shown on the users' **My applications** page. This can also be used to hide applications that shouldn't be visible on the **My applications** page but are still accessible by users, by setting the _Launch URL_ to `blank://blank`.
|
||||||
|
|
||||||
- _Icon (URL)_: Optionally configure an Icon for the application
|
- _Icon (URL)_: Optionally configure an Icon for the application
|
||||||
|
|
||||||
If the authentik server does not have a volume mounted under `/media`, you'll get a text input. This accepts absolute URLs. If you've mounted single files into the container, you can reference them using `https://authentik.company/media/my-file.png`.
|
If the authentik server does not have a volume mounted under `/media`, you'll get a text input. This accepts absolute URLs. If you've mounted single files into the container, you can reference them using `https://authentik.company/media/my-file.png`.
|
||||||
|
|
||||||
If there is a mount under `/media` or if [S3 storage](../../sys-mgmt/ops/storage-s3.md) is configured, you'll instead see a field to upload a file.
|
If there is a mount under `/media` or if [S3 storage](../../sys-mgmt/ops/storage-s3.md) is configured, you'll instead see a field to upload a file.
|
||||||
|
|
||||||
- _Publisher_: Text shown below the application
|
- _Publisher_: Text shown below the application
|
||||||
- _Description_: Subtext shown on the application card below the publisher
|
- _Description_: Subtext shown on the application card below the publisher
|
||||||
|
@ -32,8 +32,8 @@ By default, all users can access applications when no policies are bound.
|
|||||||
|
|
||||||
When multiple policies/groups/users are attached, you can configure the _Policy engine mode_ to either:
|
When multiple policies/groups/users are attached, you can configure the _Policy engine mode_ to either:
|
||||||
|
|
||||||
- Require users to pass all bindings/be member of all groups (ALL), or
|
- Require users to pass all bindings/be member of all groups (ALL), or
|
||||||
- Require users to pass either binding/be member of either group (ANY)
|
- Require users to pass either binding/be member of either group (ANY)
|
||||||
|
|
||||||
## Hide applications
|
## Hide applications
|
||||||
|
|
||||||
|
@ -144,12 +144,12 @@ Set by the [Password stage](../../stages/password/index.md), the [Authenticator
|
|||||||
|
|
||||||
Possible options:
|
Possible options:
|
||||||
|
|
||||||
- `password` (Authenticated via the password in authentik's database)
|
- `password` (Authenticated via the password in authentik's database)
|
||||||
- `token` (Authenticated via API token)
|
- `token` (Authenticated via API token)
|
||||||
- `ldap` (Authenticated via LDAP bind from an LDAP source)
|
- `ldap` (Authenticated via LDAP bind from an LDAP source)
|
||||||
- `auth_mfa` (Authentication via MFA device without password)
|
- `auth_mfa` (Authentication via MFA device without password)
|
||||||
- `auth_webauthn_pwl` (Passwordless authentication via WebAuthn)
|
- `auth_webauthn_pwl` (Passwordless authentication via WebAuthn)
|
||||||
- `jwt` ([M2M](../../../providers/oauth2/client_credentials.md) authentication via an existing JWT)
|
- `jwt` ([M2M](../../../providers/oauth2/client_credentials.md) authentication via an existing JWT)
|
||||||
|
|
||||||
##### `auth_method_args` (dictionary)
|
##### `auth_method_args` (dictionary)
|
||||||
|
|
||||||
|
@ -6,6 +6,6 @@ The headless flow executor is used by clients that don't have access to the web
|
|||||||
|
|
||||||
The following stages are supported:
|
The following stages are supported:
|
||||||
|
|
||||||
- [**Identification stage**](../../stages/identification/index.md)
|
- [**Identification stage**](../../stages/identification/index.md)
|
||||||
- [**Password stage**](../../stages/password/index.md)
|
- [**Password stage**](../../stages/password/index.md)
|
||||||
- [**Authenticator Validation Stage**](../../stages/authenticator_validate/index.md)
|
- [**Authenticator Validation Stage**](../../stages/authenticator_validate/index.md)
|
||||||
|
@ -8,24 +8,24 @@ A simplified web-based flow executor that authentik automatically uses for older
|
|||||||
|
|
||||||
Currently this flow executor is automatically used for the following browsers:
|
Currently this flow executor is automatically used for the following browsers:
|
||||||
|
|
||||||
- Internet Explorer
|
- Internet Explorer
|
||||||
- Microsoft Edge (up to and including version 18)
|
- Microsoft Edge (up to and including version 18)
|
||||||
|
|
||||||
The following stages are supported:
|
The following stages are supported:
|
||||||
|
|
||||||
- [**Identification stage**](../../stages/identification/index.md)
|
- [**Identification stage**](../../stages/identification/index.md)
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Only user identifier and user identifier + password stage configurations are supported; sources and passwordless configurations are not supported.
|
Only user identifier and user identifier + password stage configurations are supported; sources and passwordless configurations are not supported.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
- [**Password stage**](../../stages/password/index.md)
|
- [**Password stage**](../../stages/password/index.md)
|
||||||
- [**Authenticator Validation Stage**](../../stages/authenticator_validate/index.md)
|
- [**Authenticator Validation Stage**](../../stages/authenticator_validate/index.md)
|
||||||
|
|
||||||
Compared to the [default flow executor](./if-flow.md), this flow executor does _not_ support the following features:
|
Compared to the [default flow executor](./if-flow.md), this flow executor does _not_ support the following features:
|
||||||
|
|
||||||
- Localization
|
- Localization
|
||||||
- Theming (Dark / light themes)
|
- Theming (Dark / light themes)
|
||||||
- Theming (Custom CSS)
|
- Theming (Custom CSS)
|
||||||
- Stages not listed above
|
- Stages not listed above
|
||||||
- Flow inspector
|
- Flow inspector
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
- **Authentication**: this option designates a flow to be used for authentication. The authentication flow should always contain a [**User Login**](../../stages/user_login/index.md) stage, which attaches the staged user to the current session.
|
- **Authentication**: this option designates a flow to be used for authentication. The authentication flow should always contain a [**User Login**](../../stages/user_login/index.md) stage, which attaches the staged user to the current session.
|
||||||
|
|
||||||
- **Authorization**: designates a flow to be used for authorization of an application. Can be used to add additional verification steps before the user is allowed to access an application. This flow is defined per provider, when the provider is created, to state whether implicit or explicit authorization is required.
|
- **Authorization**: designates a flow to be used for authorization of an application. Can be used to add additional verification steps before the user is allowed to access an application. This flow is defined per provider, when the provider is created, to state whether implicit or explicit authorization is required.
|
||||||
|
|
||||||
- **Enrollment**: designates a flow for enrollment. This flow can contain any amount of verification stages, such as [**Email**](../../stages/email/index.mdx) or **Captcha**. At the end, to create the user, you can use the [**User Write**](../../stages/user_write.md) stage, which either updates the currently staged user, or if none exists, creates a new one.
|
- **Enrollment**: designates a flow for enrollment. This flow can contain any amount of verification stages, such as [**Email**](../../stages/email/index.mdx) or **Captcha**. At the end, to create the user, you can use the [**User Write**](../../stages/user_write.md) stage, which either updates the currently staged user, or if none exists, creates a new one.
|
||||||
|
|
||||||
- **Invalidation**: designates a default flow to be used to invalidate a session. Use `default-invalidation-flow` for invalidation from authentik itself, or use `default-provider-invalidation-flow` to invalidate when the session of an application ends. When you use the `default-invalidation-flow` as a global invalidation flow, it should contain a [**User Logout**](../../stages/user_logout.md) stage. When you use the `default-provider-invalidation-flow` (supported with OIDC, SAML, Proxy, and RAC providers), you can configure this default flow to present users log-off options such as "log out of the app but remain logged in to authentik" or "return to the **My Applications** page", or "log out completely". (Alternatively, you can create a custom invalidation flow, with a branded background image.)
|
- **Invalidation**: designates a default flow to be used to invalidate a session. Use `default-invalidation-flow` for invalidation from authentik itself, or use `default-provider-invalidation-flow` to invalidate when the session of an application ends. When you use the `default-invalidation-flow` as a global invalidation flow, it should contain a [**User Logout**](../../stages/user_logout.md) stage. When you use the `default-provider-invalidation-flow` (supported with OIDC, SAML, Proxy, and RAC providers), you can configure this default flow to present users log-off options such as "log out of the app but remain logged in to authentik" or "return to the **My Applications** page", or "log out completely". (Alternatively, you can create a custom invalidation flow, with a branded background image.)
|
||||||
|
|
||||||
- **Recovery**: designates a flow for recovery. This flow normally contains an [**Identification**](../../stages/identification/index.md) stage to find the user. It can also contain any amount of verification stages, such as [**Email**](../../stages/email/index.mdx) or [**CAPTCHA**](../../stages/captcha/index.md). Afterwards, use the [**Prompt**](../../stages/prompt/index.md) stage to ask the user for a new password and the [**User Write**](../../stages/user_write.md) stage to update the password.
|
- **Recovery**: designates a flow for recovery. This flow normally contains an [**Identification**](../../stages/identification/index.md) stage to find the user. It can also contain any amount of verification stages, such as [**Email**](../../stages/email/index.mdx) or [**CAPTCHA**](../../stages/captcha/index.md). Afterwards, use the [**Prompt**](../../stages/prompt/index.md) stage to ask the user for a new password and the [**User Write**](../../stages/user_write.md) stage to update the password.
|
||||||
|
|
||||||
- **Stage configuration**: designates a flow for general setup. This designation doesn't have any constraints in what you can do. For example, by default this designation is used to configure authenticators, like change a password and set up TOTP.
|
- **Stage configuration**: designates a flow for general setup. This designation doesn't have any constraints in what you can do. For example, by default this designation is used to configure authenticators, like change a password and set up TOTP.
|
||||||
|
|
||||||
- **Unenrollment**: designates a flow for unenrollment. This flow can contain any amount of verification stages, such as [**email**](../../stages/email/index.mdx) or [**Captcha**](../../stages/captcha/index.md). As a final stage, to delete the account, use the [**user_delete**](../../stages/user_delete.md) stage.
|
- **Unenrollment**: designates a flow for unenrollment. This flow can contain any amount of verification stages, such as [**email**](../../stages/email/index.mdx) or [**Captcha**](../../stages/captcha/index.md). As a final stage, to delete the account, use the [**user_delete**](../../stages/user_delete.md) stage.
|
||||||
|
@ -10,9 +10,9 @@ A flow is a method of describing a sequence of stages. A stage represents a sing
|
|||||||
|
|
||||||
For example a standard login flow would consist of the following stages:
|
For example a standard login flow would consist of the following stages:
|
||||||
|
|
||||||
- **Identification stage**: user identifies themselves via a username or email address
|
- **Identification stage**: user identifies themselves via a username or email address
|
||||||
- **Password stage**: the user's password is checked against the hash in the database
|
- **Password stage**: the user's password is checked against the hash in the database
|
||||||
- **Login stage**: this stage attaches a currently pending user to the current session
|
- **Login stage**: this stage attaches a currently pending user to the current session
|
||||||
|
|
||||||
When these stages are successfully completed, authentik logs in the user.
|
When these stages are successfully completed, authentik logs in the user.
|
||||||
|
|
||||||
@ -70,22 +70,22 @@ import Defaultflowlist from "../flow/flow_list/\_defaultflowlist.mdx";
|
|||||||
|
|
||||||
**Behavior settings**:
|
**Behavior settings**:
|
||||||
|
|
||||||
- **Compatibility mode**: Toggle this option on to increase compatibility with password managers and mobile devices. Password managers like [1Password](https://1password.com/), for example, don't need this setting to be enabled, when accessing the flow from a desktop browser. However accessing the flow from a mobile device might necessitate this setting to be enabled.
|
- **Compatibility mode**: Toggle this option on to increase compatibility with password managers and mobile devices. Password managers like [1Password](https://1password.com/), for example, don't need this setting to be enabled, when accessing the flow from a desktop browser. However accessing the flow from a mobile device might necessitate this setting to be enabled.
|
||||||
|
|
||||||
The technical reasons for this settings' existence is due to the JavaScript libraries we're using for the default flow interface. These interfaces are implemented using [Lit](https://lit.dev/), which is a modern web development library. It uses a web standard called ["Shadow DOMs"](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_shadow_DOM), which makes encapsulating styles simpler. Due to differences in Browser APIs, many password managers are not compatible with this technology.
|
The technical reasons for this settings' existence is due to the JavaScript libraries we're using for the default flow interface. These interfaces are implemented using [Lit](https://lit.dev/), which is a modern web development library. It uses a web standard called ["Shadow DOMs"](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_shadow_DOM), which makes encapsulating styles simpler. Due to differences in Browser APIs, many password managers are not compatible with this technology.
|
||||||
|
|
||||||
When the compatibility mode is enabled, authentik uses a polyfill which emulates the Shadow DOM APIs without actually using the feature, and instead a traditional DOM is rendered. This increases support for password managers, especially on mobile devices.
|
When the compatibility mode is enabled, authentik uses a polyfill which emulates the Shadow DOM APIs without actually using the feature, and instead a traditional DOM is rendered. This increases support for password managers, especially on mobile devices.
|
||||||
|
|
||||||
- **Denied action**: Configure what happens when access to a flow is denied by a policy. By default, authentik will redirect to a `?next` parameter if set, and otherwise show an error message.
|
- **Denied action**: Configure what happens when access to a flow is denied by a policy. By default, authentik will redirect to a `?next` parameter if set, and otherwise show an error message.
|
||||||
|
|
||||||
- `MESSAGE_CONTINUE`: Show a message if no `?next` parameter is set, otherwise redirect.
|
- `MESSAGE_CONTINUE`: Show a message if no `?next` parameter is set, otherwise redirect.
|
||||||
- `MESSAGE`: Always show error message.
|
- `MESSAGE`: Always show error message.
|
||||||
- `CONTINUE`: Always redirect, either to `?next` if set, otherwise to the default interface.
|
- `CONTINUE`: Always redirect, either to `?next` if set, otherwise to the default interface.
|
||||||
|
|
||||||
- **Policy engine mode**: Configure the flow to succeed in _any_ policy passes, or only if _all_ policies pass.
|
- **Policy engine mode**: Configure the flow to succeed in _any_ policy passes, or only if _all_ policies pass.
|
||||||
|
|
||||||
**Appearance Settings**:
|
**Appearance Settings**:
|
||||||
|
|
||||||
- **Layout**: select how the UI displays the flow when it is executed; with stacked elements, content left or right, and sidebar left or right.
|
- **Layout**: select how the UI displays the flow when it is executed; with stacked elements, content left or right, and sidebar left or right.
|
||||||
|
|
||||||
- **Background**: optionally, select a background image for the UI presentation of the flow.
|
- **Background**: optionally, select a background image for the UI presentation of the flow.
|
||||||
|
@ -35,8 +35,8 @@ Alternatively, a user with the correct permission can launch the inspector by ad
|
|||||||
:::info
|
:::info
|
||||||
Troubleshooting:
|
Troubleshooting:
|
||||||
|
|
||||||
- If the flow inspector does not launch and a "Bad request" error displays, this is likely either because you selected a flow that is not defined in your instance or the flow has a policy bound directly to it that prevents access, so the inspector won't open because the flow can't run results.
|
- If the flow inspector does not launch and a "Bad request" error displays, this is likely either because you selected a flow that is not defined in your instance or the flow has a policy bound directly to it that prevents access, so the inspector won't open because the flow can't run results.
|
||||||
- If the flow inspector launches but is empty, you can refresh the browser or advance the flow to load the inspector. This can occur when a race condition happens (the inspector tries to fetch the data before the flow plan is fully planned and as such the panel just shows blank).
|
- If the flow inspector launches but is empty, you can refresh the browser or advance the flow to load the inspector. This can occur when a race condition happens (the inspector tries to fetch the data before the flow plan is fully planned and as such the panel just shows blank).
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ The Duo username can be found by navigating to your Duo Admin dashboard and sele
|
|||||||
|
|
||||||
You can call the `/api/v3/stages/authenticator/duo/{stage_uuid}/import_devices/` endpoint ([see here](https://goauthentik.io/api/#post-/stages/authenticator/duo/-stage_uuid-/import_devices/)) using the following parameters:
|
You can call the `/api/v3/stages/authenticator/duo/{stage_uuid}/import_devices/` endpoint ([see here](https://goauthentik.io/api/#post-/stages/authenticator/duo/-stage_uuid-/import_devices/)) using the following parameters:
|
||||||
|
|
||||||
- `duo_user_id`: The Duo User's ID. This can be found in the Duo Admin Portal, navigating to the user list and clicking on a single user. Their ID is shown in th URL.
|
- `duo_user_id`: The Duo User's ID. This can be found in the Duo Admin Portal, navigating to the user list and clicking on a single user. Their ID is shown in th URL.
|
||||||
- `username`: The authentik user's username to assign the device to.
|
- `username`: The authentik user's username to assign the device to.
|
||||||
|
|
||||||
Additionally, you need to pass `stage_uuid` which is the `authenticator_duo` stage, in which you entered your API credentials.
|
Additionally, you need to pass `stage_uuid` which is the `authenticator_duo` stage, in which you entered your API credentials.
|
||||||
|
@ -41,9 +41,9 @@ For detailed instructions, refer to Google documentation.
|
|||||||
3. On the **IAM** page, click **Service Accounts** in the left navigation pane.
|
3. On the **IAM** page, click **Service Accounts** in the left navigation pane.
|
||||||
4. At the top of the **Service Accounts** page, click **Create Service Account**.
|
4. At the top of the **Service Accounts** page, click **Create Service Account**.
|
||||||
|
|
||||||
- Under **Service account details** page, define the **Name** and **Description** for the new service account, and then click **Create and Continue**.
|
- Under **Service account details** page, define the **Name** and **Description** for the new service account, and then click **Create and Continue**.
|
||||||
- Under **Grant this service account access to project** you do not need to define a role, so click **Continue**.
|
- Under **Grant this service account access to project** you do not need to define a role, so click **Continue**.
|
||||||
- Under **Grant users access to project** you do not need to define a role, so click **Done** to complete the creation of the service account.
|
- Under **Grant users access to project** you do not need to define a role, so click **Done** to complete the creation of the service account.
|
||||||
|
|
||||||
### Set credentials for the service account
|
### Set credentials for the service account
|
||||||
|
|
||||||
|
@ -4,19 +4,19 @@ title: Authenticator validation stage
|
|||||||
|
|
||||||
This stage validates an already configured Authenticator Device. This device has to be configured using any of the other authenticator stages:
|
This stage validates an already configured Authenticator Device. This device has to be configured using any of the other authenticator stages:
|
||||||
|
|
||||||
- [Duo authenticator stage](../authenticator_duo/index.md)
|
- [Duo authenticator stage](../authenticator_duo/index.md)
|
||||||
- [SMS authenticator stage](../authenticator_sms/index.md)
|
- [SMS authenticator stage](../authenticator_sms/index.md)
|
||||||
- [Static authenticator stage](../authenticator_static/index.md)
|
- [Static authenticator stage](../authenticator_static/index.md)
|
||||||
- [TOTP authenticator stage](../authenticator_totp/index.md)
|
- [TOTP authenticator stage](../authenticator_totp/index.md)
|
||||||
- [WebAuthn authenticator stage](../authenticator_webauthn/index.md)
|
- [WebAuthn authenticator stage](../authenticator_webauthn/index.md)
|
||||||
|
|
||||||
You can select which type of device classes are allowed.
|
You can select which type of device classes are allowed.
|
||||||
|
|
||||||
Using the `Not configured action`, you can choose what happens when a user does not have any matching devices.
|
Using the `Not configured action`, you can choose what happens when a user does not have any matching devices.
|
||||||
|
|
||||||
- Skip: Validation is skipped and the flow continues
|
- Skip: Validation is skipped and the flow continues
|
||||||
- Deny: Access is denied, the flow execution ends
|
- Deny: Access is denied, the flow execution ends
|
||||||
- Configure: This option requires a _Configuration stage_ to be set. The validation stage will be marked as successful, and the configuration stage will be injected into the flow.
|
- Configure: This option requires a _Configuration stage_ to be set. The validation stage will be marked as successful, and the configuration stage will be injected into the flow.
|
||||||
|
|
||||||
By default, authenticator validation is required every time the flow containing this stage is executed. To only change this behavior, set _Last validation threshold_ to a non-zero value. (Requires authentik 2022.5)
|
By default, authenticator validation is required every time the flow containing this stage is executed. To only change this behavior, set _Last validation threshold_ to a non-zero value. (Requires authentik 2022.5)
|
||||||
Keep in mind that when using Code-based devices (TOTP, Static and SMS), values lower than `seconds=30` cannot be used, as with the way TOTP devices are saved, there is no exact timestamp.
|
Keep in mind that when using Code-based devices (TOTP, Static and SMS), values lower than `seconds=30` cannot be used, as with the way TOTP devices are saved, there is no exact timestamp.
|
||||||
|
@ -6,9 +6,9 @@ This stage adds a form of verification using [Google's reCAPTCHA](https://www.go
|
|||||||
|
|
||||||
Currently supported implementations:
|
Currently supported implementations:
|
||||||
|
|
||||||
- [Google reCAPTCHA](#google-recaptcha)
|
- [Google reCAPTCHA](#google-recaptcha)
|
||||||
- [hCaptcha](#hcaptcha)
|
- [hCaptcha](#hcaptcha)
|
||||||
- [Cloudflare Turnstile](#cloudflare-turnstile)
|
- [Cloudflare Turnstile](#cloudflare-turnstile)
|
||||||
|
|
||||||
## Captcha provider configuration
|
## Captcha provider configuration
|
||||||
|
|
||||||
@ -20,11 +20,11 @@ This stage has two required fields: Public key and private key. These can both b
|
|||||||
|
|
||||||
#### Configuration options
|
#### Configuration options
|
||||||
|
|
||||||
- Interactive: Enabled when using reCAPTCHA v3
|
- Interactive: Enabled when using reCAPTCHA v3
|
||||||
- Score minimum threshold: `0.5`
|
- Score minimum threshold: `0.5`
|
||||||
- Score maximum threshold: `1`
|
- Score maximum threshold: `1`
|
||||||
- JS URL: `https://www.recaptcha.net/recaptcha/api.js`
|
- JS URL: `https://www.recaptcha.net/recaptcha/api.js`
|
||||||
- API URL: `https://www.recaptcha.net/recaptcha/api/siteverify`
|
- API URL: `https://www.recaptcha.net/recaptcha/api/siteverify`
|
||||||
|
|
||||||
### hCaptcha
|
### hCaptcha
|
||||||
|
|
||||||
@ -32,14 +32,14 @@ See https://docs.hcaptcha.com/switch
|
|||||||
|
|
||||||
#### Configuration options
|
#### Configuration options
|
||||||
|
|
||||||
- Interactive: Enabled
|
- Interactive: Enabled
|
||||||
- JS URL: `https://js.hcaptcha.com/1/api.js`
|
- JS URL: `https://js.hcaptcha.com/1/api.js`
|
||||||
- API URL: `https://api.hcaptcha.com/siteverify`
|
- API URL: `https://api.hcaptcha.com/siteverify`
|
||||||
|
|
||||||
**Score options only apply to hCaptcha Enterprise**
|
**Score options only apply to hCaptcha Enterprise**
|
||||||
|
|
||||||
- Score minimum threshold: `0`
|
- Score minimum threshold: `0`
|
||||||
- Score maximum threshold: `0.5`
|
- Score maximum threshold: `0.5`
|
||||||
|
|
||||||
### Cloudflare Turnstile
|
### Cloudflare Turnstile
|
||||||
|
|
||||||
@ -47,8 +47,8 @@ See https://developers.cloudflare.com/turnstile/get-started/migrating-from-recap
|
|||||||
|
|
||||||
#### Configuration options
|
#### Configuration options
|
||||||
|
|
||||||
- Interactive: Enabled if the Turnstile instance is configured as visible or managed
|
- Interactive: Enabled if the Turnstile instance is configured as visible or managed
|
||||||
- JS URL: `https://challenges.cloudflare.com/turnstile/v0/api.js`
|
- JS URL: `https://challenges.cloudflare.com/turnstile/v0/api.js`
|
||||||
- API URL: `https://challenges.cloudflare.com/turnstile/v0/siteverify`
|
- API URL: `https://challenges.cloudflare.com/turnstile/v0/siteverify`
|
||||||
|
|
||||||
**Score options do not apply when using with turnstile**
|
**Score options do not apply when using with turnstile**
|
||||||
|
@ -81,9 +81,9 @@ If you've add the line and created a file, and can't see if, check the worker lo
|
|||||||
|
|
||||||
Templates are rendered using Django's templating engine. The following variables can be used:
|
Templates are rendered using Django's templating engine. The following variables can be used:
|
||||||
|
|
||||||
- `url`: The full URL for the user to click on
|
- `url`: The full URL for the user to click on
|
||||||
- `user`: The pending user object.
|
- `user`: The pending user object.
|
||||||
- `expires`: The timestamp when the token expires.
|
- `expires`: The timestamp when the token expires.
|
||||||
|
|
||||||
<!-- prettier-ignore-start -->
|
<!-- prettier-ignore-start -->
|
||||||
|
|
||||||
|
@ -8,9 +8,9 @@ This stage provides a ready-to-go form for users to identify themselves.
|
|||||||
|
|
||||||
Select which fields the user can use to identify themselves. Multiple fields can be selected. If no fields are selected, only sources will be shown.
|
Select which fields the user can use to identify themselves. Multiple fields can be selected. If no fields are selected, only sources will be shown.
|
||||||
|
|
||||||
- Username
|
- Username
|
||||||
- Email
|
- Email
|
||||||
- UPN
|
- UPN
|
||||||
|
|
||||||
UPN will attempt to identify the user based on the `upn` attribute, which can be imported with an [LDAP Source](../../../../users-sources/sources/protocols/ldap)
|
UPN will attempt to identify the user based on the `upn` attribute, which can be imported with an [LDAP Source](../../../../users-sources/sources/protocols/ldap)
|
||||||
|
|
||||||
|
@ -35,10 +35,10 @@ The prompt can be any of the following types:
|
|||||||
|
|
||||||
Some types have special behaviors:
|
Some types have special behaviors:
|
||||||
|
|
||||||
- _Username_: Input is validated against other usernames to ensure a unique value is provided.
|
- _Username_: Input is validated against other usernames to ensure a unique value is provided.
|
||||||
- _Password_: All prompts with the type password within the same stage are compared and must be equal. If they are not equal, an error is shown
|
- _Password_: All prompts with the type password within the same stage are compared and must be equal. If they are not equal, an error is shown
|
||||||
- _Hidden_ and _Static_: Their initial values are defaults and are not user-changeable.
|
- _Hidden_ and _Static_: Their initial values are defaults and are not user-changeable.
|
||||||
- _Radio Button Group_ and _Dropdown_: Only allow the user to select one of a set of predefined values.
|
- _Radio Button Group_ and _Dropdown_: Only allow the user to select one of a set of predefined values.
|
||||||
|
|
||||||
A prompt has the following attributes:
|
A prompt has the following attributes:
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ When creating or editing this stage in the UI of the Admin interface, you can se
|
|||||||
|
|
||||||
**Stage-specific settings**
|
**Stage-specific settings**
|
||||||
|
|
||||||
- **Session duration**: By default, the authentik session expires when you close your browser (_seconds=0_).
|
- **Session duration**: By default, the authentik session expires when you close your browser (_seconds=0_).
|
||||||
|
|
||||||
:::warning
|
:::warning
|
||||||
Different browsers handle session cookies differently, and might not remove them even when the browser is closed. See [here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#expiresdate) for more info.
|
Different browsers handle session cookies differently, and might not remove them even when the browser is closed. See [here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#expiresdate) for more info.
|
||||||
@ -22,21 +22,21 @@ When creating or editing this stage in the UI of the Admin interface, you can se
|
|||||||
|
|
||||||
You can set the session to expire after any duration using the syntax of `hours=1,minutes=2,seconds=3`. The following keys are allowed:
|
You can set the session to expire after any duration using the syntax of `hours=1,minutes=2,seconds=3`. The following keys are allowed:
|
||||||
|
|
||||||
- Microseconds
|
- Microseconds
|
||||||
- Milliseconds
|
- Milliseconds
|
||||||
- Seconds
|
- Seconds
|
||||||
- Minutes
|
- Minutes
|
||||||
- Hours
|
- Hours
|
||||||
- Days
|
- Days
|
||||||
- Weeks
|
- Weeks
|
||||||
|
|
||||||
All values accept floating-point values.
|
All values accept floating-point values.
|
||||||
|
|
||||||
- **Stay signed in offset**: When this is set to a higher value than the default _seconds=0_, the user logging in is shown a prompt, allowing the user to choose if their session should be extended or not. The same syntax as for _Session duration_ applies.
|
- **Stay signed in offset**: When this is set to a higher value than the default _seconds=0_, the user logging in is shown a prompt, allowing the user to choose if their session should be extended or not. The same syntax as for _Session duration_ applies.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
- **Network binding and GeoIP binding**
|
- **Network binding and GeoIP binding**
|
||||||
|
|
||||||
When configured, all sessions authenticated by this stage will be bound to the selected network and/or GeoIP criteria.
|
When configured, all sessions authenticated by this stage will be bound to the selected network and/or GeoIP criteria.
|
||||||
|
|
||||||
@ -79,6 +79,6 @@ When creating or editing this stage in the UI of the Admin interface, you can se
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
- **Terminate other sessions**
|
- **Terminate other sessions**
|
||||||
|
|
||||||
When enabled, previous sessions of the user logging in will be revoked. This has no affect on OAuth refresh tokens.
|
When enabled, previous sessions of the user logging in will be revoked. This has no affect on OAuth refresh tokens.
|
||||||
|
@ -6,10 +6,10 @@ An outpost is a single deployment of an authentik component, essentially a servi
|
|||||||
|
|
||||||
An outpost is required if you use any of the following types of providers with your application:
|
An outpost is required if you use any of the following types of providers with your application:
|
||||||
|
|
||||||
- [LDAP Provider](../providers/ldap/index.md)
|
- [LDAP Provider](../providers/ldap/index.md)
|
||||||
- [Proxy Provider](../providers/proxy/index.md)
|
- [Proxy Provider](../providers/proxy/index.md)
|
||||||
- [RADIUS Provider](../providers/radius/index.mdx)
|
- [RADIUS Provider](../providers/radius/index.mdx)
|
||||||
- [RAC Provider](../providers/rac/index.md)
|
- [RAC Provider](../providers/rac/index.md)
|
||||||
|
|
||||||
These types of providers use an outpost for increased flexibility and speed. Instead of the provider logic being implemented in authentik Core, these providers use an outpost to handle the logic, which provides improved performance.
|
These types of providers use an outpost for increased flexibility and speed. Instead of the provider logic being implemented in authentik Core, these providers use an outpost to handle the logic, which provides improved performance.
|
||||||
|
|
||||||
@ -43,15 +43,15 @@ Upon creation, a service account and a token is generated. The service account o
|
|||||||
|
|
||||||
authentik can manage the deployment, updating, and general lifecycle of an outpost. To communicate with the underlying platforms on which the outpost is deployed, authentik has several built-in integrations.
|
authentik can manage the deployment, updating, and general lifecycle of an outpost. To communicate with the underlying platforms on which the outpost is deployed, authentik has several built-in integrations.
|
||||||
|
|
||||||
- If you've deployed authentik on Docker Compose, authentik automatically creates an integration for the local docker socket (See [Docker](./integrations/docker.md)).
|
- If you've deployed authentik on Docker Compose, authentik automatically creates an integration for the local docker socket (See [Docker](./integrations/docker.md)).
|
||||||
- If you've deployed authentik on Kubernetes, with `kubernetesIntegration` set to true (default), authentik automatically creates an integrations for the local Kubernetes Cluster (see [Kubernetes](./integrations/kubernetes.md)).
|
- If you've deployed authentik on Kubernetes, with `kubernetesIntegration` set to true (default), authentik automatically creates an integrations for the local Kubernetes Cluster (see [Kubernetes](./integrations/kubernetes.md)).
|
||||||
|
|
||||||
To deploy an outpost with these integrations, select them during the creation of an outpost. A background task is started, which creates the container/deployment. The outpost deployment can be monitored from the **Dashboards -> System Tasks** page in the Admin interface.
|
To deploy an outpost with these integrations, select them during the creation of an outpost. A background task is started, which creates the container/deployment. The outpost deployment can be monitored from the **Dashboards -> System Tasks** page in the Admin interface.
|
||||||
|
|
||||||
To deploy an outpost manually, see:
|
To deploy an outpost manually, see:
|
||||||
|
|
||||||
- [Kubernetes](./manual-deploy-kubernetes.md)
|
- [Kubernetes](./manual-deploy-kubernetes.md)
|
||||||
- [Docker Compose](./manual-deploy-docker-compose.md)
|
- [Docker Compose](./manual-deploy-docker-compose.md)
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
|
@ -8,37 +8,37 @@ This integration has the advantage over manual deployments of automatic updates
|
|||||||
|
|
||||||
The following outpost settings are used:
|
The following outpost settings are used:
|
||||||
|
|
||||||
- `object_naming_template`: Configures how the container is called
|
- `object_naming_template`: Configures how the container is called
|
||||||
- `container_image`: Optionally overwrites the standard container image (see [Configuration](../../../install-config/configuration/configuration.mdx#authentik_outposts) to configure the global default)
|
- `container_image`: Optionally overwrites the standard container image (see [Configuration](../../../install-config/configuration/configuration.mdx#authentik_outposts) to configure the global default)
|
||||||
- `docker_network`: The Docker network the container should be added to. This needs to be modified if you plan to connect to authentik using the internal hostname.
|
- `docker_network`: The Docker network the container should be added to. This needs to be modified if you plan to connect to authentik using the internal hostname.
|
||||||
- `docker_map_ports`: Enable/disable the mapping of ports. When using a proxy outpost with Traefik for example, you might not want to bind ports as they are routed through Traefik.
|
- `docker_map_ports`: Enable/disable the mapping of ports. When using a proxy outpost with Traefik for example, you might not want to bind ports as they are routed through Traefik.
|
||||||
- `docker_labels`: Optional additional labels that can be applied to the container.
|
- `docker_labels`: Optional additional labels that can be applied to the container.
|
||||||
|
|
||||||
The container is created with the following hardcoded properties:
|
The container is created with the following hardcoded properties:
|
||||||
|
|
||||||
- Labels
|
- Labels
|
||||||
|
|
||||||
- `io.goauthentik.outpost-uuid`: Used by authentik to identify the container, and to allow for name changes.
|
- `io.goauthentik.outpost-uuid`: Used by authentik to identify the container, and to allow for name changes.
|
||||||
|
|
||||||
Additionally, the proxy outposts have the following extra labels to add themselves into Traefik automatically.
|
Additionally, the proxy outposts have the following extra labels to add themselves into Traefik automatically.
|
||||||
|
|
||||||
- `traefik.enable`: "true"
|
- `traefik.enable`: "true"
|
||||||
- `traefik.http.routers.ak-outpost-<outpost-name>-router.rule`: `Host(...)`
|
- `traefik.http.routers.ak-outpost-<outpost-name>-router.rule`: `Host(...)`
|
||||||
- `traefik.http.routers.ak-outpost-<outpost-name>-router.service`: `ak-outpost-<outpost-name>-service`
|
- `traefik.http.routers.ak-outpost-<outpost-name>-router.service`: `ak-outpost-<outpost-name>-service`
|
||||||
- `traefik.http.routers.ak-outpost-<outpost-name>-router.tls`: "true"
|
- `traefik.http.routers.ak-outpost-<outpost-name>-router.tls`: "true"
|
||||||
- `traefik.http.services.ak-outpost-<outpost-name>-service.loadbalancer.healthcheck.path`: "/outpost.goauthentik.io/ping"
|
- `traefik.http.services.ak-outpost-<outpost-name>-service.loadbalancer.healthcheck.path`: "/outpost.goauthentik.io/ping"
|
||||||
- `traefik.http.services.ak-outpost-<outpost-name>-service.loadbalancer.healthcheck.port`: "9300"
|
- `traefik.http.services.ak-outpost-<outpost-name>-service.loadbalancer.healthcheck.port`: "9300"
|
||||||
- `traefik.http.services.ak-outpost-<outpost-name>-service.loadbalancer.server.port`: "9000"
|
- `traefik.http.services.ak-outpost-<outpost-name>-service.loadbalancer.server.port`: "9000"
|
||||||
|
|
||||||
## Permissions
|
## Permissions
|
||||||
|
|
||||||
To minimise the potential risks of mapping the Docker socket into a container/giving an application access to the Docker API, many people use Projects like [docker-socket-proxy](https://github.com/Tecnativa/docker-socket-proxy). authentik requires these permissions from the Docker API:
|
To minimise the potential risks of mapping the Docker socket into a container/giving an application access to the Docker API, many people use Projects like [docker-socket-proxy](https://github.com/Tecnativa/docker-socket-proxy). authentik requires these permissions from the Docker API:
|
||||||
|
|
||||||
- Images/Pull: authentik tries to pre-pull the custom image if one is configured, otherwise falling back to the default image.
|
- Images/Pull: authentik tries to pre-pull the custom image if one is configured, otherwise falling back to the default image.
|
||||||
- Containers/Read: Gather infos about currently running container
|
- Containers/Read: Gather infos about currently running container
|
||||||
- Containers/Create: Create new containers
|
- Containers/Create: Create new containers
|
||||||
- Containers/Kill: Cleanup during upgrades
|
- Containers/Kill: Cleanup during upgrades
|
||||||
- Containers/Remove: Removal of outposts
|
- Containers/Remove: Removal of outposts
|
||||||
|
|
||||||
## Remote hosts (TLS)
|
## Remote hosts (TLS)
|
||||||
|
|
||||||
@ -46,8 +46,8 @@ To connect remote hosts, follow this guide from Docker [Use TLS (HTTPS) to prote
|
|||||||
|
|
||||||
Afterwards, create two certificate-keypairs in authentik:
|
Afterwards, create two certificate-keypairs in authentik:
|
||||||
|
|
||||||
- `Docker CA`, with the contents of `~/.docker/ca.pem` as Certificate
|
- `Docker CA`, with the contents of `~/.docker/ca.pem` as Certificate
|
||||||
- `Docker Cert`, with the contents of `~/.docker/cert.pem` as the certificate and `~/.docker/key.pem` as the private key.
|
- `Docker Cert`, with the contents of `~/.docker/cert.pem` as the certificate and `~/.docker/key.pem` as the private key.
|
||||||
|
|
||||||
Create an integration with `Docker CA` as _TLS Verification Certificate_ and `Docker Cert` as _TLS Authentication Certificate_.
|
Create an integration with `Docker CA` as _TLS Verification Certificate_ and `Docker Cert` as _TLS Authentication Certificate_.
|
||||||
|
|
||||||
@ -65,9 +65,9 @@ openssl req -x509 -sha256 -nodes -days 365 -out certificate.pem -key authentik
|
|||||||
|
|
||||||
You'll end up with three files:
|
You'll end up with three files:
|
||||||
|
|
||||||
- `authentik.pub` is the public key, this should be added to the `~/.ssh/authorized_keys` file on the target host and user.
|
- `authentik.pub` is the public key, this should be added to the `~/.ssh/authorized_keys` file on the target host and user.
|
||||||
- `authentik` is the private key, which should be imported into a Keypair in authentik.
|
- `authentik` is the private key, which should be imported into a Keypair in authentik.
|
||||||
- `certificate.pem` is the matching certificate for the keypair above.
|
- `certificate.pem` is the matching certificate for the keypair above.
|
||||||
|
|
||||||
Modify/create a new Docker integration, and set your _Docker URL_ to `ssh://hostname`, and select the keypair you created above as _TLS Authentication Certificate/SSH Keypair_.
|
Modify/create a new Docker integration, and set your _Docker URL_ to `ssh://hostname`, and select the keypair you created above as _TLS Authentication Certificate/SSH Keypair_.
|
||||||
|
|
||||||
|
@ -8,32 +8,32 @@ This integration has the advantage over manual deployments of automatic updates
|
|||||||
|
|
||||||
This integration creates the following objects:
|
This integration creates the following objects:
|
||||||
|
|
||||||
- Deployment for the outpost container
|
- Deployment for the outpost container
|
||||||
- Service
|
- Service
|
||||||
- Secret to store the token
|
- Secret to store the token
|
||||||
- Prometheus ServiceMonitor (if the Prometheus Operator is installed in the target cluster)
|
- Prometheus ServiceMonitor (if the Prometheus Operator is installed in the target cluster)
|
||||||
- Ingress (only Proxy outposts)
|
- Ingress (only Proxy outposts)
|
||||||
- Traefik Middleware (only Proxy outposts with forward auth enabled)
|
- Traefik Middleware (only Proxy outposts with forward auth enabled)
|
||||||
|
|
||||||
The following outpost settings are used:
|
The following outpost settings are used:
|
||||||
|
|
||||||
- `object_naming_template`: Configures how the container is called
|
- `object_naming_template`: Configures how the container is called
|
||||||
- `container_image`: Optionally overwrites the standard container image (see [Configuration](../../../install-config/configuration/configuration.mdx) to configure the global default)
|
- `container_image`: Optionally overwrites the standard container image (see [Configuration](../../../install-config/configuration/configuration.mdx) to configure the global default)
|
||||||
- `kubernetes_replicas`: Replica count for the deployment of the outpost
|
- `kubernetes_replicas`: Replica count for the deployment of the outpost
|
||||||
- `kubernetes_namespace`: Namespace to deploy in, defaults to the same namespace authentik is deployed in (if available)
|
- `kubernetes_namespace`: Namespace to deploy in, defaults to the same namespace authentik is deployed in (if available)
|
||||||
- `kubernetes_ingress_annotations`: Any additional annotations to add to the ingress object, for example cert-manager
|
- `kubernetes_ingress_annotations`: Any additional annotations to add to the ingress object, for example cert-manager
|
||||||
- `kubernetes_ingress_secret_name`: Name of the secret that is used for TLS connections, can be empty to disable TLS config
|
- `kubernetes_ingress_secret_name`: Name of the secret that is used for TLS connections, can be empty to disable TLS config
|
||||||
- `kubernetes_ingress_class_name`: Optionally set the ingress class used for the generated ingress, requires authentik 2022.11.0
|
- `kubernetes_ingress_class_name`: Optionally set the ingress class used for the generated ingress, requires authentik 2022.11.0
|
||||||
- `kubernetes_service_type`: Service kind created, can be set to LoadBalancer for LDAP outposts for example
|
- `kubernetes_service_type`: Service kind created, can be set to LoadBalancer for LDAP outposts for example
|
||||||
- `kubernetes_disabled_components`: Disable any components of the kubernetes integration, can be any of
|
- `kubernetes_disabled_components`: Disable any components of the kubernetes integration, can be any of
|
||||||
- 'secret'
|
- 'secret'
|
||||||
- 'deployment'
|
- 'deployment'
|
||||||
- 'service'
|
- 'service'
|
||||||
- 'prometheus servicemonitor'
|
- 'prometheus servicemonitor'
|
||||||
- 'ingress'
|
- 'ingress'
|
||||||
- 'traefik middleware'
|
- 'traefik middleware'
|
||||||
- `kubernetes_image_pull_secrets`: If the above docker image is in a private repository, use these secrets to pull. (NOTE: The secret must be created manually in the namespace first.)
|
- `kubernetes_image_pull_secrets`: If the above docker image is in a private repository, use these secrets to pull. (NOTE: The secret must be created manually in the namespace first.)
|
||||||
- `kubernetes_json_patches`: Applies an RFC 6902 compliant JSON patch to the Kubernetes objects.
|
- `kubernetes_json_patches`: Applies an RFC 6902 compliant JSON patch to the Kubernetes objects.
|
||||||
|
|
||||||
## Permissions
|
## Permissions
|
||||||
|
|
||||||
|
@ -24,15 +24,15 @@ As detailed in the steps below, when you add an Entra ID provider in authentik y
|
|||||||
3. Click **Create**, and in the **New provider** modal box select **Microsoft Entra Provider** as the type and click **Next**.
|
3. Click **Create**, and in the **New provider** modal box select **Microsoft Entra Provider** as the type and click **Next**.
|
||||||
4. Define the following fields:
|
4. Define the following fields:
|
||||||
|
|
||||||
- **Name**: define a descriptive name, such as "Entra provider".
|
- **Name**: define a descriptive name, such as "Entra provider".
|
||||||
|
|
||||||
- **Protocol settings**
|
- **Protocol settings**
|
||||||
|
|
||||||
- **Client ID**: enter the Client ID that you [copied from your Entra app](./setup-entra.md).
|
- **Client ID**: enter the Client ID that you [copied from your Entra app](./setup-entra.md).
|
||||||
- **Client Secret**: enter the secret from Entra.
|
- **Client Secret**: enter the secret from Entra.
|
||||||
- **Tenant ID**: enter the Tenant ID from Entra.
|
- **Tenant ID**: enter the Tenant ID from Entra.
|
||||||
- **User deletion action**: determines what authentik will do when a user is deleted from the Entra ID system.
|
- **User deletion action**: determines what authentik will do when a user is deleted from the Entra ID system.
|
||||||
- **Group deletion action**: determines what authentik will do when a group is deleted from the Entra ID system.
|
- **Group deletion action**: determines what authentik will do when a group is deleted from the Entra ID system.
|
||||||
|
|
||||||
**User filtering**
|
**User filtering**
|
||||||
|
|
||||||
|
@ -9,8 +9,8 @@ title: Microsoft Entra ID provider
|
|||||||
|
|
||||||
With the Microsoft Entra ID provider, authentik serves as the single source of truth for all users and groups. Configuring Entra ID as a provider allows for auto-discovery of user and group accounts, on-going synchronization of user data such as email address, name, and status, and integrated data mapping of field names and values.
|
With the Microsoft Entra ID provider, authentik serves as the single source of truth for all users and groups. Configuring Entra ID as a provider allows for auto-discovery of user and group accounts, on-going synchronization of user data such as email address, name, and status, and integrated data mapping of field names and values.
|
||||||
|
|
||||||
- For instructions to configure your Entra ID tenant to integrate with authentik, refer to [Configure Entra ID](./setup-entra.md).
|
- For instructions to configure your Entra ID tenant to integrate with authentik, refer to [Configure Entra ID](./setup-entra.md).
|
||||||
- For instructions to add Entra ID as a provider in authentik, refer to [Create a Entra ID provider](./add-entra-provider.md).
|
- For instructions to add Entra ID as a provider in authentik, refer to [Create a Entra ID provider](./add-entra-provider.md).
|
||||||
|
|
||||||
## About using Entra ID with authentik
|
## About using Entra ID with authentik
|
||||||
|
|
||||||
@ -38,10 +38,10 @@ When a property mapping has an invalid expression, it will cause the sync to sto
|
|||||||
|
|
||||||
There are a couple of considerations in regard to how authentik data is mapped to Entra ID user/group data by default.
|
There are a couple of considerations in regard to how authentik data is mapped to Entra ID user/group data by default.
|
||||||
|
|
||||||
- For users, authentik only saves the full display name, not separate first and family names.
|
- For users, authentik only saves the full display name, not separate first and family names.
|
||||||
- By default, authentik synchs a user’s email, a user’s name, and their active status between Entra ID and authentik. For groups, the name is synced.
|
- By default, authentik synchs a user’s email, a user’s name, and their active status between Entra ID and authentik. For groups, the name is synced.
|
||||||
|
|
||||||
Refer to Microsoft documentation for further details.
|
Refer to Microsoft documentation for further details.
|
||||||
|
|
||||||
- https://learn.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-1.0&tabs=http#request-body
|
- https://learn.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-1.0&tabs=http#request-body
|
||||||
- https://learn.microsoft.com/en-us/graph/api/group-post-groups?view=graph-rest-1.0&tabs=http#request-body
|
- https://learn.microsoft.com/en-us/graph/api/group-post-groups?view=graph-rest-1.0&tabs=http#request-body
|
||||||
|
@ -9,8 +9,8 @@ title: Google Workspace provider
|
|||||||
|
|
||||||
With the Google Workspace provider, authentik serves as the single source of truth for all users and groups, when using Google products like Gmail.
|
With the Google Workspace provider, authentik serves as the single source of truth for all users and groups, when using Google products like Gmail.
|
||||||
|
|
||||||
- For instructions to configure your Google Workspace to integrate with authentik, refer to [Configure Google Workspace](./setup-gws.md).
|
- For instructions to configure your Google Workspace to integrate with authentik, refer to [Configure Google Workspace](./setup-gws.md).
|
||||||
- For instructions to add Google Workspace as a provider, refer to [Create a Google Workspace provider](./add-gws-provider.md).
|
- For instructions to add Google Workspace as a provider, refer to [Create a Google Workspace provider](./add-gws-provider.md).
|
||||||
|
|
||||||
## About using Google Workspace with authentik
|
## About using Google Workspace with authentik
|
||||||
|
|
||||||
@ -38,13 +38,13 @@ When a property mapping has an invalid expression, it will cause the sync to sto
|
|||||||
|
|
||||||
There are a couple of considerations in regard to how authentik data is mapped to google workspace user/group data by default.
|
There are a couple of considerations in regard to how authentik data is mapped to google workspace user/group data by default.
|
||||||
|
|
||||||
- For users, authentik only saves the full display name, while Google requires given/family name separately, and as such authentik attempts to separate the full name automatically with the default User property mapping.
|
- For users, authentik only saves the full display name, while Google requires given/family name separately, and as such authentik attempts to separate the full name automatically with the default User property mapping.
|
||||||
|
|
||||||
- For groups, Google groups require an email address. Thus in authentik the provider configuration has an option **Default group email domain**, which will be used in conjunction with the group’s name to generate an email address. This can be customized with a property mapping.
|
- For groups, Google groups require an email address. Thus in authentik the provider configuration has an option **Default group email domain**, which will be used in conjunction with the group’s name to generate an email address. This can be customized with a property mapping.
|
||||||
|
|
||||||
- By default, authentik maps a user’s email, a user’s name, and their active status. For groups, the name is synced.
|
- By default, authentik maps a user’s email, a user’s name, and their active status. For groups, the name is synced.
|
||||||
|
|
||||||
Refer to Google documentation for further details on which fields data can be mapped to:
|
Refer to Google documentation for further details on which fields data can be mapped to:
|
||||||
|
|
||||||
- https://developers.google.com/admin-sdk/directory/reference/rest/v1/users#User
|
- https://developers.google.com/admin-sdk/directory/reference/rest/v1/users#User
|
||||||
- https://developers.google.com/admin-sdk/directory/reference/rest/v1/groups#Group
|
- https://developers.google.com/admin-sdk/directory/reference/rest/v1/groups#Group
|
||||||
|
@ -36,9 +36,9 @@ For detailed instructions, refer to Google documentation.
|
|||||||
3. On the **IAM** page, click **Service Accounts** in the left navigation pane.
|
3. On the **IAM** page, click **Service Accounts** in the left navigation pane.
|
||||||
4. At the top of the **Service Accounts** page, click **Create Service Account**.
|
4. At the top of the **Service Accounts** page, click **Create Service Account**.
|
||||||
|
|
||||||
- Under **Service account details** page, define the **Name** and **Description** for the new service account, and then click **Create and Continue**.
|
- Under **Service account details** page, define the **Name** and **Description** for the new service account, and then click **Create and Continue**.
|
||||||
- Under **Grant this service account access to project** you do not need to define a role, so click **Continue**.
|
- Under **Grant this service account access to project** you do not need to define a role, so click **Continue**.
|
||||||
- Under **Grant users access to project** you do not need to define a role, so click **Done** to complete the creation of the service account.
|
- Under **Grant users access to project** you do not need to define a role, so click **Done** to complete the creation of the service account.
|
||||||
|
|
||||||
### Set credentials for the service account
|
### Set credentials for the service account
|
||||||
|
|
||||||
|
@ -22,30 +22,30 @@ Note: Every LDAP provider needs to have a unique base DN. You can achieve this b
|
|||||||
|
|
||||||
The following fields are currently sent for users:
|
The following fields are currently sent for users:
|
||||||
|
|
||||||
- `cn`: User's username
|
- `cn`: User's username
|
||||||
- `uid`: Unique user identifier
|
- `uid`: Unique user identifier
|
||||||
- `uidNumber`: A unique numeric identifier for the user
|
- `uidNumber`: A unique numeric identifier for the user
|
||||||
- `name`: User's name
|
- `name`: User's name
|
||||||
- `displayName`: User's name
|
- `displayName`: User's name
|
||||||
- `mail`: User's email address
|
- `mail`: User's email address
|
||||||
- `objectClass`: A list of these strings:
|
- `objectClass`: A list of these strings:
|
||||||
- "user"
|
- "user"
|
||||||
- "organizationalPerson"
|
- "organizationalPerson"
|
||||||
- "goauthentik.io/ldap/user"
|
- "goauthentik.io/ldap/user"
|
||||||
- `memberOf`: A list of all DNs that the user is a member of
|
- `memberOf`: A list of all DNs that the user is a member of
|
||||||
- `homeDirectory`: A default home directory path for the user, by default `/home/$username`. Can be overwritten by setting `homeDirectory` as an attribute on users or groups.
|
- `homeDirectory`: A default home directory path for the user, by default `/home/$username`. Can be overwritten by setting `homeDirectory` as an attribute on users or groups.
|
||||||
- `ak-active`: "true" if the account is active, otherwise "false"
|
- `ak-active`: "true" if the account is active, otherwise "false"
|
||||||
- `ak-superuser`: "true" if the account is part of a group with superuser permissions, otherwise "false"
|
- `ak-superuser`: "true" if the account is part of a group with superuser permissions, otherwise "false"
|
||||||
|
|
||||||
The following fields are current set for groups:
|
The following fields are current set for groups:
|
||||||
|
|
||||||
- `cn`: The group's name
|
- `cn`: The group's name
|
||||||
- `uid`: Unique group identifier
|
- `uid`: Unique group identifier
|
||||||
- `gidNumber`: A unique numeric identifier for the group
|
- `gidNumber`: A unique numeric identifier for the group
|
||||||
- `member`: A list of all DNs of the groups members
|
- `member`: A list of all DNs of the groups members
|
||||||
- `objectClass`: A list of these strings:
|
- `objectClass`: A list of these strings:
|
||||||
- "group"
|
- "group"
|
||||||
- "goauthentik.io/ldap/group"
|
- "goauthentik.io/ldap/group"
|
||||||
|
|
||||||
A virtual group is also created for each user, they have the same fields as groups but have an additional objectClass: `goauthentik.io/ldap/virtual-group`.
|
A virtual group is also created for each user, they have the same fields as groups but have an additional objectClass: `goauthentik.io/ldap/virtual-group`.
|
||||||
The virtual groups gidNumber is equal to the uidNumber of the user.
|
The virtual groups gidNumber is equal to the uidNumber of the user.
|
||||||
@ -78,9 +78,9 @@ All bind modes rely on flows.
|
|||||||
|
|
||||||
The following stages are supported:
|
The following stages are supported:
|
||||||
|
|
||||||
- [Identification](../../flows-stages/stages/identification/index.md)
|
- [Identification](../../flows-stages/stages/identification/index.md)
|
||||||
- [Password](../../flows-stages/stages/password/index.md)
|
- [Password](../../flows-stages/stages/password/index.md)
|
||||||
- [Authenticator validation](../../flows-stages/stages/authenticator_validate/index.md)
|
- [Authenticator validation](../../flows-stages/stages/authenticator_validate/index.md)
|
||||||
|
|
||||||
Note: Authenticator validation currently only supports DUO, TOTP and static authenticators.
|
Note: Authenticator validation currently only supports DUO, TOTP and static authenticators.
|
||||||
|
|
||||||
@ -90,9 +90,9 @@ The following stages are supported:
|
|||||||
|
|
||||||
SMS-based authenticators are not supported as they require a code to be sent from authentik, which is not possible during the bind.
|
SMS-based authenticators are not supported as they require a code to be sent from authentik, which is not possible during the bind.
|
||||||
|
|
||||||
- [User Logout](../../flows-stages/stages/user_logout.md)
|
- [User Logout](../../flows-stages/stages/user_logout.md)
|
||||||
- [User Login](../../flows-stages/stages/user_login/index.md)
|
- [User Login](../../flows-stages/stages/user_login/index.md)
|
||||||
- [Deny](../../flows-stages/stages/deny.md)
|
- [Deny](../../flows-stages/stages/deny.md)
|
||||||
|
|
||||||
#### Direct bind
|
#### Direct bind
|
||||||
|
|
||||||
|
@ -25,12 +25,12 @@ scopes=openid email my-other-scope
|
|||||||
|
|
||||||
The response contains the following fields:
|
The response contains the following fields:
|
||||||
|
|
||||||
- `device_code`: Device code, which is the code kept on the device
|
- `device_code`: Device code, which is the code kept on the device
|
||||||
- `verification_uri`: The URL to be shown to the enduser to input the code
|
- `verification_uri`: The URL to be shown to the enduser to input the code
|
||||||
- `verification_uri_complete`: The same URL as above except the code will be prefilled
|
- `verification_uri_complete`: The same URL as above except the code will be prefilled
|
||||||
- `user_code`: The raw code for the enduser to input
|
- `user_code`: The raw code for the enduser to input
|
||||||
- `expires_in`: The total seconds after which this token will expire
|
- `expires_in`: The total seconds after which this token will expire
|
||||||
- `interval`: The interval in seconds for how often the device should check the token status
|
- `interval`: The interval in seconds for how often the device should check the token status
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -68,14 +68,14 @@ return True
|
|||||||
|
|
||||||
#### GitHub compatibility
|
#### GitHub compatibility
|
||||||
|
|
||||||
- `user`: No-op, is accepted for compatibility but does not give access to any resources
|
- `user`: No-op, is accepted for compatibility but does not give access to any resources
|
||||||
- `read:user`: Same as above
|
- `read:user`: Same as above
|
||||||
- `user:email`: Allows read-only access to `/user`, including email address
|
- `user:email`: Allows read-only access to `/user`, including email address
|
||||||
- `read:org`: Allows read-only access to `/user/teams`, listing all the user's groups as teams.
|
- `read:org`: Allows read-only access to `/user/teams`, listing all the user's groups as teams.
|
||||||
|
|
||||||
#### authentik
|
#### authentik
|
||||||
|
|
||||||
- `goauthentik.io/api`: This scope grants the refresh token access to the authentik API on behalf of the user
|
- `goauthentik.io/api`: This scope grants the refresh token access to the authentik API on behalf of the user
|
||||||
|
|
||||||
## Default scopes <span class="badge badge--version">authentik 2022.7+</span>
|
## Default scopes <span class="badge badge--version">authentik 2022.7+</span>
|
||||||
|
|
||||||
|
@ -20,5 +20,5 @@ import User from "../../../expressions/_user.md";
|
|||||||
|
|
||||||
<User />
|
<User />
|
||||||
|
|
||||||
- `request`: The current request. This may be `None` if there is no contextual request. See ([Django documentation](https://docs.djangoproject.com/en/3.0/ref/request-response/#httprequest-objects))
|
- `request`: The current request. This may be `None` if there is no contextual request. See ([Django documentation](https://docs.djangoproject.com/en/3.0/ref/request-response/#httprequest-objects))
|
||||||
- Other arbitrary arguments given by the provider, this is documented on the provider.
|
- Other arbitrary arguments given by the provider, this is documented on the provider.
|
||||||
|
@ -4,8 +4,8 @@ title: Custom headers
|
|||||||
|
|
||||||
The proxy can send custom headers to your upstream application. These can be configured in one of two ways:
|
The proxy can send custom headers to your upstream application. These can be configured in one of two ways:
|
||||||
|
|
||||||
- Group attributes; this allows for inheritance, but only allows static values
|
- Group attributes; this allows for inheritance, but only allows static values
|
||||||
- Property mappings; this allows for dynamic values
|
- Property mappings; this allows for dynamic values
|
||||||
|
|
||||||
## Group attributes
|
## Group attributes
|
||||||
|
|
||||||
|
@ -26,8 +26,8 @@ In the Proxy Provider, make sure to use the _Forward auth (domain level)_ mode.
|
|||||||
|
|
||||||
This mode differs from the _Forward auth (single application)_ mode in the following points:
|
This mode differs from the _Forward auth (single application)_ mode in the following points:
|
||||||
|
|
||||||
- You don't have to configure an application in authentik for each domain
|
- You don't have to configure an application in authentik for each domain
|
||||||
- Users don't have to authorize multiple times
|
- Users don't have to authorize multiple times
|
||||||
|
|
||||||
There are, however, also some downsides, mainly the fact that you **can't** restrict individual applications to different users.
|
There are, however, also some downsides, mainly the fact that you **can't** restrict individual applications to different users.
|
||||||
|
|
||||||
|
@ -56,6 +56,6 @@ A new connection is created every time an endpoint is selected in the [User Inte
|
|||||||
|
|
||||||
The following features are currently supported:
|
The following features are currently supported:
|
||||||
|
|
||||||
- Bi-directional clipboard
|
- Bi-directional clipboard
|
||||||
- Audio redirection (from remote machine to browser)
|
- Audio redirection (from remote machine to browser)
|
||||||
- Resizing
|
- Resizing
|
||||||
|
@ -18,9 +18,9 @@ Authentication requests against the Radius Server use a flow in the background.
|
|||||||
|
|
||||||
The following stages are supported:
|
The following stages are supported:
|
||||||
|
|
||||||
- [Identification](../../flows-stages/stages/identification/index.md)
|
- [Identification](../../flows-stages/stages/identification/index.md)
|
||||||
- [Password](../../flows-stages/stages/password/index.md)
|
- [Password](../../flows-stages/stages/password/index.md)
|
||||||
- [Authenticator validation](../../flows-stages/stages/authenticator_validate/index.md)
|
- [Authenticator validation](../../flows-stages/stages/authenticator_validate/index.md)
|
||||||
|
|
||||||
Note: Authenticator validation currently only supports DUO, TOTP, and static authenticators.
|
Note: Authenticator validation currently only supports DUO, TOTP, and static authenticators.
|
||||||
|
|
||||||
@ -28,9 +28,9 @@ The following stages are supported:
|
|||||||
|
|
||||||
SMS-based authenticators are not supported because they require a code to be sent from authentik, which is not possible during the bind.
|
SMS-based authenticators are not supported because they require a code to be sent from authentik, which is not possible during the bind.
|
||||||
|
|
||||||
- [User Logout](../../flows-stages/stages/user_logout.md)
|
- [User Logout](../../flows-stages/stages/user_logout.md)
|
||||||
- [User Login](../../flows-stages/stages/user_login/index.md)
|
- [User Login](../../flows-stages/stages/user_login/index.md)
|
||||||
- [Deny](../../flows-stages/stages/deny.md)
|
- [Deny](../../flows-stages/stages/deny.md)
|
||||||
|
|
||||||
### RADIUS attributes
|
### RADIUS attributes
|
||||||
|
|
||||||
|
@ -22,11 +22,11 @@ The metadata download link can also be copied with a button on the provider over
|
|||||||
|
|
||||||
You can select a custom SAML Property Mapping after which the NameID field will be generated. If left default, the following checks are done:
|
You can select a custom SAML Property Mapping after which the NameID field will be generated. If left default, the following checks are done:
|
||||||
|
|
||||||
- When the request asks for `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`, the NameID will be set to the hashed user ID.
|
- When the request asks for `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`, the NameID will be set to the hashed user ID.
|
||||||
- When the request asks for `urn:oasis:names:tc:SAML:2.0:nameid-format:X509SubjectName`, the NameID will be set to the user's `distinguishedName` attribute. This attribute is set by the LDAP source by default. If the attribute does not exist, it will fall back the persistent identifier.
|
- When the request asks for `urn:oasis:names:tc:SAML:2.0:nameid-format:X509SubjectName`, the NameID will be set to the user's `distinguishedName` attribute. This attribute is set by the LDAP source by default. If the attribute does not exist, it will fall back the persistent identifier.
|
||||||
- When the request asks for `urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName`, the NameID will be set to the user's UPN. This is also set by the LDAP source, and also falls back to the persistent identifier.
|
- When the request asks for `urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName`, the NameID will be set to the user's UPN. This is also set by the LDAP source, and also falls back to the persistent identifier.
|
||||||
- When the request asks for `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`, the NameID will be set based on the user's session ID.
|
- When the request asks for `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`, the NameID will be set based on the user's session ID.
|
||||||
- When the request asks for `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`, the NameID will be set to the user's email address.
|
- When the request asks for `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`, the NameID will be set to the user's email address.
|
||||||
|
|
||||||
:::warning
|
:::warning
|
||||||
Keep in mind that with the default settings, users are free to change their email addresses. As such it is recommended to use `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`, as this cannot be changed.
|
Keep in mind that with the default settings, users are free to change their email addresses. As such it is recommended to use `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`, as this cannot be changed.
|
||||||
|
@ -20,8 +20,8 @@ When adding the SCIM provider, you must define the **Backchannel provider using
|
|||||||
|
|
||||||
Data is synchronized in multiple ways:
|
Data is synchronized in multiple ways:
|
||||||
|
|
||||||
- When a user/group is created/modified/deleted, that action is sent to all SCIM providers
|
- When a user/group is created/modified/deleted, that action is sent to all SCIM providers
|
||||||
- Periodically (once an hour), all SCIM providers are fully synchronized
|
- Periodically (once an hour), all SCIM providers are fully synchronized
|
||||||
|
|
||||||
The actual synchronization process is run in the authentik worker. To allow this process to better to scale, a task is started for each 100 users and groups, so when multiple workers are available the workload will be distributed.
|
The actual synchronization process is run in the authentik worker. To allow this process to better to scale, a task is started for each 100 users and groups, so when multiple workers are available the workload will be distributed.
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ By default, service accounts are excluded from being synchronized. This can be c
|
|||||||
|
|
||||||
SCIM defines multiple optional features, some of which are supported by the SCIM provider.
|
SCIM defines multiple optional features, some of which are supported by the SCIM provider.
|
||||||
|
|
||||||
- Patch updates
|
- Patch updates
|
||||||
|
|
||||||
If the service provider supports patch updates, authentik will use patch requests to add/remove members of groups. For all other updates, such as user updates and other group updates, PUT requests are used.
|
If the service provider supports patch updates, authentik will use patch requests to add/remove members of groups. For all other updates, such as user updates and other group updates, PUT requests are used.
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ Similar to [other outposts](../add-secure-apps/outposts/index.mdx), this outpost
|
|||||||
|
|
||||||
#### Persistence
|
#### Persistence
|
||||||
|
|
||||||
- `/media` is used to store icons and such, but not required, and if not mounted, authentik will allow you to set a URL to icons in place of a file upload
|
- `/media` is used to store icons and such, but not required, and if not mounted, authentik will allow you to set a URL to icons in place of a file upload
|
||||||
|
|
||||||
### Background Worker
|
### Background Worker
|
||||||
|
|
||||||
@ -37,8 +37,8 @@ This container executes background tasks, such as sending emails, the event noti
|
|||||||
|
|
||||||
#### Persistence
|
#### Persistence
|
||||||
|
|
||||||
- `/certs` is used for authentik to import external certs, which in most cases shouldn't be used for SAML, but rather if you use authentik without a reverse proxy, this can be used for example for the [Let's Encrypt integration](../sys-mgmt/certificates.md#lets-encrypt)
|
- `/certs` is used for authentik to import external certs, which in most cases shouldn't be used for SAML, but rather if you use authentik without a reverse proxy, this can be used for example for the [Let's Encrypt integration](../sys-mgmt/certificates.md#lets-encrypt)
|
||||||
- `/templates` is used for [custom email templates](../add-secure-apps/flows-stages/stages/email/index.mdx#custom-templates), and as with the other ones fully optional
|
- `/templates` is used for [custom email templates](../add-secure-apps/flows-stages/stages/email/index.mdx#custom-templates), and as with the other ones fully optional
|
||||||
|
|
||||||
### PostgreSQL
|
### PostgreSQL
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ authentik uses PostgreSQL to store all of its configuration and other data (excl
|
|||||||
|
|
||||||
#### Persistence
|
#### Persistence
|
||||||
|
|
||||||
- `/var/lib/postgresql/data` is used to store the PostgreSQL database
|
- `/var/lib/postgresql/data` is used to store the PostgreSQL database
|
||||||
|
|
||||||
On Kubernetes, with the default Helm chart and using the packaged PostgreSQL sub-chart, persistent data is stored in a PVC.
|
On Kubernetes, with the default Helm chart and using the packaged PostgreSQL sub-chart, persistent data is stored in a PVC.
|
||||||
|
|
||||||
@ -56,6 +56,6 @@ authentik uses Redis as a message-queue and a cache. Data in Redis is not requir
|
|||||||
|
|
||||||
#### Persistence
|
#### Persistence
|
||||||
|
|
||||||
- `/data` is used to store the Redis data
|
- `/data` is used to store the Redis data
|
||||||
|
|
||||||
On Kubernetes, with the default Helm chart and using the packaged Redis sub-chart, persistent data is stored in a PVC.
|
On Kubernetes, with the default Helm chart and using the packaged Redis sub-chart, persistent data is stored in a PVC.
|
||||||
|
@ -12,13 +12,13 @@ Blueprints offer a new way to template, automate and distribute authentik config
|
|||||||
|
|
||||||
Blueprints are yaml files, whose format is described further in [File structure](./v1/structure). Blueprints can be applied in one of two ways:
|
Blueprints are yaml files, whose format is described further in [File structure](./v1/structure). Blueprints can be applied in one of two ways:
|
||||||
|
|
||||||
- As a Blueprint instance, which is a YAML file mounted into the authentik (worker) container. This file is read and applied regularly (every 60 minutes). Multiple instances can be created for a single blueprint file, and instances can be given context key:value attributes to configure the blueprint.
|
- As a Blueprint instance, which is a YAML file mounted into the authentik (worker) container. This file is read and applied regularly (every 60 minutes). Multiple instances can be created for a single blueprint file, and instances can be given context key:value attributes to configure the blueprint.
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Starting with authentik 2022.12.1, authentik watches for file modification/creation events in the blueprint directory and will automatically trigger a discovery when a new blueprint file is created, and trigger a blueprint apply when a file is modified.
|
Starting with authentik 2022.12.1, authentik watches for file modification/creation events in the blueprint directory and will automatically trigger a discovery when a new blueprint file is created, and trigger a blueprint apply when a file is modified.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
- As a Flow import, which is a YAML file uploaded via the Browser/API. This file is validated and applied directly after being uploaded, but is not further monitored/applied.
|
- As a Flow import, which is a YAML file uploaded via the Browser/API. This file is validated and applied directly after being uploaded, but is not further monitored/applied.
|
||||||
|
|
||||||
Starting with authentik 2022.8, blueprints are used to manage authentik default flows and other system objects. These blueprints can be disabled/replaced with custom blueprints in certain circumstances.
|
Starting with authentik 2022.8, blueprints are used to manage authentik default flows and other system objects. These blueprints can be disabled/replaced with custom blueprints in certain circumstances.
|
||||||
|
|
||||||
@ -26,9 +26,9 @@ Starting with authentik 2022.8, blueprints are used to manage authentik default
|
|||||||
|
|
||||||
The authentik container by default looks for blueprints in `/blueprints`. Underneath this directory, there are a couple default subdirectories:
|
The authentik container by default looks for blueprints in `/blueprints`. Underneath this directory, there are a couple default subdirectories:
|
||||||
|
|
||||||
- `/blueprints/default`: Default blueprints for default flows, tenants, etc
|
- `/blueprints/default`: Default blueprints for default flows, tenants, etc
|
||||||
- `/blueprints/example`: Example blueprints for common configurations and flows
|
- `/blueprints/example`: Example blueprints for common configurations and flows
|
||||||
- `/blueprints/system`: System blueprints for authentik managed Property mappings, etc
|
- `/blueprints/system`: System blueprints for authentik managed Property mappings, etc
|
||||||
|
|
||||||
Any additional `.yaml` file in `/blueprints` will be discovered and automatically instantiated, depending on their labels.
|
Any additional `.yaml` file in `/blueprints` will be discovered and automatically instantiated, depending on their labels.
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ See [examples](https://github.com/search?q=repo%3Agoauthentik%2Fauthentik+path%3
|
|||||||
|
|
||||||
#### Attributes
|
#### Attributes
|
||||||
|
|
||||||
- `identifiers`: Key-value attributes used to match the blueprint instance
|
- `identifiers`: Key-value attributes used to match the blueprint instance
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@ -20,6 +20,6 @@ See [examples](https://github.com/search?q=repo%3Agoauthentik%2Fauthentik+path%3
|
|||||||
name: Default - Password change flow
|
name: Default - Password change flow
|
||||||
```
|
```
|
||||||
|
|
||||||
- `required`: (Default: `true`) Configure if the blueprint instance must exist
|
- `required`: (Default: `true`) Configure if the blueprint instance must exist
|
||||||
|
|
||||||
If this is set to `true` and no blueprint instance matches the query above, an error will be thrown. Otherwise, execution will continue without applying anything extra.
|
If this is set to `true` and no blueprint instance matches the query above, an error will be thrown. Otherwise, execution will continue without applying anything extra.
|
||||||
|
@ -166,9 +166,9 @@ This tag takes 3 arguments:
|
|||||||
!Enumerate [<iterable>, <output_object_type>, <single_item_yaml>]
|
!Enumerate [<iterable>, <output_object_type>, <single_item_yaml>]
|
||||||
```
|
```
|
||||||
|
|
||||||
- **iterable**: Any Python iterable or custom tag that resolves to such iterable
|
- **iterable**: Any Python iterable or custom tag that resolves to such iterable
|
||||||
- **output_object_type**: `SEQ` or `MAP`. Controls whether the returned YAML will be a mapping or a sequence.
|
- **output_object_type**: `SEQ` or `MAP`. Controls whether the returned YAML will be a mapping or a sequence.
|
||||||
- **single_item_yaml**: The YAML to use to create a single entry in the output object
|
- **single_item_yaml**: The YAML to use to create a single entry in the output object
|
||||||
|
|
||||||
2. `!Index` tag:
|
2. `!Index` tag:
|
||||||
|
|
||||||
@ -182,7 +182,7 @@ This tag takes 1 argument:
|
|||||||
!Index <depth>
|
!Index <depth>
|
||||||
```
|
```
|
||||||
|
|
||||||
- **depth**: Must be >= 0. A depth of 0 refers to the `!Enumerate` tag this tag is located in. A depth of 1 refers to one `!Enumerate` tag above that (to be used when multiple `!Enumerate` tags are nested inside each other).
|
- **depth**: Must be >= 0. A depth of 0 refers to the `!Enumerate` tag this tag is located in. A depth of 1 refers to one `!Enumerate` tag above that (to be used when multiple `!Enumerate` tags are nested inside each other).
|
||||||
|
|
||||||
Accesses the `!Enumerate` tag's iterable and resolves to the index of the item currently being iterated (in case `!Enumerate` is iterating over a sequence), or the mapping key (in case `!Enumerate` is iterating over a mapping).
|
Accesses the `!Enumerate` tag's iterable and resolves to the index of the item currently being iterated (in case `!Enumerate` is iterating over a sequence), or the mapping key (in case `!Enumerate` is iterating over a mapping).
|
||||||
|
|
||||||
@ -200,7 +200,7 @@ This tag takes 1 argument:
|
|||||||
!Value <depth>
|
!Value <depth>
|
||||||
```
|
```
|
||||||
|
|
||||||
- **depth**: Must be >= 0. A depth of 0 refers to the `!Enumerate` tag this tag is located in. A depth of 1 refers to one `!Enumerate` tag above that (to be used when multiple `!Enumerate` tags are nested inside each other).
|
- **depth**: Must be >= 0. A depth of 0 refers to the `!Enumerate` tag this tag is located in. A depth of 1 refers to one `!Enumerate` tag above that (to be used when multiple `!Enumerate` tags are nested inside each other).
|
||||||
|
|
||||||
Accesses the `!Enumerate` tag's iterable and resolves to the value of the item currently being iterated.
|
Accesses the `!Enumerate` tag's iterable and resolves to the value of the item currently being iterated.
|
||||||
|
|
||||||
|
@ -11,12 +11,12 @@ The main settings that brands influence are flows and branding.
|
|||||||
|
|
||||||
You can explicitly select, in your instance's Brand settings, the default flow to use for the following configurations:
|
You can explicitly select, in your instance's Brand settings, the default flow to use for the following configurations:
|
||||||
|
|
||||||
- Authentication flow: the flow used to authenticate users. If left empty, the first applicable flow sorted by the slug is used.
|
- Authentication flow: the flow used to authenticate users. If left empty, the first applicable flow sorted by the slug is used.
|
||||||
- Invalidation flow: for typical use cases, select the `default-invalidation-flow` (Logout) flow. This flow logs the user out of authentik when the application session ends (user logs out of the app).
|
- Invalidation flow: for typical use cases, select the `default-invalidation-flow` (Logout) flow. This flow logs the user out of authentik when the application session ends (user logs out of the app).
|
||||||
- Recovery flow: if set, the user can access an option to recover their login credentials.
|
- Recovery flow: if set, the user can access an option to recover their login credentials.
|
||||||
- Unenrollment flow: if set, users are able to unenroll themselves using this flow. If no flow is set, option is not shown.
|
- Unenrollment flow: if set, users are able to unenroll themselves using this flow. If no flow is set, option is not shown.
|
||||||
- User settings flow: if set, users are able to configure details of their profile.
|
- User settings flow: if set, users are able to configure details of their profile.
|
||||||
- Device code flow: if set, the OAuth Device Code profile can be used, and the selected flow will be used to enter the code.
|
- Device code flow: if set, the OAuth Device Code profile can be used, and the selected flow will be used to enter the code.
|
||||||
|
|
||||||
If a default flow is _not_ set in the brand, then authentik selects any flow that:
|
If a default flow is _not_ set in the brand, then authentik selects any flow that:
|
||||||
|
|
||||||
|
@ -6,23 +6,23 @@ The user interface can be customized through attributes, and will be inherited f
|
|||||||
|
|
||||||
The following features can be enabled/disabled. By default, all of them are enabled:
|
The following features can be enabled/disabled. By default, all of them are enabled:
|
||||||
|
|
||||||
- `settings.enabledFeatures.apiDrawer`
|
- `settings.enabledFeatures.apiDrawer`
|
||||||
|
|
||||||
API Request drawer in navbar
|
API Request drawer in navbar
|
||||||
|
|
||||||
- `settings.enabledFeatures.notificationDrawer`
|
- `settings.enabledFeatures.notificationDrawer`
|
||||||
|
|
||||||
Notification drawer in navbar
|
Notification drawer in navbar
|
||||||
|
|
||||||
- `settings.enabledFeatures.settings`
|
- `settings.enabledFeatures.settings`
|
||||||
|
|
||||||
Settings link in navbar
|
Settings link in navbar
|
||||||
|
|
||||||
- `settings.enabledFeatures.applicationEdit`
|
- `settings.enabledFeatures.applicationEdit`
|
||||||
|
|
||||||
Application edit in library (only shown when user is superuser)
|
Application edit in library (only shown when user is superuser)
|
||||||
|
|
||||||
- `settings.enabledFeatures.search`
|
- `settings.enabledFeatures.search`
|
||||||
|
|
||||||
Search bar
|
Search bar
|
||||||
|
|
||||||
|
@ -52,9 +52,9 @@ import Objects from "../../expressions/_objects.md";
|
|||||||
|
|
||||||
<Objects />
|
<Objects />
|
||||||
|
|
||||||
- `request`: A PolicyRequest object, which has the following properties:
|
- `request`: A PolicyRequest object, which has the following properties:
|
||||||
|
|
||||||
- `request.user`: The current user, against which the policy is applied. See [User](../../users-sources/user/index.mdx)
|
- `request.user`: The current user, against which the policy is applied. See [User](../../users-sources/user/index.mdx)
|
||||||
|
|
||||||
:::caution
|
:::caution
|
||||||
When a policy is executed in the context of a flow, this will be set to the user initiaing request, and will only be changed by a `user_login` stage. For that reason, using this value in authentication flow policies may not return the expected user. Use `context['pending_user']` instead; User Identification and other stages update this value during flow execution.
|
When a policy is executed in the context of a flow, this will be set to the user initiaing request, and will only be changed by a `user_login` stage. For that reason, using this value in authentication flow policies may not return the expected user. Use `context['pending_user']` instead; User Identification and other stages update this value during flow execution.
|
||||||
@ -62,42 +62,42 @@ import Objects from "../../expressions/_objects.md";
|
|||||||
If the user is not authenticated, this will be set to a user called _AnonymousUser_, which is an instance of [authentik.core.models.User](https://docs.djangoproject.com/en/4.1/ref/contrib/auth/#django.contrib.auth.models.User) (authentik uses django-guardian for per-object permissions, [see](https://django-guardian.readthedocs.io/en/stable/)).
|
If the user is not authenticated, this will be set to a user called _AnonymousUser_, which is an instance of [authentik.core.models.User](https://docs.djangoproject.com/en/4.1/ref/contrib/auth/#django.contrib.auth.models.User) (authentik uses django-guardian for per-object permissions, [see](https://django-guardian.readthedocs.io/en/stable/)).
|
||||||
:::
|
:::
|
||||||
|
|
||||||
- `request.http_request`: The Django HTTP Request. See [Django documentation](https://docs.djangoproject.com/en/4.1/ref/request-response/#httprequest-objects).
|
- `request.http_request`: The Django HTTP Request. See [Django documentation](https://docs.djangoproject.com/en/4.1/ref/request-response/#httprequest-objects).
|
||||||
- `request.obj`: A Django Model instance. This is only set if the policy is ran against an object.
|
- `request.obj`: A Django Model instance. This is only set if the policy is ran against an object.
|
||||||
- `request.context`: A dictionary with dynamic data. This depends on the origin of the execution.
|
- `request.context`: A dictionary with dynamic data. This depends on the origin of the execution.
|
||||||
|
|
||||||
- `geoip`: GeoIP dictionary. The following fields are available:
|
- `geoip`: GeoIP dictionary. The following fields are available:
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
For basic country matching, consider using a [GeoIP policy](./index.md#geoip-policy).
|
For basic country matching, consider using a [GeoIP policy](./index.md#geoip-policy).
|
||||||
:::
|
:::
|
||||||
|
|
||||||
- `continent`: a two character continent code like `NA` (North America) or `OC` (Oceania).
|
- `continent`: a two character continent code like `NA` (North America) or `OC` (Oceania).
|
||||||
- `country`: the two character [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) alpha code for the country.
|
- `country`: the two character [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) alpha code for the country.
|
||||||
- `lat`: the approximate latitude of the location associated with the IP address.
|
- `lat`: the approximate latitude of the location associated with the IP address.
|
||||||
- `long`: the approximate longitude of the location associated with the IP address.
|
- `long`: the approximate longitude of the location associated with the IP address.
|
||||||
- `city`: the name of the city. May be empty.
|
- `city`: the name of the city. May be empty.
|
||||||
|
|
||||||
```python
|
```python
|
||||||
return context["geoip"]["continent"] == "EU"
|
return context["geoip"]["continent"] == "EU"
|
||||||
```
|
```
|
||||||
|
|
||||||
- `asn`: ASN dictionary. The following fields are available:
|
- `asn`: ASN dictionary. The following fields are available:
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
For basic ASN matching, consider using a [GeoIP policy](./index.md#geoip-policy).
|
For basic ASN matching, consider using a [GeoIP policy](./index.md#geoip-policy).
|
||||||
:::
|
:::
|
||||||
|
|
||||||
- `asn`: the autonomous system number associated with the IP address.
|
- `asn`: the autonomous system number associated with the IP address.
|
||||||
- `as_org`: the organization associated with the registered autonomous system number for the IP address.
|
- `as_org`: the organization associated with the registered autonomous system number for the IP address.
|
||||||
- `network`: the network associated with the record. In particular, this is the largest network where all of the fields except `ip_address` have the same value.
|
- `network`: the network associated with the record. In particular, this is the largest network where all of the fields except `ip_address` have the same value.
|
||||||
|
|
||||||
```python
|
```python
|
||||||
return context["asn"]["asn"] == 64496
|
return context["asn"]["asn"] == 64496
|
||||||
```
|
```
|
||||||
|
|
||||||
- `ak_is_sso_flow`: Boolean which is true if request was initiated by authenticating through an external provider.
|
- `ak_is_sso_flow`: Boolean which is true if request was initiated by authenticating through an external provider.
|
||||||
- `ak_client_ip`: Client's IP Address or 255.255.255.255 if no IP Address could be extracted. Can be [compared](#comparing-ip-addresses), for example
|
- `ak_client_ip`: Client's IP Address or 255.255.255.255 if no IP Address could be extracted. Can be [compared](#comparing-ip-addresses), for example
|
||||||
|
|
||||||
```python
|
```python
|
||||||
return ak_client_ip in ip_network('10.0.0.0/24')
|
return ak_client_ip in ip_network('10.0.0.0/24')
|
||||||
@ -111,24 +111,24 @@ Additionally, when the policy is executed from a flow, every variable from the f
|
|||||||
|
|
||||||
This includes the following:
|
This includes the following:
|
||||||
|
|
||||||
- `context['flow_plan']`: The actual flow plan itself, can be used to inject stages.
|
- `context['flow_plan']`: The actual flow plan itself, can be used to inject stages.
|
||||||
|
|
||||||
- `context['flow_plan'].context`: The context of the currently active flow, which differs from the policy context. Some fields of flow plan context are passed to the root context, and updated from it, like 'prompt_data', but not every variable
|
- `context['flow_plan'].context`: The context of the currently active flow, which differs from the policy context. Some fields of flow plan context are passed to the root context, and updated from it, like 'prompt_data', but not every variable
|
||||||
- `context['flow_plan'].context['redirect']`: The URL the user should be redirected to after the flow execution succeeds. (Optional)
|
- `context['flow_plan'].context['redirect']`: The URL the user should be redirected to after the flow execution succeeds. (Optional)
|
||||||
|
|
||||||
- `context['prompt_data']`: Data which has been saved from a prompt stage or an external source. (Optional)
|
- `context['prompt_data']`: Data which has been saved from a prompt stage or an external source. (Optional)
|
||||||
- `context['application']`: The application the user is in the process of authorizing. (Optional)
|
- `context['application']`: The application the user is in the process of authorizing. (Optional)
|
||||||
- `context['source']`: The source the user is authenticating/enrolling with. (Optional)
|
- `context['source']`: The source the user is authenticating/enrolling with. (Optional)
|
||||||
- `context['pending_user']`: The currently pending user, see [User](../../users-sources/user/user_ref.md)
|
- `context['pending_user']`: The currently pending user, see [User](../../users-sources/user/user_ref.md)
|
||||||
- `context['is_restored']`: Contains the flow token when the flow plan was restored from a link, for example the user clicked a link to a flow which was sent by an email stage. (Optional)
|
- `context['is_restored']`: Contains the flow token when the flow plan was restored from a link, for example the user clicked a link to a flow which was sent by an email stage. (Optional)
|
||||||
- `context['auth_method']`: Authentication method (this value is set by password stages) (Optional)
|
- `context['auth_method']`: Authentication method (this value is set by password stages) (Optional)
|
||||||
|
|
||||||
Depending on method, `context['auth_method_args']` is also set.
|
Depending on method, `context['auth_method_args']` is also set.
|
||||||
|
|
||||||
Can be any of:
|
Can be any of:
|
||||||
|
|
||||||
- `password`: Standard password login
|
- `password`: Standard password login
|
||||||
- `auth_mfa`: MFA login (this method is only set if no password was used)
|
- `auth_mfa`: MFA login (this method is only set if no password was used)
|
||||||
|
|
||||||
Sets `context['auth_method_args']` to
|
Sets `context['auth_method_args']` to
|
||||||
|
|
||||||
@ -145,9 +145,9 @@ This includes the following:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
- `auth_webauthn_pwl`: Password-less WebAuthn login
|
- `auth_webauthn_pwl`: Password-less WebAuthn login
|
||||||
- `jwt`: OAuth Machine-to-machine login via external JWT
|
- `jwt`: OAuth Machine-to-machine login via external JWT
|
||||||
- `app_password`: App password (token)
|
- `app_password`: App password (token)
|
||||||
|
|
||||||
Sets `context['auth_method_args']` to
|
Sets `context['auth_method_args']` to
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ This includes the following:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
- `ldap`: LDAP bind authentication
|
- `ldap`: LDAP bind authentication
|
||||||
|
|
||||||
Sets `context['auth_method_args']` to
|
Sets `context['auth_method_args']` to
|
||||||
|
|
||||||
|
@ -39,16 +39,16 @@ By default, authentik's Password policy is compliant with [NIST's recommendation
|
|||||||
This policy allows you to specify password rules, such as length and required characters.
|
This policy allows you to specify password rules, such as length and required characters.
|
||||||
The following rules can be set:
|
The following rules can be set:
|
||||||
|
|
||||||
- Minimum amount of uppercase characters.
|
- Minimum amount of uppercase characters.
|
||||||
- Minimum amount of lowercase characters.
|
- Minimum amount of lowercase characters.
|
||||||
- Minimum amount of symbols characters.
|
- Minimum amount of symbols characters.
|
||||||
- Minimum length.
|
- Minimum length.
|
||||||
- Symbol charset (define which characters are counted as symbols).
|
- Symbol charset (define which characters are counted as symbols).
|
||||||
|
|
||||||
Starting with authentik 2022.11.0, the following checks can also be done with this policy:
|
Starting with authentik 2022.11.0, the following checks can also be done with this policy:
|
||||||
|
|
||||||
- Check the password hash against the database of [Have I Been Pwned](https://haveibeenpwned.com/). Only the first 5 characters of the hashed password are transmitted, the rest is compared in authentik
|
- Check the password hash against the database of [Have I Been Pwned](https://haveibeenpwned.com/). Only the first 5 characters of the hashed password are transmitted, the rest is compared in authentik
|
||||||
- Check the password against the password complexity checker [zxcvbn](https://github.com/dropbox/zxcvbn), which detects weak password on various metrics.
|
- Check the password against the password complexity checker [zxcvbn](https://github.com/dropbox/zxcvbn), which detects weak password on various metrics.
|
||||||
|
|
||||||
### Reputation Policy
|
### Reputation Policy
|
||||||
|
|
||||||
|
@ -33,15 +33,15 @@ Authentication is done via the `Authorization` header, same as the regular API.
|
|||||||
|
|
||||||
All messages have two fields, `instruction` and `args`. Instruction is any number from this list:
|
All messages have two fields, `instruction` and `args`. Instruction is any number from this list:
|
||||||
|
|
||||||
- `0`: ACK, simply acknowledges the previous message
|
- `0`: ACK, simply acknowledges the previous message
|
||||||
- `1`: HELLO, used for monitoring and regularly sent by outposts
|
- `1`: HELLO, used for monitoring and regularly sent by outposts
|
||||||
- `2`: TRIGGER_UPDATE, sent by authentik to trigger a reload of the configuration
|
- `2`: TRIGGER_UPDATE, sent by authentik to trigger a reload of the configuration
|
||||||
|
|
||||||
Arguments for these messages vary, all though these common args are always sent:
|
Arguments for these messages vary, all though these common args are always sent:
|
||||||
|
|
||||||
- `args['uuid']`: A unique UUID generated on startup of an outpost, used to uniquely identify it.
|
- `args['uuid']`: A unique UUID generated on startup of an outpost, used to uniquely identify it.
|
||||||
|
|
||||||
These fields are only sent for HELLO instructions:
|
These fields are only sent for HELLO instructions:
|
||||||
|
|
||||||
- `args['version']`: Version of the outpost
|
- `args['version']`: Version of the outpost
|
||||||
- `args['buildHash']`: Build hash of the outpost, when available
|
- `args['buildHash']`: Build hash of the outpost, when available
|
||||||
|
@ -10,47 +10,47 @@ If you find any documentation that doesn't match these guidelines, feel free to
|
|||||||
|
|
||||||
## General style guidelines
|
## General style guidelines
|
||||||
|
|
||||||
- Try to order the documentation sections in the order that makes it easiest for the user to follow. That is, order the sections in the same order as the actual workflow used to accomplish the task.
|
- Try to order the documentation sections in the order that makes it easiest for the user to follow. That is, order the sections in the same order as the actual workflow used to accomplish the task.
|
||||||
|
|
||||||
- Use headings (sub-titles) to break up long documents, and make it easier to find a specific section.
|
- Use headings (sub-titles) to break up long documents, and make it easier to find a specific section.
|
||||||
|
|
||||||
- Add cross-reference links to related content whenever possible.
|
- Add cross-reference links to related content whenever possible.
|
||||||
|
|
||||||
- You can use standard [Docusaurus-specific features](https://docusaurus.io/docs/next/markdown-features), which include MDX elements such as tabs and admonitions.
|
- You can use standard [Docusaurus-specific features](https://docusaurus.io/docs/next/markdown-features), which include MDX elements such as tabs and admonitions.
|
||||||
|
|
||||||
## Terminology
|
## Terminology
|
||||||
|
|
||||||
### authentik names
|
### authentik names
|
||||||
|
|
||||||
- The product name authentik should always start with a lower-case "a" and end with a "k". Even if it is the first word in a sentence. :-)
|
- The product name authentik should always start with a lower-case "a" and end with a "k". Even if it is the first word in a sentence. :-)
|
||||||
|
|
||||||
- Our company name is Authentik Security, Inc. but in non-legal documentation you can shorten it to Authentik Security.
|
- Our company name is Authentik Security, Inc. but in non-legal documentation you can shorten it to Authentik Security.
|
||||||
|
|
||||||
### Industry terms, technology, and other tools
|
### Industry terms, technology, and other tools
|
||||||
|
|
||||||
- When referring to external tools, or an industry term or technology, always follow the exact capitalization that the product or company itself uses on their website, in their official documentation, or what the industry uses in consensus.
|
- When referring to external tools, or an industry term or technology, always follow the exact capitalization that the product or company itself uses on their website, in their official documentation, or what the industry uses in consensus.
|
||||||
|
|
||||||
- Try to avoid using abbreviations if possible.
|
- Try to avoid using abbreviations if possible.
|
||||||
|
|
||||||
- Use acronyms where it makes sense (for commonly used terms like SAML or RBAC). If an acronym is less-known, spell it out in parentheses after the first use.
|
- Use acronyms where it makes sense (for commonly used terms like SAML or RBAC). If an acronym is less-known, spell it out in parentheses after the first use.
|
||||||
|
|
||||||
## Writing style
|
## Writing style
|
||||||
|
|
||||||
- authentik documentation strives for a friendly, but not overly so, tone. It's ok to be a little bit conversational, and to address the reader in second person: "Next, you need to configure the log in settings."
|
- authentik documentation strives for a friendly, but not overly so, tone. It's ok to be a little bit conversational, and to address the reader in second person: "Next, you need to configure the log in settings."
|
||||||
|
|
||||||
- Our documentation uses American English ("z" not "s").
|
- Our documentation uses American English ("z" not "s").
|
||||||
|
|
||||||
- Use the present tense and active voice in almost all cases:
|
- Use the present tense and active voice in almost all cases:
|
||||||
|
|
||||||
- DON'T: "The Applications page will be loaded."
|
- DON'T: "The Applications page will be loaded."
|
||||||
|
|
||||||
- DO: "The Applications page displays."
|
- DO: "The Applications page displays."
|
||||||
|
|
||||||
- Phrasing should never blame the user, and should be subjective:
|
- Phrasing should never blame the user, and should be subjective:
|
||||||
|
|
||||||
- DON'T: "Never modify the default file."
|
- DON'T: "Never modify the default file."
|
||||||
|
|
||||||
- DO: "We recommend that you do not modify the default file, because this can result in unexpected issues."
|
- DO: "We recommend that you do not modify the default file, because this can result in unexpected issues."
|
||||||
|
|
||||||
## Formatting
|
## Formatting
|
||||||
|
|
||||||
@ -58,37 +58,37 @@ Formatting in documentation is important; it improves comprehension and readabil
|
|||||||
|
|
||||||
### Fonts and font styling
|
### Fonts and font styling
|
||||||
|
|
||||||
- When referring to UI elements or components in the authentik UI, such as field names, labels, etc., use **bold** text.
|
- When referring to UI elements or components in the authentik UI, such as field names, labels, etc., use **bold** text.
|
||||||
|
|
||||||
- When referring to internal components in authentik, like the policy engine, or blueprints, do not use any special formatting. Link to the relevant documentation when possible.
|
- When referring to internal components in authentik, like the policy engine, or blueprints, do not use any special formatting. Link to the relevant documentation when possible.
|
||||||
|
|
||||||
- Use `code` format when referring to:
|
- Use `code` format when referring to:
|
||||||
|
|
||||||
- commands
|
- commands
|
||||||
- file paths
|
- file paths
|
||||||
- file names
|
- file names
|
||||||
- directory names
|
- directory names
|
||||||
- code snippets (single line or a block of code)
|
- code snippets (single line or a block of code)
|
||||||
|
|
||||||
- For variables or placeholders use _italic_ font for the variable, and use place-holder names that makes it obvious that the user needs to replace it.
|
- For variables or placeholders use _italic_ font for the variable, and use place-holder names that makes it obvious that the user needs to replace it.
|
||||||
|
|
||||||
Example: <kbd>https://<em>company-domain</em>/source/oauth/callback/<em>source-slug</em></kbd>
|
Example: <kbd>https://<em>company-domain</em>/source/oauth/callback/<em>source-slug</em></kbd>
|
||||||
|
|
||||||
When using variables in code snippets, make sure to specify if the value is something the user needs to define, is system-defined or generated.
|
When using variables in code snippets, make sure to specify if the value is something the user needs to define, is system-defined or generated.
|
||||||
|
|
||||||
- When referring to authentik functionality and features, such as flows, stages, sources, or policies, do not capitalize and do not use bold or italic text. When possible link to the corresponding documentation.
|
- When referring to authentik functionality and features, such as flows, stages, sources, or policies, do not capitalize and do not use bold or italic text. When possible link to the corresponding documentation.
|
||||||
|
|
||||||
### Titles and headers
|
### Titles and headers
|
||||||
|
|
||||||
- Both titles and headers (H1, H2, H3) use sentence style capitalization, meaning that only the first word is capitalized. However, if the title or header includes a proper noun (name of a product, etc) then capitalize those words.
|
- Both titles and headers (H1, H2, H3) use sentence style capitalization, meaning that only the first word is capitalized. However, if the title or header includes a proper noun (name of a product, etc) then capitalize those words.
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
- Configure your provider
|
- Configure your provider
|
||||||
- Configure the Google Workspace provider
|
- Configure the Google Workspace provider
|
||||||
|
|
||||||
- Make sure the title/header is descriptive, and tells the reader what that section is about. Try to avoid titles or headers like "Overview". Instead say "About authentik policies".
|
- Make sure the title/header is descriptive, and tells the reader what that section is about. Try to avoid titles or headers like "Overview". Instead say "About authentik policies".
|
||||||
|
|
||||||
- Use the imperative verb form (not the gerund form) for procedural topics. For example, use "Configure your instance" instead of "Configuring your instance".
|
- Use the imperative verb form (not the gerund form) for procedural topics. For example, use "Configure your instance" instead of "Configuring your instance".
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
|
||||||
@ -134,16 +134,16 @@ Write your warning here.
|
|||||||
|
|
||||||
## Word choices
|
## Word choices
|
||||||
|
|
||||||
- **May** versus **might** versus **can**
|
- **May** versus **might** versus **can**
|
||||||
Typically, the word "may" is not used in technical writing, because it implies permission (rather than ability) to do something. Instead use the word "can". Use "might" when the scenario could be different in certain environments. Be sparing with your use of "might"; this word implies unpredictability, not our favorite thing with software.
|
Typically, the word "may" is not used in technical writing, because it implies permission (rather than ability) to do something. Instead use the word "can". Use "might" when the scenario could be different in certain environments. Be sparing with your use of "might"; this word implies unpredictability, not our favorite thing with software.
|
||||||
|
|
||||||
- DON'T: "You may use an Expression policy to enforce MFA adherence."
|
- DON'T: "You may use an Expression policy to enforce MFA adherence."
|
||||||
|
|
||||||
- DO: "You can use an Expression policy to enforce MFA adherence."
|
- DO: "You can use an Expression policy to enforce MFA adherence."
|
||||||
|
|
||||||
- Do: "Values might differ depending on the source of the property mappings.""
|
- Do: "Values might differ depending on the source of the property mappings.""
|
||||||
|
|
||||||
- **Login**, **log in**, and **log in to**
|
- **Login**, **log in**, and **log in to**
|
||||||
As a descriptive term, use one word: "login". (The login panel.)
|
As a descriptive term, use one word: "login". (The login panel.)
|
||||||
As a verb, use "log in", with two words. (This stage prompts the user to log in.)
|
As a verb, use "log in", with two words. (This stage prompts the user to log in.)
|
||||||
As a verb with the proposition "to", use "log in to". (Log in to the application.)
|
As a verb with the proposition "to", use "log in to". (Log in to the application.)
|
||||||
|
@ -6,13 +6,13 @@ In technical documentation, there are document "types" (similar to how there are
|
|||||||
|
|
||||||
The most common types are:
|
The most common types are:
|
||||||
|
|
||||||
- [**Combo**](./combo.md): For most topics (unless they are very large and complex), we can combine the procedural and conceptual information into a single document. A handy guideline to follow is: "If the actual 1., 2., 3. steps are buried at the bottom, and a reader has to scroll multiple times to find them, then the combo approach is _not_ the right one".
|
- [**Combo**](./combo.md): For most topics (unless they are very large and complex), we can combine the procedural and conceptual information into a single document. A handy guideline to follow is: "If the actual 1., 2., 3. steps are buried at the bottom, and a reader has to scroll multiple times to find them, then the combo approach is _not_ the right one".
|
||||||
|
|
||||||
- [**Procedural**](./procedural.md): these are How To docs, the HOW information, with step-by-step instructions for accomplishing a task. This is what most people are looking for when they open the docs... and best practice is to separate the procedural docs from long, lengthy conceptual or reference docs.
|
- [**Procedural**](./procedural.md): these are How To docs, the HOW information, with step-by-step instructions for accomplishing a task. This is what most people are looking for when they open the docs... and best practice is to separate the procedural docs from long, lengthy conceptual or reference docs.
|
||||||
|
|
||||||
- [**Conceptual**](./conceptual.md): these docs provide the WHY information, and explain when to use a feature (or when not to!), and general concepts behind the feature or functionality.
|
- [**Conceptual**](./conceptual.md): these docs provide the WHY information, and explain when to use a feature (or when not to!), and general concepts behind the feature or functionality.
|
||||||
|
|
||||||
- [**Reference**](./reference.md): this is typically tables or lists of reference information, such as configuration values, or functions, or most commmonly APIs.
|
- [**Reference**](./reference.md): this is typically tables or lists of reference information, such as configuration values, or functions, or most commmonly APIs.
|
||||||
|
|
||||||
### Add a new integration
|
### Add a new integration
|
||||||
|
|
||||||
|
@ -6,23 +6,23 @@ Writing documentation for authentik is a great way for both new and experienced
|
|||||||
|
|
||||||
Adhering to the following guidelines will help us get your PRs merged much easier and faster, with fewer edits needed.
|
Adhering to the following guidelines will help us get your PRs merged much easier and faster, with fewer edits needed.
|
||||||
|
|
||||||
- Ideally, when you are making contributions to the documentation, you should fork and clone our repo, then [build it locally](#set-up-your-local-build), so that you can test the docs and run the required linting and spell checkers before pushing your PR. While you can do much of the writing and editing within the GitHub UI, you cannot run the required linters from the GitHub UI.
|
- Ideally, when you are making contributions to the documentation, you should fork and clone our repo, then [build it locally](#set-up-your-local-build), so that you can test the docs and run the required linting and spell checkers before pushing your PR. While you can do much of the writing and editing within the GitHub UI, you cannot run the required linters from the GitHub UI.
|
||||||
|
|
||||||
- Please refer to our [Style Guide](./style-guide.mdx) for authentik documentation. Here you will learn important guidelines about not capitalizing authentik, how we format our titles and headers, and much more.
|
- Please refer to our [Style Guide](./style-guide.mdx) for authentik documentation. Here you will learn important guidelines about not capitalizing authentik, how we format our titles and headers, and much more.
|
||||||
|
|
||||||
- Remember to use our [docs templates](./templates/index.md) when possible; they are already set up to follow our style guidelines, they make it a lot easier for you (no blank page frights!), and keeps the documentation structure and headings consistent.
|
- Remember to use our [docs templates](./templates/index.md) when possible; they are already set up to follow our style guidelines, they make it a lot easier for you (no blank page frights!), and keeps the documentation structure and headings consistent.
|
||||||
|
|
||||||
- To test how the documentation renders you can build locally and then use the Netlify Deploy Preview, especially when using Docusaurus-specific features. You can also run the `make website-watch` command on your local build, to see the rendered pages as you make changes.
|
- To test how the documentation renders you can build locally and then use the Netlify Deploy Preview, especially when using Docusaurus-specific features. You can also run the `make website-watch` command on your local build, to see the rendered pages as you make changes.
|
||||||
|
|
||||||
- Be sure to run the `make website` command on your local branch, before pushing the PR to the authentik repo. This command does important linting, and the build check in our repo will fail if the linting has not been done.
|
- Be sure to run the `make website` command on your local branch, before pushing the PR to the authentik repo. This command does important linting, and the build check in our repo will fail if the linting has not been done.
|
||||||
|
|
||||||
- For new entries, make sure to add any new pages to the appropriate `sidebar.js` file. Otherwise, the new page will not appear in the table of contents to the left.
|
- For new entries, make sure to add any new pages to the appropriate `sidebar.js` file. Otherwise, the new page will not appear in the table of contents to the left.
|
||||||
|
|
||||||
## Set up your local build
|
## Set up your local build
|
||||||
|
|
||||||
Requirements:
|
Requirements:
|
||||||
|
|
||||||
- Node.js 20 (or greater, we use Node.js 22)
|
- Node.js 20 (or greater, we use Node.js 22)
|
||||||
|
|
||||||
The docs and the code are in the same Github repo, at https://github.com/goauthentik/authentik, so if you have cloned the repo, you already have the docs.
|
The docs and the code are in the same Github repo, at https://github.com/goauthentik/authentik, so if you have cloned the repo, you already have the docs.
|
||||||
|
|
||||||
@ -32,15 +32,15 @@ The documentation site is situated in the `/website` folder of the repo.
|
|||||||
|
|
||||||
The site is built using npm, below are some useful make commands:
|
The site is built using npm, below are some useful make commands:
|
||||||
|
|
||||||
- **Installation**: `make website-install`
|
- **Installation**: `make website-install`
|
||||||
|
|
||||||
This command is required before running any of the following commands, and after upgrading any dependencies.
|
This command is required before running any of the following commands, and after upgrading any dependencies.
|
||||||
|
|
||||||
- **Formatting**: `make website`, `make website-lint-fix`, or `npm run prettier`
|
- **Formatting**: `make website`, `make website-lint-fix`, or `npm run prettier`
|
||||||
|
|
||||||
Run the appropriate formatting command for your set up before committing, to ensure consistent syntax, clean formatting, and verify links. Note that if the formatting command is not run, the build will fail with an error about linting.
|
Run the appropriate formatting command for your set up before committing, to ensure consistent syntax, clean formatting, and verify links. Note that if the formatting command is not run, the build will fail with an error about linting.
|
||||||
|
|
||||||
- **Live editing**: `make website-watch`
|
- **Live editing**: `make website-watch`
|
||||||
|
|
||||||
For real-time viewing of changes, as you make them.
|
For real-time viewing of changes, as you make them.
|
||||||
|
|
||||||
@ -54,8 +54,8 @@ In addition to following the [Style Guide](./style-guide.mdx) please review the
|
|||||||
|
|
||||||
For new integration documentation, please use the Integrations template in our [Github repo](https://github.com/goauthentik/authentik) at `/website/integrations/template/service.md`.
|
For new integration documentation, please use the Integrations template in our [Github repo](https://github.com/goauthentik/authentik) at `/website/integrations/template/service.md`.
|
||||||
|
|
||||||
- Make sure to add the service to a fitting category in `/website/sidebarsIntegrations.js`. If this is not done the service will not appear in the table of contents to the left.
|
- Make sure to add the service to a fitting category in `/website/sidebarsIntegrations.js`. If this is not done the service will not appear in the table of contents to the left.
|
||||||
|
|
||||||
- For placeholder domains, use `authentik.company` and `app-name.company`, where `app-name` is the name of the application that you are writing documentation for.
|
- For placeholder domains, use `authentik.company` and `app-name.company`, where `app-name` is the name of the application that you are writing documentation for.
|
||||||
|
|
||||||
- Try to order the documentation sections in an order that makes it easiest for the user to configure.
|
- Try to order the documentation sections in an order that makes it easiest for the user to configure.
|
||||||
|
@ -20,10 +20,10 @@ Prizes? Why, Yes! We've got a total prize pool of $5000 and a bunch of cool auth
|
|||||||
|
|
||||||
July 26-30, 2023
|
July 26-30, 2023
|
||||||
|
|
||||||
- Kickoff meeting is on Wednesday, July 26th, at 8:00am Pacific USA (UTC -7), 5:00pm in Central Europe (UTC +2), and 8:30pm in Mumbai (UTC +5.30)
|
- Kickoff meeting is on Wednesday, July 26th, at 8:00am Pacific USA (UTC -7), 5:00pm in Central Europe (UTC +2), and 8:30pm in Mumbai (UTC +5.30)
|
||||||
- Check-in calls on Thursday and Friday, for one hour, at the same times as above.
|
- Check-in calls on Thursday and Friday, for one hour, at the same times as above.
|
||||||
- Wrap-up and first demos on Saturday, starting at same times as above.
|
- Wrap-up and first demos on Saturday, starting at same times as above.
|
||||||
- Final demos, voting, and awards on Sunday! Yep, same times as above.
|
- Final demos, voting, and awards on Sunday! Yep, same times as above.
|
||||||
|
|
||||||
## Where
|
## Where
|
||||||
|
|
||||||
@ -35,20 +35,20 @@ If you already know what you and/or your team want to work on, you can open an [
|
|||||||
|
|
||||||
During the Kickoff call, there will be time to peruse existing Issues and add emotes to indicate your interest in working on it (or having it worked on!)
|
During the Kickoff call, there will be time to peruse existing Issues and add emotes to indicate your interest in working on it (or having it worked on!)
|
||||||
|
|
||||||
- 🚀 I want to work on this
|
- 🚀 I want to work on this
|
||||||
- ❤️ I want to see this worked on
|
- ❤️ I want to see this worked on
|
||||||
|
|
||||||
## Agenda
|
## Agenda
|
||||||
|
|
||||||
- **Wednesday, July 26th**: Kickoff, voting for topics to work on, teams formed, participants select the Issue/team they are going to work on, and get their environment set up. After the online kickoff, you can start your work at any time.
|
- **Wednesday, July 26th**: Kickoff, voting for topics to work on, teams formed, participants select the Issue/team they are going to work on, and get their environment set up. After the online kickoff, you can start your work at any time.
|
||||||
|
|
||||||
- **Thursday July 27th**: HackDay #1: participants working on their PRs, a one-hour Check-in call
|
- **Thursday July 27th**: HackDay #1: participants working on their PRs, a one-hour Check-in call
|
||||||
|
|
||||||
- **Friday, July 28th**: HackDay #2: participants working on their PRs, a one-hour Check-in call
|
- **Friday, July 28th**: HackDay #2: participants working on their PRs, a one-hour Check-in call
|
||||||
|
|
||||||
- **Saturday, July 29th**: an online “meeting” to do wrap-up, participants sign-up for demo slots (Saturday and Sunday slots available), then some demos
|
- **Saturday, July 29th**: an online “meeting” to do wrap-up, participants sign-up for demo slots (Saturday and Sunday slots available), then some demos
|
||||||
|
|
||||||
- **Sunday, July 30th**: rest of the demos, votes, and awards
|
- **Sunday, July 30th**: rest of the demos, votes, and awards
|
||||||
|
|
||||||
## About that money...
|
## About that money...
|
||||||
|
|
||||||
|
@ -22,12 +22,12 @@ Either [create a question on GitHub](https://github.com/goauthentik/authentik/is
|
|||||||
|
|
||||||
authentik consists of a few larger components:
|
authentik consists of a few larger components:
|
||||||
|
|
||||||
- _authentik_ the actual application server, is described below.
|
- _authentik_ the actual application server, is described below.
|
||||||
- _outpost-proxy_ is a Go application based on a forked version of oauth2_proxy, which does identity-aware reverse proxying.
|
- _outpost-proxy_ is a Go application based on a forked version of oauth2_proxy, which does identity-aware reverse proxying.
|
||||||
- _outpost-ldap_ is a Go LDAP server that uses the _authentik_ application server as its backend
|
- _outpost-ldap_ is a Go LDAP server that uses the _authentik_ application server as its backend
|
||||||
- _outpost-radius_ is a Go RADIUS server that uses the _authentik_ application server as its backend
|
- _outpost-radius_ is a Go RADIUS server that uses the _authentik_ application server as its backend
|
||||||
- _web_ is the web frontend, both for administrating and using authentik. It is written in TypeScript using lit-html and the PatternFly CSS Library.
|
- _web_ is the web frontend, both for administrating and using authentik. It is written in TypeScript using lit-html and the PatternFly CSS Library.
|
||||||
- _website_ is the Website/documentation, which uses docusaurus.
|
- _website_ is the Website/documentation, which uses docusaurus.
|
||||||
|
|
||||||
### authentik's structure
|
### authentik's structure
|
||||||
|
|
||||||
@ -128,10 +128,10 @@ Please be sure to refer to our [Style Guide](../developer-docs/docs/style-guide.
|
|||||||
|
|
||||||
The process described here has several goals:
|
The process described here has several goals:
|
||||||
|
|
||||||
- Maintain authentik's quality
|
- Maintain authentik's quality
|
||||||
- Fix problems that are important to users
|
- Fix problems that are important to users
|
||||||
- Engage the community in working toward the best possible authentik
|
- Engage the community in working toward the best possible authentik
|
||||||
- Enable a sustainable system for authentik's maintainers to review contributions
|
- Enable a sustainable system for authentik's maintainers to review contributions
|
||||||
|
|
||||||
Please follow these steps to have your contribution considered by the maintainers:
|
Please follow these steps to have your contribution considered by the maintainers:
|
||||||
|
|
||||||
@ -145,19 +145,19 @@ While the prerequisites above must be satisfied prior to having your pull reques
|
|||||||
|
|
||||||
### PR naming
|
### PR naming
|
||||||
|
|
||||||
- Use the format of `<package>: <verb> <description>`
|
- Use the format of `<package>: <verb> <description>`
|
||||||
- See [here](#authentiks-structure) for `package`
|
- See [here](#authentiks-structure) for `package`
|
||||||
- Examples:
|
- Examples:
|
||||||
`providers/saml2: fix parsing of requests`
|
`providers/saml2: fix parsing of requests`
|
||||||
`website/docs: add config info for GWS`
|
`website/docs: add config info for GWS`
|
||||||
|
|
||||||
### Git Commit Messages
|
### Git Commit Messages
|
||||||
|
|
||||||
- Use the format of `<package>: <verb> <description>`
|
- Use the format of `<package>: <verb> <description>`
|
||||||
- See [here](#authentiks-structure) for `package`
|
- See [here](#authentiks-structure) for `package`
|
||||||
- Example: `providers/saml2: fix parsing of requests`
|
- Example: `providers/saml2: fix parsing of requests`
|
||||||
- Reference issues and pull requests liberally after the first line
|
- Reference issues and pull requests liberally after the first line
|
||||||
- Naming of commits within a PR does not need to adhere to the guidelines as we squash merge PRs
|
- Naming of commits within a PR does not need to adhere to the guidelines as we squash merge PRs
|
||||||
|
|
||||||
### Python Style Guide
|
### Python Style Guide
|
||||||
|
|
||||||
@ -165,19 +165,19 @@ All Python code is linted with [black](https://black.readthedocs.io/en/stable/)
|
|||||||
|
|
||||||
authentik runs on Python 3.12 at the time of writing this.
|
authentik runs on Python 3.12 at the time of writing this.
|
||||||
|
|
||||||
- Use native type-annotations wherever possible.
|
- Use native type-annotations wherever possible.
|
||||||
- Add meaningful docstrings when possible.
|
- Add meaningful docstrings when possible.
|
||||||
- Ensure any database migrations work properly from the last stable version (this is checked via CI)
|
- Ensure any database migrations work properly from the last stable version (this is checked via CI)
|
||||||
- If your code changes central functions, make sure nothing else is broken.
|
- If your code changes central functions, make sure nothing else is broken.
|
||||||
|
|
||||||
### Documentation Style Guide
|
### Documentation Style Guide
|
||||||
|
|
||||||
Refer to the full [Style Guide](../developer-docs/docs/style-guide.mdx) for details, but here are some important highlights:
|
Refer to the full [Style Guide](../developer-docs/docs/style-guide.mdx) for details, but here are some important highlights:
|
||||||
|
|
||||||
- Our product name is authentik, with a lower-case "a" and a "k" on the end. Our company name is Authentik Security.
|
- Our product name is authentik, with a lower-case "a" and a "k" on the end. Our company name is Authentik Security.
|
||||||
|
|
||||||
- We use sentence style case in our titles and headings.
|
- We use sentence style case in our titles and headings.
|
||||||
|
|
||||||
- We use **bold** text to name UI components, and _italic_ text for variables.
|
- We use **bold** text to name UI components, and _italic_ text for variables.
|
||||||
|
|
||||||
- Use [MDX](https://mdxjs.com/) whenever appropriate. MDX, which uses React components, is useful for creating tabs, action buttons, and advanced content formatting.
|
- Use [MDX](https://mdxjs.com/) whenever appropriate. MDX, which uses React components, is useful for creating tabs, action buttons, and advanced content formatting.
|
||||||
|
@ -2,55 +2,55 @@
|
|||||||
|
|
||||||
### Creating a standard release
|
### Creating a standard release
|
||||||
|
|
||||||
- Ensure a branch exists for the version family (for 2022.12.2 the branch would be `version-2022.12`)
|
- Ensure a branch exists for the version family (for 2022.12.2 the branch would be `version-2022.12`)
|
||||||
- Merge all the commits that should be released on the version branch
|
- Merge all the commits that should be released on the version branch
|
||||||
|
|
||||||
If backporting commits to a non-current version branch, cherry-pick the commits.
|
If backporting commits to a non-current version branch, cherry-pick the commits.
|
||||||
|
|
||||||
- Check if any of the changes merged to the branch make changes to the API schema, and if so update the package `@goauthentik/api` in `/web`
|
- Check if any of the changes merged to the branch make changes to the API schema, and if so update the package `@goauthentik/api` in `/web`
|
||||||
- Push the branch, which will run the CI pipeline to make sure all tests pass
|
- Push the branch, which will run the CI pipeline to make sure all tests pass
|
||||||
- Create the version subdomain for the version branch ([see](https://github.com/goauthentik/terraform/commit/87792678ed525711be9c8c15dd4b931077dbaac2)) and add the subdomain in Netlify ([here](https://app.netlify.com/sites/authentik/settings/domain))
|
- Create the version subdomain for the version branch ([see](https://github.com/goauthentik/terraform/commit/87792678ed525711be9c8c15dd4b931077dbaac2)) and add the subdomain in Netlify ([here](https://app.netlify.com/sites/authentik/settings/domain))
|
||||||
- Create/update the release notes
|
- Create/update the release notes
|
||||||
|
|
||||||
#### For initial releases:
|
#### For initial releases:
|
||||||
|
|
||||||
- Copy `website/docs/releases/_template.md` to `website/docs/releases/v2022.12.md` and replace `xxxx.x` with the version that is being released
|
- Copy `website/docs/releases/_template.md` to `website/docs/releases/v2022.12.md` and replace `xxxx.x` with the version that is being released
|
||||||
|
|
||||||
- Fill in the section of `Breaking changes` and `New features`, or remove the headers if there's nothing applicable
|
- Fill in the section of `Breaking changes` and `New features`, or remove the headers if there's nothing applicable
|
||||||
|
|
||||||
- Run `git log --pretty=format:'- %s' version/2022.11.3...version-2022.12`, where `version/2022.11.3` is the tag of the previous stable release. This will output a list of all commits since the previous release.
|
- Run `git log --pretty=format:'- %s' version/2022.11.3...version-2022.12`, where `version/2022.11.3` is the tag of the previous stable release. This will output a list of all commits since the previous release.
|
||||||
|
|
||||||
- Paste the list of commits since the previous release under the `Minor changes/fixes` section.
|
- Paste the list of commits since the previous release under the `Minor changes/fixes` section.
|
||||||
|
|
||||||
Run `make gen-changelog` and use the contents of `changelog.md`. Remove merged PRs from bumped dependencies unless they fix security issues or are otherwise notable. Remove merged PRs with the `website/` prefix.
|
Run `make gen-changelog` and use the contents of `changelog.md`. Remove merged PRs from bumped dependencies unless they fix security issues or are otherwise notable. Remove merged PRs with the `website/` prefix.
|
||||||
|
|
||||||
- Sort the list of commits alphabetically and remove all commits that have little importance, like dependency updates and linting fixes
|
- Sort the list of commits alphabetically and remove all commits that have little importance, like dependency updates and linting fixes
|
||||||
|
|
||||||
- Run `make gen-diff` and copy the contents of `diff.md` under `API Changes`
|
- Run `make gen-diff` and copy the contents of `diff.md` under `API Changes`
|
||||||
|
|
||||||
- Update `website/sidebars.js` to include the new release notes, and move the oldest release into the `Previous versions` category.
|
- Update `website/sidebars.js` to include the new release notes, and move the oldest release into the `Previous versions` category.
|
||||||
|
|
||||||
If the release notes are created in advance without a fixed date for the release, only add them to the sidebar once the release is published.
|
If the release notes are created in advance without a fixed date for the release, only add them to the sidebar once the release is published.
|
||||||
|
|
||||||
- Run `make website`
|
- Run `make website`
|
||||||
|
|
||||||
#### For subsequent releases:
|
#### For subsequent releases:
|
||||||
|
|
||||||
- Paste the list of commits since the previous release into `website/docs/releases/v2022.12.md`, creating a new section called `## Fixed in 2022.12.2` underneath the `Minor changes/fixes` section
|
- Paste the list of commits since the previous release into `website/docs/releases/v2022.12.md`, creating a new section called `## Fixed in 2022.12.2` underneath the `Minor changes/fixes` section
|
||||||
|
|
||||||
- Run `make gen-changelog` and use the contents of `changelog.md`. Remove merged PRs from bumped dependencies unless they fix security issues or are otherwise notable. Remove merged PRs with the `website/` prefix.
|
- Run `make gen-changelog` and use the contents of `changelog.md`. Remove merged PRs from bumped dependencies unless they fix security issues or are otherwise notable. Remove merged PRs with the `website/` prefix.
|
||||||
|
|
||||||
- Run `make gen-diff` and copy the contents of `diff.md` under `API Changes`, replacing the previous changes
|
- Run `make gen-diff` and copy the contents of `diff.md` under `API Changes`, replacing the previous changes
|
||||||
|
|
||||||
- Run `make website`
|
- Run `make website`
|
||||||
|
|
||||||
- Run `bumpversion` on the version branch with the new version (i.e. `bumpversion --new-version 2022.12.2 minor --verbose`)
|
- Run `bumpversion` on the version branch with the new version (i.e. `bumpversion --new-version 2022.12.2 minor --verbose`)
|
||||||
- Push the tag and commit
|
- Push the tag and commit
|
||||||
- A GitHub actions workflow will start to run a last test in container images and create a draft release on GitHub
|
- A GitHub actions workflow will start to run a last test in container images and create a draft release on GitHub
|
||||||
- Edit the draft GitHub release
|
- Edit the draft GitHub release
|
||||||
|
|
||||||
- Make sure the title is formatted `Release 2022.12.0`
|
- Make sure the title is formatted `Release 2022.12.0`
|
||||||
- Add the following to the release notes
|
- Add the following to the release notes
|
||||||
|
|
||||||
```
|
```
|
||||||
See https://goauthentik.io/docs/releases/2022.12
|
See https://goauthentik.io/docs/releases/2022.12
|
||||||
@ -62,11 +62,11 @@
|
|||||||
See https://goauthentik.io/docs/releases/2022.12#fixed-in-2022121
|
See https://goauthentik.io/docs/releases/2022.12#fixed-in-2022121
|
||||||
```
|
```
|
||||||
|
|
||||||
- Auto-generate the full release notes using the GitHub _Generate Release Notes_ feature
|
- Auto-generate the full release notes using the GitHub _Generate Release Notes_ feature
|
||||||
|
|
||||||
### Preparing a security release
|
### Preparing a security release
|
||||||
|
|
||||||
- Create a draft GitHub Security advisory
|
- Create a draft GitHub Security advisory
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Template</summary>
|
<summary>Template</summary>
|
||||||
@ -96,14 +96,14 @@ Describe a workaround if possible
|
|||||||
|
|
||||||
If you have any questions or comments about this advisory:
|
If you have any questions or comments about this advisory:
|
||||||
|
|
||||||
- Email us at [security@goauthentik.io](mailto:security@goauthentik.io).
|
- Email us at [security@goauthentik.io](mailto:security@goauthentik.io).
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
- Request a CVE via the draft advisory
|
- Request a CVE via the draft advisory
|
||||||
- If possible, add the original reporter in the advisory
|
- If possible, add the original reporter in the advisory
|
||||||
- Implement a fix on a local branch `security/CVE-...`
|
- Implement a fix on a local branch `security/CVE-...`
|
||||||
|
|
||||||
The fix must include unit tests to ensure the issue can't happen again in the future
|
The fix must include unit tests to ensure the issue can't happen again in the future
|
||||||
|
|
||||||
@ -113,9 +113,9 @@ If you have any questions or comments about this advisory:
|
|||||||
|
|
||||||
Include the new file in the `/website/sidebars.js`
|
Include the new file in the `/website/sidebars.js`
|
||||||
|
|
||||||
- Check with the original reporter that the fix works as intended
|
- Check with the original reporter that the fix works as intended
|
||||||
- Wait for GitHub to assign a CVE
|
- Wait for GitHub to assign a CVE
|
||||||
- Announce the release of the vulnerability via Mailing list and discord
|
- Announce the release of the vulnerability via Mailing list and discord
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Mailing list template</summary>
|
<summary>Mailing list template</summary>
|
||||||
@ -139,12 +139,12 @@ We'll be publishing a security Issue (CVE-2022-xxxxx) and accompanying fix on _d
|
|||||||
|
|
||||||
### Creating a security release
|
### Creating a security release
|
||||||
|
|
||||||
- On the date specified in the announcement, push the local `security/CVE-2022-xxxxx` branch into a PR, and squash merge it if the pipeline passes
|
- On the date specified in the announcement, push the local `security/CVE-2022-xxxxx` branch into a PR, and squash merge it if the pipeline passes
|
||||||
- If the fix made any changes to the API schema, merge the PR to update the web API client
|
- If the fix made any changes to the API schema, merge the PR to update the web API client
|
||||||
- Cherry-pick the merge commit onto the version branch
|
- Cherry-pick the merge commit onto the version branch
|
||||||
- If the fix made any changes to the API schema, manually install the latest version of the API client in `/web`
|
- If the fix made any changes to the API schema, manually install the latest version of the API client in `/web`
|
||||||
- Resume the instructions above, starting with the `bumpversion` step
|
- Resume the instructions above, starting with the `bumpversion` step
|
||||||
- After the release has been published, update the Discord announcement and send another mail to the mailing list to point to the new releases
|
- After the release has been published, update the Discord announcement and send another mail to the mailing list to point to the new releases
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Mailing list template</summary>
|
<summary>Mailing list template</summary>
|
||||||
|
@ -6,9 +6,9 @@ If you want to only make changes on the UI, you don't need a backend running fro
|
|||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- Node.js (any recent version should work; we use 20.x to build)
|
- Node.js (any recent version should work; we use 20.x to build)
|
||||||
- Make (again, any recent version should work)
|
- Make (again, any recent version should work)
|
||||||
- Docker and Docker Compose
|
- Docker and Docker Compose
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Depending on platform, some native dependencies might be required. On macOS, run `brew install node@20`, and for Docker `brew install --cask docker`
|
Depending on platform, some native dependencies might be required. On macOS, run `brew install node@20`, and for Docker `brew install --cask docker`
|
||||||
|
@ -4,12 +4,12 @@ title: Full development environment
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- Python 3.12
|
- Python 3.12
|
||||||
- Poetry, which is used to manage dependencies
|
- Poetry, which is used to manage dependencies
|
||||||
- Go 1.23 or newer
|
- Go 1.23 or newer
|
||||||
- Node.js 21 or newer
|
- Node.js 21 or newer
|
||||||
- PostgreSQL 14 or newer
|
- PostgreSQL 14 or newer
|
||||||
- Redis (any recent version will do)
|
- Redis (any recent version will do)
|
||||||
|
|
||||||
## Services Setup
|
## Services Setup
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ If you want to only make changes to the website, you only need node.
|
|||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- Node.js (any recent version should work; we use 20.x to build)
|
- Node.js (any recent version should work; we use 20.x to build)
|
||||||
- Make (again, any recent version should work)
|
- Make (again, any recent version should work)
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
Depending on platform, some native dependencies might be required. On macOS, run `brew install node@20`
|
Depending on platform, some native dependencies might be required. On macOS, run `brew install node@20`
|
||||||
|
@ -18,9 +18,9 @@ To simplify translation you can use https://www.transifex.com/authentik/authenti
|
|||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- Node (any recent version should work, we use 16.x to build)
|
- Node (any recent version should work, we use 16.x to build)
|
||||||
- Make (again, any recent version should work)
|
- Make (again, any recent version should work)
|
||||||
- Docker
|
- Docker
|
||||||
|
|
||||||
Run `npm i` in the `/web` folder to install all dependencies.
|
Run `npm i` in the `/web` folder to install all dependencies.
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@ To get started working with Enterprise authentik, [upgrade](../install-config/up
|
|||||||
|
|
||||||
If this is a fresh install, refer to our [technical documentation](../install-config/index.mdx) for instructions to install and configure authentik.
|
If this is a fresh install, refer to our [technical documentation](../install-config/index.mdx) for instructions to install and configure authentik.
|
||||||
|
|
||||||
- [Docker Compose installation](../install-config/install/docker-compose.mdx)
|
- [Docker Compose installation](../install-config/install/docker-compose.mdx)
|
||||||
- [Kubernetes installation](../install-config/install/kubernetes.md)
|
- [Kubernetes installation](../install-config/install/kubernetes.md)
|
||||||
|
|
||||||
## Access Enterprise
|
## Access Enterprise
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ The Enterprise release of authentik provides all of the functionality that we ha
|
|||||||
|
|
||||||
Refer to our Enterprise documentation for information about creating and managing your organization, purchasing and activating a license, support, and managing billing and organization members.
|
Refer to our Enterprise documentation for information about creating and managing your organization, purchasing and activating a license, support, and managing billing and organization members.
|
||||||
|
|
||||||
- [Get started with Enterprise](./get-started.md)
|
- [Get started with Enterprise](./get-started.md)
|
||||||
- [Manage your Enterprise account](./manage-enterprise.md)
|
- [Manage your Enterprise account](./manage-enterprise.md)
|
||||||
- [Support for Enterprise accounts](./entsupport.md)
|
- [Support for Enterprise accounts](./entsupport.md)
|
||||||
|
|
||||||
Our standard technical documentation covers how to configure, customize, and use authentik, whether the open source version that we have built our reputation on, or our Enterprise version with dedicated support.
|
Our standard technical documentation covers how to configure, customize, and use authentik, whether the open source version that we have built our reputation on, or our Enterprise version with dedicated support.
|
||||||
|
@ -24,8 +24,8 @@ If you need to delete an organization open a ticket in the Support center.
|
|||||||
|
|
||||||
In the Customer portal you can remove members and invite new members to the organization. When you invite new members, you can specify the role for the new member.
|
In the Customer portal you can remove members and invite new members to the organization. When you invite new members, you can specify the role for the new member.
|
||||||
|
|
||||||
- **Member**: can view licenses, including the license key.
|
- **Member**: can view licenses, including the license key.
|
||||||
- **Owner**: can do everything the Member role can do, plus: add and remove members, order and renew licenses, and edit the organization.
|
- **Owner**: can do everything the Member role can do, plus: add and remove members, order and renew licenses, and edit the organization.
|
||||||
|
|
||||||
1. To manage membership in an organization, log in to the [Customer portal](./get-started.md#access-enterprise).
|
1. To manage membership in an organization, log in to the [Customer portal](./get-started.md#access-enterprise).
|
||||||
|
|
||||||
@ -97,11 +97,11 @@ The **Enterprise -> Licenses** page shows your current licenses' **Cumulative li
|
|||||||
|
|
||||||
The following events occur when a license expires or the internal/external user count is over the licensed user count for the time period below.
|
The following events occur when a license expires or the internal/external user count is over the licensed user count for the time period below.
|
||||||
|
|
||||||
- After 2 weeks of the expiry date administrators see a warning banner on the Admin interface
|
- After 2 weeks of the expiry date administrators see a warning banner on the Admin interface
|
||||||
|
|
||||||
- After another 2 weeks, users get a warning banner
|
- After another 2 weeks, users get a warning banner
|
||||||
|
|
||||||
- After another 2 weeks, the authentik Enterprise instance becomes “read-only”
|
- After another 2 weeks, the authentik Enterprise instance becomes “read-only”
|
||||||
|
|
||||||
### About users and licenses
|
### About users and licenses
|
||||||
|
|
||||||
|
@ -76,10 +76,10 @@ Check if a user has any authenticator devices. Only fully validated devices are
|
|||||||
|
|
||||||
Optionally, you can filter a specific device type. The following options are valid:
|
Optionally, you can filter a specific device type. The following options are valid:
|
||||||
|
|
||||||
- `totp`
|
- `totp`
|
||||||
- `duo`
|
- `duo`
|
||||||
- `static`
|
- `static`
|
||||||
- `webauthn`
|
- `webauthn`
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
- `ak_logger`: structlog BoundLogger. See ([structlog documentation](https://www.structlog.org/en/stable/api.html#structlog.BoundLogger))
|
- `ak_logger`: structlog BoundLogger. See ([structlog documentation](https://www.structlog.org/en/stable/api.html#structlog.BoundLogger))
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@ -8,4 +8,4 @@
|
|||||||
ak_logger.info("Passing structured data", request=request)
|
ak_logger.info("Passing structured data", request=request)
|
||||||
```
|
```
|
||||||
|
|
||||||
- `requests`: requests Session object. See ([request documentation](https://requests.readthedocs.io/en/master/user/advanced/))
|
- `requests`: requests Session object. See ([request documentation](https://requests.readthedocs.io/en/master/user/advanced/))
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
- `user`: The current user. This may be `None` if there is no contextual user. See [User](../users-sources/user/user_ref.md#object-properties).
|
- `user`: The current user. This may be `None` if there is no contextual user. See [User](../users-sources/user/user_ref.md#object-properties).
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -16,11 +16,11 @@ We offer two versions of authentik: the forever-free open source project upon wh
|
|||||||
|
|
||||||
The authentik product provides the following consoles:
|
The authentik product provides the following consoles:
|
||||||
|
|
||||||
- **Admin interface**: a visual tool for the creation and management of users and groups, tokens and credentials, application integrations, events, and the Flows that define standard and customizable login and authentication processes. Easy-to-read visual dashboards display system status, recent logins and authentication events, and application usage.
|
- **Admin interface**: a visual tool for the creation and management of users and groups, tokens and credentials, application integrations, events, and the Flows that define standard and customizable login and authentication processes. Easy-to-read visual dashboards display system status, recent logins and authentication events, and application usage.
|
||||||
|
|
||||||
- **User interface**: this console view in authentik displays all of the applications and integrations in which you have implemented authentik. Click on the app that you want to access to open it, or drill down to edit its configuration in the admin interface.
|
- **User interface**: this console view in authentik displays all of the applications and integrations in which you have implemented authentik. Click on the app that you want to access to open it, or drill down to edit its configuration in the admin interface.
|
||||||
|
|
||||||
- **Flows**: [_Flows_](./add-secure-apps/flows-stages/flow/index.md) are the steps by which the various _Stages_ of a login and authentication process occurs. A stage represents a single verification or logic step in the sign-on process. authentik allows for the customization and exact definition of these flows.
|
- **Flows**: [_Flows_](./add-secure-apps/flows-stages/flow/index.md) are the steps by which the various _Stages_ of a login and authentication process occurs. A stage represents a single verification or logic step in the sign-on process. authentik allows for the customization and exact definition of these flows.
|
||||||
|
|
||||||
In authentik, you can use Light or Dark mode for the Admin interface, User interface, and the Flow interface.
|
In authentik, you can use Light or Dark mode for the Admin interface, User interface, and the Flow interface.
|
||||||
|
|
||||||
@ -65,9 +65,9 @@ import useBaseUrl from "@docusaurus/useBaseUrl";
|
|||||||
|
|
||||||
Our tech docs cover the typical topics, from installation to configuration, adding providers, defining policies and creating login flows, event monitoring, security, and attributes. [Enterprise](./enterprise/index.md) version documentation is included here, within our standard tech docs.
|
Our tech docs cover the typical topics, from installation to configuration, adding providers, defining policies and creating login flows, event monitoring, security, and attributes. [Enterprise](./enterprise/index.md) version documentation is included here, within our standard tech docs.
|
||||||
|
|
||||||
- For information about integrating a specific application or software into authentik, refer to our **Integrations** section, accessible from the top menu bar.
|
- For information about integrating a specific application or software into authentik, refer to our **Integrations** section, accessible from the top menu bar.
|
||||||
|
|
||||||
- For developer-focused documentation, such as using our APIs and blueprints, setting up your development environment, translations, or how to contribute, refer to the [**Developer**](./developer-docs/index.md) area, accessible from the top menu bar.
|
- For developer-focused documentation, such as using our APIs and blueprints, setting up your development environment, translations, or how to contribute, refer to the [**Developer**](./developer-docs/index.md) area, accessible from the top menu bar.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
@ -6,10 +6,10 @@ title: Air-gapped environments
|
|||||||
|
|
||||||
By default, authentik creates outbound connections to the following URLs:
|
By default, authentik creates outbound connections to the following URLs:
|
||||||
|
|
||||||
- https://version.goauthentik.io: Periodic update check
|
- https://version.goauthentik.io: Periodic update check
|
||||||
- https://goauthentik.io: Anonymous analytics on startup
|
- https://goauthentik.io: Anonymous analytics on startup
|
||||||
- https://secure.gravatar.com: Avatars for users
|
- https://secure.gravatar.com: Avatars for users
|
||||||
- https://authentik.error-reporting.a7k.io: Error reporting
|
- https://authentik.error-reporting.a7k.io: Error reporting
|
||||||
|
|
||||||
To disable these outbound connections, adjust the settings as follows:
|
To disable these outbound connections, adjust the settings as follows:
|
||||||
|
|
||||||
@ -58,11 +58,11 @@ Afterwards, run the upgrade commands from the latest release notes.
|
|||||||
|
|
||||||
In addition to the configuration options above, the following [System settings](../sys-mgmt/settings.md) need to also be adjusted:
|
In addition to the configuration options above, the following [System settings](../sys-mgmt/settings.md) need to also be adjusted:
|
||||||
|
|
||||||
- **Avatars**: By default this setting uses [Gravatar](https://secure.gravatar.com/). The option can be set to a combination of any of the other options, for example `initials`
|
- **Avatars**: By default this setting uses [Gravatar](https://secure.gravatar.com/). The option can be set to a combination of any of the other options, for example `initials`
|
||||||
|
|
||||||
## Container images
|
## Container images
|
||||||
|
|
||||||
Container images can be pulled from the following URLs:
|
Container images can be pulled from the following URLs:
|
||||||
|
|
||||||
- ghcr.io/goauthentik/server (https://ghcr.io)
|
- ghcr.io/goauthentik/server (https://ghcr.io)
|
||||||
- beryju/authentik (https://index.docker.io)
|
- beryju/authentik (https://index.docker.io)
|
||||||
|
@ -12,8 +12,8 @@ The double-underscores are intentional, as all these settings are translated to
|
|||||||
|
|
||||||
All of these variables can be set to values, but you can also use a URI-like format to load values from other places:
|
All of these variables can be set to values, but you can also use a URI-like format to load values from other places:
|
||||||
|
|
||||||
- `env://<name>` Loads the value from the environment variable `<name>`. Fallback can be optionally set like `env://<name>?<default>`
|
- `env://<name>` Loads the value from the environment variable `<name>`. Fallback can be optionally set like `env://<name>?<default>`
|
||||||
- `file://<name>` Loads the value from the file `<name>`. Fallback can be optionally set like `file://<name>?<default>`
|
- `file://<name>` Loads the value from the file `<name>`. Fallback can be optionally set like `file://<name>?<default>`
|
||||||
|
|
||||||
## Set your environment variables
|
## Set your environment variables
|
||||||
|
|
||||||
@ -65,17 +65,17 @@ To check if your config has been applied correctly, you can run the following co
|
|||||||
|
|
||||||
## PostgreSQL Settings
|
## PostgreSQL Settings
|
||||||
|
|
||||||
- `AUTHENTIK_POSTGRESQL__HOST`: Hostname of your PostgreSQL Server
|
- `AUTHENTIK_POSTGRESQL__HOST`: Hostname of your PostgreSQL Server
|
||||||
- `AUTHENTIK_POSTGRESQL__NAME`: Database name
|
- `AUTHENTIK_POSTGRESQL__NAME`: Database name
|
||||||
- `AUTHENTIK_POSTGRESQL__USER`: Database user
|
- `AUTHENTIK_POSTGRESQL__USER`: Database user
|
||||||
- `AUTHENTIK_POSTGRESQL__PORT`: Database port, defaults to 5432
|
- `AUTHENTIK_POSTGRESQL__PORT`: Database port, defaults to 5432
|
||||||
- `AUTHENTIK_POSTGRESQL__PASSWORD`: Database password, defaults to the environment variable `POSTGRES_PASSWORD`
|
- `AUTHENTIK_POSTGRESQL__PASSWORD`: Database password, defaults to the environment variable `POSTGRES_PASSWORD`
|
||||||
- `AUTHENTIK_POSTGRESQL__USE_PGBOUNCER`: Adjust configuration to support connection to PgBouncer
|
- `AUTHENTIK_POSTGRESQL__USE_PGBOUNCER`: Adjust configuration to support connection to PgBouncer
|
||||||
- `AUTHENTIK_POSTGRESQL__USE_PGPOOL`: Adjust configuration to support connection to Pgpool
|
- `AUTHENTIK_POSTGRESQL__USE_PGPOOL`: Adjust configuration to support connection to Pgpool
|
||||||
- `AUTHENTIK_POSTGRESQL__SSLMODE`: Strictness of ssl verification. Defaults to `"verify-ca"`
|
- `AUTHENTIK_POSTGRESQL__SSLMODE`: Strictness of ssl verification. Defaults to `"verify-ca"`
|
||||||
- `AUTHENTIK_POSTGRESQL__SSLROOTCERT`: CA root for server ssl verification
|
- `AUTHENTIK_POSTGRESQL__SSLROOTCERT`: CA root for server ssl verification
|
||||||
- `AUTHENTIK_POSTGRESQL__SSLCERT`: Path to x509 client certificate to authenticate to server
|
- `AUTHENTIK_POSTGRESQL__SSLCERT`: Path to x509 client certificate to authenticate to server
|
||||||
- `AUTHENTIK_POSTGRESQL__SSLKEY`: Path to private key of `SSLCERT` certificate
|
- `AUTHENTIK_POSTGRESQL__SSLKEY`: Path to private key of `SSLCERT` certificate
|
||||||
|
|
||||||
All PostgreSQL settings, apart from `USE_PGBOUNCER` and `USE_PGPOOL`, support hot-reloading. Adding and removing read replicas doesn't support hot-reloading.
|
All PostgreSQL settings, apart from `USE_PGBOUNCER` and `USE_PGPOOL`, support hot-reloading. Adding and removing read replicas doesn't support hot-reloading.
|
||||||
|
|
||||||
@ -87,40 +87,40 @@ If read replicas are configured, the main database is not used for reads. If you
|
|||||||
|
|
||||||
The same PostgreSQL settings as described above are used for each read replica.
|
The same PostgreSQL settings as described above are used for each read replica.
|
||||||
|
|
||||||
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__HOST`
|
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__HOST`
|
||||||
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__NAME`
|
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__NAME`
|
||||||
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__USER`
|
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__USER`
|
||||||
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__PORT`
|
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__PORT`
|
||||||
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__PASSWORD`
|
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__PASSWORD`
|
||||||
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__SSLMODE`
|
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__SSLMODE`
|
||||||
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__SSLROOTCERT`
|
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__SSLROOTCERT`
|
||||||
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__SSLCERT`
|
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__SSLCERT`
|
||||||
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__SSLKEY`
|
- `AUTHENTIK_POSTGRESQL__READ_REPLICAS__0__SSLKEY`
|
||||||
|
|
||||||
Note that `USE_PGBOUNCER` and `USE_PGPOOL` are inherited from the main database configuration and are _not_ overridable on read replicas.
|
Note that `USE_PGBOUNCER` and `USE_PGPOOL` are inherited from the main database configuration and are _not_ overridable on read replicas.
|
||||||
|
|
||||||
## Redis Settings
|
## Redis Settings
|
||||||
|
|
||||||
- `AUTHENTIK_REDIS__HOST`: Redis server host when not using configuration URL
|
- `AUTHENTIK_REDIS__HOST`: Redis server host when not using configuration URL
|
||||||
- `AUTHENTIK_REDIS__PORT`: Redis server port when not using configuration URL
|
- `AUTHENTIK_REDIS__PORT`: Redis server port when not using configuration URL
|
||||||
- `AUTHENTIK_REDIS__DB`: Redis server database when not using configuration URL
|
- `AUTHENTIK_REDIS__DB`: Redis server database when not using configuration URL
|
||||||
- `AUTHENTIK_REDIS__USERNAME`: Redis server username when not using configuration URL
|
- `AUTHENTIK_REDIS__USERNAME`: Redis server username when not using configuration URL
|
||||||
- `AUTHENTIK_REDIS__PASSWORD`: Redis server password when not using configuration URL
|
- `AUTHENTIK_REDIS__PASSWORD`: Redis server password when not using configuration URL
|
||||||
- `AUTHENTIK_REDIS__TLS`: Redis server connection using TLS when not using configuration URL
|
- `AUTHENTIK_REDIS__TLS`: Redis server connection using TLS when not using configuration URL
|
||||||
- `AUTHENTIK_REDIS__TLS_REQS`: Redis server TLS connection requirements when not using configuration URL. Defaults to `"none"`. Allowed values are `"none"` and `"required"`.
|
- `AUTHENTIK_REDIS__TLS_REQS`: Redis server TLS connection requirements when not using configuration URL. Defaults to `"none"`. Allowed values are `"none"` and `"required"`.
|
||||||
- `AUTHENTIK_REDIS__TLS_CA_CERT`: Path to the Redis server TLS CA root when not using configuration URL. Defaults to `null`.
|
- `AUTHENTIK_REDIS__TLS_CA_CERT`: Path to the Redis server TLS CA root when not using configuration URL. Defaults to `null`.
|
||||||
|
|
||||||
## Result Backend Settings
|
## Result Backend Settings
|
||||||
|
|
||||||
- `AUTHENTIK_RESULT_BACKEND__URL`: Result backend configuration URL, uses [the Redis Settings](#redis-settings) by default
|
- `AUTHENTIK_RESULT_BACKEND__URL`: Result backend configuration URL, uses [the Redis Settings](#redis-settings) by default
|
||||||
|
|
||||||
## Cache Settings
|
## Cache Settings
|
||||||
|
|
||||||
- `AUTHENTIK_CACHE__URL`: Cache configuration URL, uses [the Redis Settings](#redis-settings) by default
|
- `AUTHENTIK_CACHE__URL`: Cache configuration URL, uses [the Redis Settings](#redis-settings) by default
|
||||||
- `AUTHENTIK_CACHE__TIMEOUT`: Timeout for cached data until it expires in seconds, defaults to 300
|
- `AUTHENTIK_CACHE__TIMEOUT`: Timeout for cached data until it expires in seconds, defaults to 300
|
||||||
- `AUTHENTIK_CACHE__TIMEOUT_FLOWS`: Timeout for cached flow plans until they expire in seconds, defaults to 300
|
- `AUTHENTIK_CACHE__TIMEOUT_FLOWS`: Timeout for cached flow plans until they expire in seconds, defaults to 300
|
||||||
- `AUTHENTIK_CACHE__TIMEOUT_POLICIES`: Timeout for cached policies until they expire in seconds, defaults to 300
|
- `AUTHENTIK_CACHE__TIMEOUT_POLICIES`: Timeout for cached policies until they expire in seconds, defaults to 300
|
||||||
- `AUTHENTIK_CACHE__TIMEOUT_REPUTATION`: Timeout for cached reputation until they expire in seconds, defaults to 300
|
- `AUTHENTIK_CACHE__TIMEOUT_REPUTATION`: Timeout for cached reputation until they expire in seconds, defaults to 300
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
`AUTHENTIK_CACHE__TIMEOUT_REPUTATION` only applies to the cache expiry, see [`AUTHENTIK_REPUTATION__EXPIRY`](#authentik_reputation__expiry-authentik-202382) to control how long reputation is persisted for.
|
`AUTHENTIK_CACHE__TIMEOUT_REPUTATION` only applies to the cache expiry, see [`AUTHENTIK_REPUTATION__EXPIRY`](#authentik_reputation__expiry-authentik-202382) to control how long reputation is persisted for.
|
||||||
@ -128,12 +128,12 @@ Note that `USE_PGBOUNCER` and `USE_PGPOOL` are inherited from the main database
|
|||||||
|
|
||||||
## Channel Layer Settings (inter-instance communication)
|
## Channel Layer Settings (inter-instance communication)
|
||||||
|
|
||||||
- `AUTHENTIK_CHANNEL__URL`: Channel layers configuration URL, uses [the Redis Settings](#redis-settings) by default
|
- `AUTHENTIK_CHANNEL__URL`: Channel layers configuration URL, uses [the Redis Settings](#redis-settings) by default
|
||||||
|
|
||||||
## Broker Settings
|
## Broker Settings
|
||||||
|
|
||||||
- `AUTHENTIK_BROKER__URL`: Broker configuration URL, defaults to Redis using [the respective settings](#redis-settings)
|
- `AUTHENTIK_BROKER__URL`: Broker configuration URL, defaults to Redis using [the respective settings](#redis-settings)
|
||||||
- `AUTHENTIK_BROKER__TRANSPORT_OPTIONS`: Base64-encoded broker transport options
|
- `AUTHENTIK_BROKER__TRANSPORT_OPTIONS`: Base64-encoded broker transport options
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
`AUTHENTIK_REDIS__CACHE_TIMEOUT_REPUTATION` only applies to the cache expiry, see [`AUTHENTIK_REPUTATION__EXPIRY`](#authentik_reputation__expiry-authentik-202382) to control how long reputation is persisted for.
|
`AUTHENTIK_REDIS__CACHE_TIMEOUT_REPUTATION` only applies to the cache expiry, see [`AUTHENTIK_REPUTATION__EXPIRY`](#authentik_reputation__expiry-authentik-202382) to control how long reputation is persisted for.
|
||||||
@ -141,13 +141,13 @@ Note that `USE_PGBOUNCER` and `USE_PGPOOL` are inherited from the main database
|
|||||||
|
|
||||||
## Listen Settings
|
## Listen Settings
|
||||||
|
|
||||||
- `AUTHENTIK_LISTEN__HTTP`: Listening address:port (e.g. `0.0.0.0:9000`) for HTTP (Applies to Server and Proxy outpost)
|
- `AUTHENTIK_LISTEN__HTTP`: Listening address:port (e.g. `0.0.0.0:9000`) for HTTP (Applies to Server and Proxy outpost)
|
||||||
- `AUTHENTIK_LISTEN__HTTPS`: Listening address:port (e.g. `0.0.0.0:9443`) for HTTPS (Applies to Server and Proxy outpost)
|
- `AUTHENTIK_LISTEN__HTTPS`: Listening address:port (e.g. `0.0.0.0:9443`) for HTTPS (Applies to Server and Proxy outpost)
|
||||||
- `AUTHENTIK_LISTEN__LDAP`: Listening address:port (e.g. `0.0.0.0:3389`) for LDAP (Applies to LDAP outpost)
|
- `AUTHENTIK_LISTEN__LDAP`: Listening address:port (e.g. `0.0.0.0:3389`) for LDAP (Applies to LDAP outpost)
|
||||||
- `AUTHENTIK_LISTEN__LDAPS`: Listening address:port (e.g. `0.0.0.0:6636`) for LDAPS (Applies to LDAP outpost)
|
- `AUTHENTIK_LISTEN__LDAPS`: Listening address:port (e.g. `0.0.0.0:6636`) for LDAPS (Applies to LDAP outpost)
|
||||||
- `AUTHENTIK_LISTEN__METRICS`: Listening address:port (e.g. `0.0.0.0:9300`) for Prometheus metrics (Applies to All)
|
- `AUTHENTIK_LISTEN__METRICS`: Listening address:port (e.g. `0.0.0.0:9300`) for Prometheus metrics (Applies to All)
|
||||||
- `AUTHENTIK_LISTEN__DEBUG`: Listening address:port (e.g. `0.0.0.0:9900`) for Go Debugging metrics (Applies to All)
|
- `AUTHENTIK_LISTEN__DEBUG`: Listening address:port (e.g. `0.0.0.0:9900`) for Go Debugging metrics (Applies to All)
|
||||||
- `AUTHENTIK_LISTEN__TRUSTED_PROXY_CIDRS`: List of comma-separated CIDRs that proxy headers should be accepted from (Applies to Server)
|
- `AUTHENTIK_LISTEN__TRUSTED_PROXY_CIDRS`: List of comma-separated CIDRs that proxy headers should be accepted from (Applies to Server)
|
||||||
|
|
||||||
Defaults to `127.0.0.0/8`, `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `fe80::/10`, `::1/128`.
|
Defaults to `127.0.0.0/8`, `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `fe80::/10`, `::1/128`.
|
||||||
|
|
||||||
@ -157,17 +157,17 @@ Note that `USE_PGBOUNCER` and `USE_PGPOOL` are inherited from the main database
|
|||||||
|
|
||||||
These settings affect where media files are stored. Those files include applications and sources icons. By default, they are stored on disk in the `/media` directory of the authentik container. S3 storage is also supported.
|
These settings affect where media files are stored. Those files include applications and sources icons. By default, they are stored on disk in the `/media` directory of the authentik container. S3 storage is also supported.
|
||||||
|
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__BACKEND`: Where to store files. Valid values are `file` and `s3`. For `file` storage, files are stored in a `/media` directory in the container. For `s3`, see below.
|
- `AUTHENTIK_STORAGE__MEDIA__BACKEND`: Where to store files. Valid values are `file` and `s3`. For `file` storage, files are stored in a `/media` directory in the container. For `s3`, see below.
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__S3__REGION`: S3 region where the bucket has been created. May be omitted depending on which S3 provider you use. No default.
|
- `AUTHENTIK_STORAGE__MEDIA__S3__REGION`: S3 region where the bucket has been created. May be omitted depending on which S3 provider you use. No default.
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__S3__USE_SSL`: Whether to use HTTPS when talking to the S3 storage providers. Defaults to `true`.
|
- `AUTHENTIK_STORAGE__MEDIA__S3__USE_SSL`: Whether to use HTTPS when talking to the S3 storage providers. Defaults to `true`.
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__S3__ENDPOINT`: Endpoint to use to talk to the S3 storage provider. Override the previous region and use_ssl settings. Must be a valid URL in the form of `https://s3.provider`. No default.
|
- `AUTHENTIK_STORAGE__MEDIA__S3__ENDPOINT`: Endpoint to use to talk to the S3 storage provider. Override the previous region and use_ssl settings. Must be a valid URL in the form of `https://s3.provider`. No default.
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__S3__SESSION_PROFILE`: Profile to use when using AWS SDK authentication. No default. Supports hot-reloading.
|
- `AUTHENTIK_STORAGE__MEDIA__S3__SESSION_PROFILE`: Profile to use when using AWS SDK authentication. No default. Supports hot-reloading.
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__S3__ACCESS_KEY`: Access key to authenticate to S3. May be omitted if using AWS SDK authentication. Supports hot-reloading.
|
- `AUTHENTIK_STORAGE__MEDIA__S3__ACCESS_KEY`: Access key to authenticate to S3. May be omitted if using AWS SDK authentication. Supports hot-reloading.
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__S3__SECRET_KEY`: Secret key to authenticate to S3. May be omitted if using AWS SDK authentication. Supports hot-reloading.
|
- `AUTHENTIK_STORAGE__MEDIA__S3__SECRET_KEY`: Secret key to authenticate to S3. May be omitted if using AWS SDK authentication. Supports hot-reloading.
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__S3__SECURITY_TOKEN`: Security token to authenticate to S3. May be omitted. Supports hot-reloading.
|
- `AUTHENTIK_STORAGE__MEDIA__S3__SECURITY_TOKEN`: Security token to authenticate to S3. May be omitted. Supports hot-reloading.
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__S3__BUCKET_NAME`: Name of the bucket to use to store files.
|
- `AUTHENTIK_STORAGE__MEDIA__S3__BUCKET_NAME`: Name of the bucket to use to store files.
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__S3__CUSTOM_DOMAIN`: Domain to use to create URLs for users. Mainly useful for non-AWS providers. May include a port. Must include the bucket. Example: `s3.company:8080/authentik-media`.
|
- `AUTHENTIK_STORAGE__MEDIA__S3__CUSTOM_DOMAIN`: Domain to use to create URLs for users. Mainly useful for non-AWS providers. May include a port. Must include the bucket. Example: `s3.company:8080/authentik-media`.
|
||||||
- `AUTHENTIK_STORAGE__MEDIA__S3__SECURE_URLS`: Whether URLs created use HTTPS (set to `true` by default) or HTTP.
|
- `AUTHENTIK_STORAGE__MEDIA__S3__SECURE_URLS`: Whether URLs created use HTTPS (set to `true` by default) or HTTP.
|
||||||
|
|
||||||
## authentik Settings
|
## authentik Settings
|
||||||
|
|
||||||
@ -211,13 +211,13 @@ Disable the inbuilt update-checker. Defaults to `false`.
|
|||||||
|
|
||||||
### `AUTHENTIK_ERROR_REPORTING`
|
### `AUTHENTIK_ERROR_REPORTING`
|
||||||
|
|
||||||
- `AUTHENTIK_ERROR_REPORTING__ENABLED`
|
- `AUTHENTIK_ERROR_REPORTING__ENABLED`
|
||||||
|
|
||||||
Enable error reporting. Defaults to `false`.
|
Enable error reporting. Defaults to `false`.
|
||||||
|
|
||||||
Error reports are sent to https://sentry.io and are used for debugging and general feedback. Anonymous performance data is also sent.
|
Error reports are sent to https://sentry.io and are used for debugging and general feedback. Anonymous performance data is also sent.
|
||||||
|
|
||||||
- `AUTHENTIK_ERROR_REPORTING__SENTRY_DSN`
|
- `AUTHENTIK_ERROR_REPORTING__SENTRY_DSN`
|
||||||
|
|
||||||
Sets the DSN for the Sentry API endpoint.
|
Sets the DSN for the Sentry API endpoint.
|
||||||
|
|
||||||
@ -225,51 +225,51 @@ Disable the inbuilt update-checker. Defaults to `false`.
|
|||||||
|
|
||||||
Users can create their own hosted Sentry account (or self-host Sentry) and opt to collect this data themselves.
|
Users can create their own hosted Sentry account (or self-host Sentry) and opt to collect this data themselves.
|
||||||
|
|
||||||
- `AUTHENTIK_ERROR_REPORTING__ENVIRONMENT`
|
- `AUTHENTIK_ERROR_REPORTING__ENVIRONMENT`
|
||||||
|
|
||||||
The environment tag associated with all data sent to Sentry. Defaults to `customer`.
|
The environment tag associated with all data sent to Sentry. Defaults to `customer`.
|
||||||
|
|
||||||
When error reporting has been enabled to aid in debugging issues, this should be set to a unique value, such as an email address.
|
When error reporting has been enabled to aid in debugging issues, this should be set to a unique value, such as an email address.
|
||||||
|
|
||||||
- `AUTHENTIK_ERROR_REPORTING__SEND_PII`
|
- `AUTHENTIK_ERROR_REPORTING__SEND_PII`
|
||||||
|
|
||||||
Whether or not to send personal data, like usernames. Defaults to `false`.
|
Whether or not to send personal data, like usernames. Defaults to `false`.
|
||||||
|
|
||||||
- `AUTHENTIK_ERROR_REPORTING__EXTRA_ARGS`
|
- `AUTHENTIK_ERROR_REPORTING__EXTRA_ARGS`
|
||||||
|
|
||||||
Base64-encoded sentry_init arguments. See [Sentry's documentation](https://docs.sentry.io/platforms/python/configuration/options/) for available options.
|
Base64-encoded sentry_init arguments. See [Sentry's documentation](https://docs.sentry.io/platforms/python/configuration/options/) for available options.
|
||||||
|
|
||||||
### `AUTHENTIK_EMAIL`
|
### `AUTHENTIK_EMAIL`
|
||||||
|
|
||||||
- `AUTHENTIK_EMAIL__HOST`
|
- `AUTHENTIK_EMAIL__HOST`
|
||||||
|
|
||||||
Default: `localhost`
|
Default: `localhost`
|
||||||
|
|
||||||
- `AUTHENTIK_EMAIL__PORT`
|
- `AUTHENTIK_EMAIL__PORT`
|
||||||
|
|
||||||
Default: `25`
|
Default: `25`
|
||||||
|
|
||||||
- `AUTHENTIK_EMAIL__USERNAME`
|
- `AUTHENTIK_EMAIL__USERNAME`
|
||||||
|
|
||||||
Default: `` (Don't add quotation marks)
|
Default: `` (Don't add quotation marks)
|
||||||
|
|
||||||
- `AUTHENTIK_EMAIL__PASSWORD`
|
- `AUTHENTIK_EMAIL__PASSWORD`
|
||||||
|
|
||||||
Default: `` (Don't add quotation marks)
|
Default: `` (Don't add quotation marks)
|
||||||
|
|
||||||
- `AUTHENTIK_EMAIL__USE_TLS`
|
- `AUTHENTIK_EMAIL__USE_TLS`
|
||||||
|
|
||||||
Default: `false`
|
Default: `false`
|
||||||
|
|
||||||
- `AUTHENTIK_EMAIL__USE_SSL`
|
- `AUTHENTIK_EMAIL__USE_SSL`
|
||||||
|
|
||||||
Default: `false`
|
Default: `false`
|
||||||
|
|
||||||
- `AUTHENTIK_EMAIL__TIMEOUT`
|
- `AUTHENTIK_EMAIL__TIMEOUT`
|
||||||
|
|
||||||
Default: `10`
|
Default: `10`
|
||||||
|
|
||||||
- `AUTHENTIK_EMAIL__FROM`
|
- `AUTHENTIK_EMAIL__FROM`
|
||||||
|
|
||||||
Default: `authentik@localhost`
|
Default: `authentik@localhost`
|
||||||
|
|
||||||
@ -279,25 +279,25 @@ Disable the inbuilt update-checker. Defaults to `false`.
|
|||||||
|
|
||||||
### `AUTHENTIK_OUTPOSTS`
|
### `AUTHENTIK_OUTPOSTS`
|
||||||
|
|
||||||
- `AUTHENTIK_OUTPOSTS__CONTAINER_IMAGE_BASE`
|
- `AUTHENTIK_OUTPOSTS__CONTAINER_IMAGE_BASE`
|
||||||
|
|
||||||
Placeholders:
|
Placeholders:
|
||||||
|
|
||||||
- `%(type)s`: Outpost type; proxy, ldap, etc
|
- `%(type)s`: Outpost type; proxy, ldap, etc
|
||||||
- `%(version)s`: Current version; 2021.4.1
|
- `%(version)s`: Current version; 2021.4.1
|
||||||
- `%(build_hash)s`: Build hash if you're running a beta version
|
- `%(build_hash)s`: Build hash if you're running a beta version
|
||||||
|
|
||||||
Placeholder for outpost docker images. Default: `ghcr.io/goauthentik/%(type)s:%(version)s`.
|
Placeholder for outpost docker images. Default: `ghcr.io/goauthentik/%(type)s:%(version)s`.
|
||||||
|
|
||||||
- `AUTHENTIK_OUTPOSTS__DISCOVER`
|
- `AUTHENTIK_OUTPOSTS__DISCOVER`
|
||||||
|
|
||||||
Configure the automatic discovery of integrations. Defaults to `true`.
|
Configure the automatic discovery of integrations. Defaults to `true`.
|
||||||
|
|
||||||
By default, the following is discovered:
|
By default, the following is discovered:
|
||||||
|
|
||||||
- Kubernetes in-cluster config
|
- Kubernetes in-cluster config
|
||||||
- Kubeconfig
|
- Kubeconfig
|
||||||
- Existence of a docker socket
|
- Existence of a docker socket
|
||||||
|
|
||||||
### `AUTHENTIK_LDAP__TASK_TIMEOUT_HOURS` <span class="badge badge--version">authentik 2023.1+</span>
|
### `AUTHENTIK_LDAP__TASK_TIMEOUT_HOURS` <span class="badge badge--version">authentik 2023.1+</span>
|
||||||
|
|
||||||
|
@ -6,9 +6,9 @@ This installation method is for test setups and small-scale production setups.
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- A host with at least 2 CPU cores and 2 GB of RAM
|
- A host with at least 2 CPU cores and 2 GB of RAM
|
||||||
- Docker
|
- Docker
|
||||||
- Docker Compose (Compose v2 is recommended, see [here](https://docs.docker.com/compose/migrate/) for instructions on how to upgrade)
|
- Docker Compose (Compose v2 is recommended, see [here](https://docs.docker.com/compose/migrate/) for instructions on how to upgrade)
|
||||||
|
|
||||||
## Video
|
## Video
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@ You can also [view a video walk-through](https://www.youtube.com/watch?v=O1qUbrk
|
|||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
|
|
||||||
- Kubernetes
|
- Kubernetes
|
||||||
- Helm
|
- Helm
|
||||||
|
|
||||||
## Video
|
## Video
|
||||||
|
|
||||||
|
@ -8,10 +8,10 @@ Since authentik uses WebSockets to communicate with Outposts, it does not suppor
|
|||||||
|
|
||||||
If you want to access authentik behind a reverse proxy, there are a few headers that must be passed upstream:
|
If you want to access authentik behind a reverse proxy, there are a few headers that must be passed upstream:
|
||||||
|
|
||||||
- `X-Forwarded-Proto`: Tells authentik and Proxy Providers if they are being served over an HTTPS connection.
|
- `X-Forwarded-Proto`: Tells authentik and Proxy Providers if they are being served over an HTTPS connection.
|
||||||
- `X-Forwarded-For`: Without this, authentik will not know the IP addresses of clients.
|
- `X-Forwarded-For`: Without this, authentik will not know the IP addresses of clients.
|
||||||
- `Host`: Required for various security checks, WebSocket handshake, and Outpost and Proxy Provider communication.
|
- `Host`: Required for various security checks, WebSocket handshake, and Outpost and Proxy Provider communication.
|
||||||
- `Connection: Upgrade` and `Upgrade: WebSocket`: Required to upgrade protocols for requests to the WebSocket endpoints under HTTP/1.1.
|
- `Connection: Upgrade` and `Upgrade: WebSocket`: Required to upgrade protocols for requests to the WebSocket endpoints under HTTP/1.1.
|
||||||
|
|
||||||
It is also recommended to use a [modern TLS configuration](https://ssl-config.mozilla.org/) and disable SSL/TLS protocols older than TLS 1.3.
|
It is also recommended to use a [modern TLS configuration](https://ssl-config.mozilla.org/) and disable SSL/TLS protocols older than TLS 1.3.
|
||||||
|
|
||||||
|
@ -10,13 +10,13 @@ Upgrading to the latest version of authentik, whether a new major release or a p
|
|||||||
authentik does not support downgrading. Make sure to back up your database in case you need to revert an upgrade.
|
authentik does not support downgrading. Make sure to back up your database in case you need to revert an upgrade.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
- Be sure to carefully read the [Release Notes](../releases/) for the specific version to which you plan to upgrade. The release might have special requirements or actions or contain breaking changes.
|
- Be sure to carefully read the [Release Notes](../releases/) for the specific version to which you plan to upgrade. The release might have special requirements or actions or contain breaking changes.
|
||||||
|
|
||||||
- Make a backup of your PostgreSQL database before upgrading. You can dump your existing database to get a backup file. For more information about dumping and backing up your database, refer to [Upgrade PostgreSQL on Docker Compose](../troubleshooting/postgres/upgrade_docker.md) or [Upgrade PostgreSQL on Kubernetes](../troubleshooting/postgres/upgrade_kubernetes.md).
|
- Make a backup of your PostgreSQL database before upgrading. You can dump your existing database to get a backup file. For more information about dumping and backing up your database, refer to [Upgrade PostgreSQL on Docker Compose](../troubleshooting/postgres/upgrade_docker.md) or [Upgrade PostgreSQL on Kubernetes](../troubleshooting/postgres/upgrade_kubernetes.md).
|
||||||
|
|
||||||
- You need to upgrade in sequence of the major releases; do not skip directly from an older major version to the most recent version. For example, if you are currently running 2023.10.3, you will need to first upgrade to 2024.2.x, then 2024.4.x, and then 2024.6.x, in sequence.
|
- You need to upgrade in sequence of the major releases; do not skip directly from an older major version to the most recent version. For example, if you are currently running 2023.10.3, you will need to first upgrade to 2024.2.x, then 2024.4.x, and then 2024.6.x, in sequence.
|
||||||
|
|
||||||
- The version of the authentik instance and any outposts must be the same. We recommended that you always upgrade any outposts at the same time you upgrade your authentik instance.
|
- The version of the authentik instance and any outposts must be the same. We recommended that you always upgrade any outposts at the same time you upgrade your authentik instance.
|
||||||
|
|
||||||
## Upgrade authentik
|
## Upgrade authentik
|
||||||
|
|
||||||
|
@ -5,14 +5,14 @@ slug: "/releases/2021.1"
|
|||||||
|
|
||||||
## Headline Changes
|
## Headline Changes
|
||||||
|
|
||||||
- New versioning schema (year.month.release)
|
- New versioning schema (year.month.release)
|
||||||
- Add global email settings
|
- Add global email settings
|
||||||
|
|
||||||
In previous versions, you had to configure email connection details per [Email Stage](../../add-secure-apps/flows-stages/stages/email/index.mdx). Now, you can (and should) configure global settings.
|
In previous versions, you had to configure email connection details per [Email Stage](../../add-secure-apps/flows-stages/stages/email/index.mdx). Now, you can (and should) configure global settings.
|
||||||
|
|
||||||
This is documented under the [docker-compose](../../install-config/install/docker-compose.mdx) and [Kubernetes](../../install-config/install/kubernetes.md) sections.
|
This is documented under the [docker-compose](../../install-config/install/docker-compose.mdx) and [Kubernetes](../../install-config/install/kubernetes.md) sections.
|
||||||
|
|
||||||
- New notification system
|
- New notification system
|
||||||
|
|
||||||
More info can be found under [Notifications](../../sys-mgmt/events/notifications.md) and [Transports](../../sys-mgmt/events/transports.md).
|
More info can be found under [Notifications](../../sys-mgmt/events/notifications.md) and [Transports](../../sys-mgmt/events/transports.md).
|
||||||
|
|
||||||
@ -22,37 +22,37 @@ slug: "/releases/2021.1"
|
|||||||
|
|
||||||
## Fixes
|
## Fixes
|
||||||
|
|
||||||
- events: create event when system task fails
|
- events: create event when system task fails
|
||||||
- helm: fix old reference to static secret_key
|
- helm: fix old reference to static secret_key
|
||||||
- helm: fix s3 secret key and email password not being base64 encoded
|
- helm: fix s3 secret key and email password not being base64 encoded
|
||||||
- policies: fix logic error for sync mode
|
- policies: fix logic error for sync mode
|
||||||
- stages/email: fix email task not falling back to use_global_settings
|
- stages/email: fix email task not falling back to use_global_settings
|
||||||
|
|
||||||
### Fixed in 2021.1.2
|
### Fixed in 2021.1.2
|
||||||
|
|
||||||
- sources/\*: Add source to flow context, so source is logged during login
|
- sources/\*: Add source to flow context, so source is logged during login
|
||||||
- outposts: Fix outpost not correctly updating on outpost modification
|
- outposts: Fix outpost not correctly updating on outpost modification
|
||||||
- outposts: Improve drift detection on kubernetes
|
- outposts: Improve drift detection on kubernetes
|
||||||
- providers/saml: Fix metadata not being signed when signature is enabled
|
- providers/saml: Fix metadata not being signed when signature is enabled
|
||||||
- policies: Improve error handling, ensure original stacktrace is preserved
|
- policies: Improve error handling, ensure original stacktrace is preserved
|
||||||
|
|
||||||
### Fixed in 2021.1.3
|
### Fixed in 2021.1.3
|
||||||
|
|
||||||
- admin: handle FlowNonApplicableException during flow plan
|
- admin: handle FlowNonApplicableException during flow plan
|
||||||
- flows: fix FlowNonApplicableException not being Sentry Ignored
|
- flows: fix FlowNonApplicableException not being Sentry Ignored
|
||||||
- lifecycle: fix typo causing single process in docker-compose
|
- lifecycle: fix typo causing single process in docker-compose
|
||||||
|
|
||||||
### Fixed in 2021.1.4
|
### Fixed in 2021.1.4
|
||||||
|
|
||||||
- admin: fix providers not showing SAML Import on empty state
|
- admin: fix providers not showing SAML Import on empty state
|
||||||
- core: only cache Applications API when no filtering is done
|
- core: only cache Applications API when no filtering is done
|
||||||
- events: fix email template for notifications
|
- events: fix email template for notifications
|
||||||
- lib: fix ak_is_group_member checking wrong groups
|
- lib: fix ak_is_group_member checking wrong groups
|
||||||
- providers/saml: add support for WindowsDomainQualifiedName, add docs for NameID
|
- providers/saml: add support for WindowsDomainQualifiedName, add docs for NameID
|
||||||
- providers/saml: import SAML Provider with all autogenerated mappings
|
- providers/saml: import SAML Provider with all autogenerated mappings
|
||||||
- providers/saml: make NameID configurable using a Property Mapping
|
- providers/saml: make NameID configurable using a Property Mapping
|
||||||
- providers/saml: update default OIDs for default property mappings
|
- providers/saml: update default OIDs for default property mappings
|
||||||
- web: fix site-shell being cut off when not full height
|
- web: fix site-shell being cut off when not full height
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,17 +5,17 @@ slug: "/releases/2021.10"
|
|||||||
|
|
||||||
## Headline Changes
|
## Headline Changes
|
||||||
|
|
||||||
- Flow Inspector
|
- Flow Inspector
|
||||||
|
|
||||||
To better understand how a flow works, and why things might not be working as intended, you can now launch Flows with an inspector enabled. This is simply triggered by adding a `?inspector` to the URL. Currently, only superuser have the permission to access the Inspector.
|
To better understand how a flow works, and why things might not be working as intended, you can now launch Flows with an inspector enabled. This is simply triggered by adding a `?inspector` to the URL. Currently, only superuser have the permission to access the Inspector.
|
||||||
|
|
||||||
The inspector shows the current stage, previous stages, next planned stages, and the current flow context.
|
The inspector shows the current stage, previous stages, next planned stages, and the current flow context.
|
||||||
|
|
||||||
- SMS Authenticator
|
- SMS Authenticator
|
||||||
|
|
||||||
You can now use SMS-based TOTP authenticators. This new Stage supports both Twilio, and a generic API endpoint, if using another provider. This stage does not have to be used for authentication, it can simply be used during enrollment to verify your users phone numbers.
|
You can now use SMS-based TOTP authenticators. This new Stage supports both Twilio, and a generic API endpoint, if using another provider. This stage does not have to be used for authentication, it can simply be used during enrollment to verify your users phone numbers.
|
||||||
|
|
||||||
- Sign in with Apple
|
- Sign in with Apple
|
||||||
|
|
||||||
It is now possible to add an Apple OAuth Source, to allow your users to authenticate with their Apple ID.
|
It is now possible to add an Apple OAuth Source, to allow your users to authenticate with their Apple ID.
|
||||||
|
|
||||||
@ -23,201 +23,201 @@ A huge shoutout to all the people that contributed, helped test and also transla
|
|||||||
|
|
||||||
## Minor changes
|
## Minor changes
|
||||||
|
|
||||||
- \*: Squash Migrations (#1593)
|
- \*: Squash Migrations (#1593)
|
||||||
- admin: clear update notification when notification's version matches current version
|
- admin: clear update notification when notification's version matches current version
|
||||||
- cmd: prevent outposts from panicking when failing to get their config
|
- cmd: prevent outposts from panicking when failing to get their config
|
||||||
- core: add default for user's settings attribute
|
- core: add default for user's settings attribute
|
||||||
- core: add settings serializer to user/me and update_self endpoints, saved in a key in attributes
|
- core: add settings serializer to user/me and update_self endpoints, saved in a key in attributes
|
||||||
- core: improve detection for s3 settings to trigger backup
|
- core: improve detection for s3 settings to trigger backup
|
||||||
- core: include group uuids in self serializer
|
- core: include group uuids in self serializer
|
||||||
- core: make user's name field fully optional
|
- core: make user's name field fully optional
|
||||||
- flows: inspector (#1469)
|
- flows: inspector (#1469)
|
||||||
- internal: add internal healthchecking to prevent websocket errors
|
- internal: add internal healthchecking to prevent websocket errors
|
||||||
- internal/proxyv2: improve error handling when configuring app
|
- internal/proxyv2: improve error handling when configuring app
|
||||||
- lifecycle: bump celery healthcheck to 5s timeout
|
- lifecycle: bump celery healthcheck to 5s timeout
|
||||||
- lifecycle: only lock database when system migrations need to be applied, and during django migrations, and don't double unlock
|
- lifecycle: only lock database when system migrations need to be applied, and during django migrations, and don't double unlock
|
||||||
- lifecycle: only set prometheus_multiproc_dir in ak wrapper to prevent full disk on worker
|
- lifecycle: only set prometheus_multiproc_dir in ak wrapper to prevent full disk on worker
|
||||||
- managed: don't run managed reconciler in foreground on startup
|
- managed: don't run managed reconciler in foreground on startup
|
||||||
- outpost/proxy: fix missing negation for internal host ssl verification
|
- outpost/proxy: fix missing negation for internal host ssl verification
|
||||||
- outposts: add additional error checking for docker controller
|
- outposts: add additional error checking for docker controller
|
||||||
- outposts: Adding more flexibility to outposts in Kubernetes. (#1617)
|
- outposts: Adding more flexibility to outposts in Kubernetes. (#1617)
|
||||||
- outposts: allow disabling of docker controller port mapping
|
- outposts: allow disabling of docker controller port mapping
|
||||||
- outposts: check ports of deployment in kubernetes outpost controller
|
- outposts: check ports of deployment in kubernetes outpost controller
|
||||||
- outposts: don't always build permissions on outpost.user access, only in signals and tasks
|
- outposts: don't always build permissions on outpost.user access, only in signals and tasks
|
||||||
- outposts: fallback to known-good outpost image if configured image cannot be pulled
|
- outposts: fallback to known-good outpost image if configured image cannot be pulled
|
||||||
- outposts: fix error when comparing ports in docker controller when port mapping is disabled
|
- outposts: fix error when comparing ports in docker controller when port mapping is disabled
|
||||||
- outposts: handle k8s 422 response code by recreating objects
|
- outposts: handle k8s 422 response code by recreating objects
|
||||||
- outposts: rename docker_image_base to container_image_base, since its not docker specific
|
- outposts: rename docker_image_base to container_image_base, since its not docker specific
|
||||||
- outposts/ldap: Support hard coded `uidNumber` and `gidNumber`. (#1582)
|
- outposts/ldap: Support hard coded `uidNumber` and `gidNumber`. (#1582)
|
||||||
- outposts/proxy: add new headers with unified naming
|
- outposts/proxy: add new headers with unified naming
|
||||||
- outposts/proxy: fix duplicate protocol in domain auth mode
|
- outposts/proxy: fix duplicate protocol in domain auth mode
|
||||||
- outposts/proxy: show full error message when user is authenticated
|
- outposts/proxy: show full error message when user is authenticated
|
||||||
- policies: add additional filters to create flow charts on frontend
|
- policies: add additional filters to create flow charts on frontend
|
||||||
- policies/password: add extra sub_text field in tests
|
- policies/password: add extra sub_text field in tests
|
||||||
- providers/ldap: use RDN when using posixGroup's memberUid attribute (#1514)
|
- providers/ldap: use RDN when using posixGroup's memberUid attribute (#1514)
|
||||||
- providers/proxy: always check ingress secret in kubernetes controller
|
- providers/proxy: always check ingress secret in kubernetes controller
|
||||||
- providers/proxy: update ingress controller to work with k8s 1.22
|
- providers/proxy: update ingress controller to work with k8s 1.22
|
||||||
- recovery: handle error when user doesn't exist
|
- recovery: handle error when user doesn't exist
|
||||||
- root: add docker-native healthcheck for web and celery
|
- root: add docker-native healthcheck for web and celery
|
||||||
- root: add translation for backend strings
|
- root: add translation for backend strings
|
||||||
- root: coverage with toml support
|
- root: coverage with toml support
|
||||||
- root: fix error with sentry proxy
|
- root: fix error with sentry proxy
|
||||||
- root: migrate docker images to netlify proxy (#1603)
|
- root: migrate docker images to netlify proxy (#1603)
|
||||||
- root: remove redundant internal network from compose
|
- root: remove redundant internal network from compose
|
||||||
- root: remove structlog.processors.format_exc_info for new structlog version
|
- root: remove structlog.processors.format_exc_info for new structlog version
|
||||||
- root: Use fully qualified names for docker bases base images. (#1490)
|
- root: Use fully qualified names for docker bases base images. (#1490)
|
||||||
- sources/ldap: add support for Active Directory `userAccountControl` attribute
|
- sources/ldap: add support for Active Directory `userAccountControl` attribute
|
||||||
- sources/ldap: don't sync ldap source when no property mappings are set
|
- sources/ldap: don't sync ldap source when no property mappings are set
|
||||||
- sources/ldap: fix logic error in Active Directory account disabled status
|
- sources/ldap: fix logic error in Active Directory account disabled status
|
||||||
- sources/oauth: add Sign in with Apple (#1635)
|
- sources/oauth: add Sign in with Apple (#1635)
|
||||||
- stages/authenticator_sms: add generic provider (#1595)
|
- stages/authenticator_sms: add generic provider (#1595)
|
||||||
- stages/authenticator_sms: Add SMS Authenticator Stage (#1577)
|
- stages/authenticator_sms: Add SMS Authenticator Stage (#1577)
|
||||||
- stages/authenticator_validate: create a default authenticator validate stage with sensible defaults
|
- stages/authenticator_validate: create a default authenticator validate stage with sensible defaults
|
||||||
- stages/email: add activate_user_on_success flag, add for all example flows
|
- stages/email: add activate_user_on_success flag, add for all example flows
|
||||||
- stages/prompt: add sub_text field to add HTML below prompt fields
|
- stages/prompt: add sub_text field to add HTML below prompt fields
|
||||||
- stages/prompt: fix sub_text not allowing blank
|
- stages/prompt: fix sub_text not allowing blank
|
||||||
- stages/prompt: fix wrong field type of field_key
|
- stages/prompt: fix wrong field type of field_key
|
||||||
- stages/user_login: add check for user.is_active and tests
|
- stages/user_login: add check for user.is_active and tests
|
||||||
- stages/user_write: allow recursive writing to user.attributes
|
- stages/user_write: allow recursive writing to user.attributes
|
||||||
- web: add locale detection
|
- web: add locale detection
|
||||||
- web: ensure fallback locale is loaded
|
- web: ensure fallback locale is loaded
|
||||||
- web: fix rendering of token copy button in dark mode
|
- web: fix rendering of token copy button in dark mode
|
||||||
- web: fix strings not being translated at all when matching browser locale not found
|
- web: fix strings not being translated at all when matching browser locale not found
|
||||||
- web: make table pagination size user-configurable
|
- web: make table pagination size user-configurable
|
||||||
- web: new default flow background
|
- web: new default flow background
|
||||||
- web: Translate /web/src/locales/en.po in fr_FR (#1506)
|
- web: Translate /web/src/locales/en.po in fr_FR (#1506)
|
||||||
- web/admin: add fallback font for doughnut charts
|
- web/admin: add fallback font for doughnut charts
|
||||||
- web/admin: default to warning state for backup task
|
- web/admin: default to warning state for backup task
|
||||||
- web/admin: don't require username nor name for activate/deactivate toggles
|
- web/admin: don't require username nor name for activate/deactivate toggles
|
||||||
- web/admin: fix description for flow import
|
- web/admin: fix description for flow import
|
||||||
- web/admin: fix LDAP Source form not exposing syncParentGroup
|
- web/admin: fix LDAP Source form not exposing syncParentGroup
|
||||||
- web/admin: fix search group label
|
- web/admin: fix search group label
|
||||||
- web/admin: fix SMS Authenticator stage not loading state correctly
|
- web/admin: fix SMS Authenticator stage not loading state correctly
|
||||||
- web/admin: improve visibility of oauth rsa key
|
- web/admin: improve visibility of oauth rsa key
|
||||||
- web/admin: only show outpost deployment info when not embedded
|
- web/admin: only show outpost deployment info when not embedded
|
||||||
- web/admin: truncate prompt label when too long
|
- web/admin: truncate prompt label when too long
|
||||||
- web/elements: fix initialLoad not being done when viewportCheck was disabled
|
- web/elements: fix initialLoad not being done when viewportCheck was disabled
|
||||||
- web/elements: fix model form always loading when viewport check is disabled
|
- web/elements: fix model form always loading when viewport check is disabled
|
||||||
- web/elements: use dedicated button for search clear instead of webkit exclusive one
|
- web/elements: use dedicated button for search clear instead of webkit exclusive one
|
||||||
- web/flows: adjust message for email stage
|
- web/flows: adjust message for email stage
|
||||||
- web/user: don't show managed tokens in user interface
|
- web/user: don't show managed tokens in user interface
|
||||||
- web/user: initial optimisation for smaller screens
|
- web/user: initial optimisation for smaller screens
|
||||||
- web/user: load interface settings from user settings
|
- web/user: load interface settings from user settings
|
||||||
|
|
||||||
## Fixed in 2021.10.1-rc2
|
## Fixed in 2021.10.1-rc2
|
||||||
|
|
||||||
- core: add user flag to prevent users from changing their usernames
|
- core: add user flag to prevent users from changing their usernames
|
||||||
- core: log user for http requests
|
- core: log user for http requests
|
||||||
- flows: clear cache when deleting bindings
|
- flows: clear cache when deleting bindings
|
||||||
- outpost/ldap: fix logging for mismatched provider
|
- outpost/ldap: fix logging for mismatched provider
|
||||||
- root: add cookie domain setting
|
- root: add cookie domain setting
|
||||||
- sources/oauth: add choices to oauth provider_type
|
- sources/oauth: add choices to oauth provider_type
|
||||||
- web: disable Sentry.showReportDialog
|
- web: disable Sentry.showReportDialog
|
||||||
- web/flows: showing of authentik logo in flow executor
|
- web/flows: showing of authentik logo in flow executor
|
||||||
- web/flows: fix authenticator device selection not updating
|
- web/flows: fix authenticator device selection not updating
|
||||||
- web/flows: show cancel link when choosing authenticator challenge
|
- web/flows: show cancel link when choosing authenticator challenge
|
||||||
|
|
||||||
## Fixed in 2021.10.1-rc3
|
## Fixed in 2021.10.1-rc3
|
||||||
|
|
||||||
- api: fix error when connection to websocket via secret_key
|
- api: fix error when connection to websocket via secret_key
|
||||||
- core: add toggle to completely disable backup mechanism
|
- core: add toggle to completely disable backup mechanism
|
||||||
- core: add USER_ATTRIBUTE_CHANGE_EMAIL
|
- core: add USER_ATTRIBUTE_CHANGE_EMAIL
|
||||||
- events: fix error when notification transport doesn't exist anymore
|
- events: fix error when notification transport doesn't exist anymore
|
||||||
- outposts: fix docker controller not using object_naming_template
|
- outposts: fix docker controller not using object_naming_template
|
||||||
- providers/oauth2: fallback to uid if UPN was selected but isn't available
|
- providers/oauth2: fallback to uid if UPN was selected but isn't available
|
||||||
- providers/oauth2: fix events being created from /application/o/authorize/
|
- providers/oauth2: fix events being created from /application/o/authorize/
|
||||||
- sources/ldap: prevent key `users` from being set as this is an M2M relation
|
- sources/ldap: prevent key `users` from being set as this is an M2M relation
|
||||||
- sources/ldap: skip values which are of type bytes
|
- sources/ldap: skip values which are of type bytes
|
||||||
|
|
||||||
## Fixed in 2021.10.1
|
## Fixed in 2021.10.1
|
||||||
|
|
||||||
- core: add API for all user-source connections
|
- core: add API for all user-source connections
|
||||||
- core: add API to list all authenticator devices
|
- core: add API to list all authenticator devices
|
||||||
- core: add created field to source connection
|
- core: add created field to source connection
|
||||||
- flows: optimise stage user_settings API
|
- flows: optimise stage user_settings API
|
||||||
- outposts: separate websocket re-connection logic to decrease requests on reconnect
|
- outposts: separate websocket re-connection logic to decrease requests on reconnect
|
||||||
- root: pin node images to v16
|
- root: pin node images to v16
|
||||||
- root: update golang ldap server package
|
- root: update golang ldap server package
|
||||||
- web/user: fix wrong device being selected in user's mfa update form
|
- web/user: fix wrong device being selected in user's mfa update form
|
||||||
- web/user: rework MFA Device UI to support multiple devices
|
- web/user: rework MFA Device UI to support multiple devices
|
||||||
- web/user: update form to update mfa devices
|
- web/user: update form to update mfa devices
|
||||||
|
|
||||||
## Fixed in 2021.10.2
|
## Fixed in 2021.10.2
|
||||||
|
|
||||||
- api: replace django sentry proxy with go proxy to prevent login issues
|
- api: replace django sentry proxy with go proxy to prevent login issues
|
||||||
- providers/proxy: allow configuring of additional scope mappings for proxy
|
- providers/proxy: allow configuring of additional scope mappings for proxy
|
||||||
- providers/saml: fix error on missing AssertionConsumerServiceURL, fall back to default ACS
|
- providers/saml: fix error on missing AssertionConsumerServiceURL, fall back to default ACS
|
||||||
- root: fix Detection of S3 settings for backups
|
- root: fix Detection of S3 settings for backups
|
||||||
- root: fix postgres install on bullseye
|
- root: fix postgres install on bullseye
|
||||||
- root: update base images for outposts
|
- root: update base images for outposts
|
||||||
- root: update to buster
|
- root: update to buster
|
||||||
- stages/identification: add show_source_labels option, to show labels for sources
|
- stages/identification: add show_source_labels option, to show labels for sources
|
||||||
- stages/invitation: don't throw 404 error in stage
|
- stages/invitation: don't throw 404 error in stage
|
||||||
- stages/invitation: remove invitation from plan context after deletion
|
- stages/invitation: remove invitation from plan context after deletion
|
||||||
- stages/prompt: fix type in Prompt not having enum set
|
- stages/prompt: fix type in Prompt not having enum set
|
||||||
- web/flows: fix invalid validation for static tokens
|
- web/flows: fix invalid validation for static tokens
|
||||||
- web/flows: fix sub_text not rendering for static fields
|
- web/flows: fix sub_text not rendering for static fields
|
||||||
- web/user: fix configureUrl not being passed to `<ak-user-settings-password>`
|
- web/user: fix configureUrl not being passed to `<ak-user-settings-password>`
|
||||||
|
|
||||||
## Fixed in 2021.10.3
|
## Fixed in 2021.10.3
|
||||||
|
|
||||||
- admin: improve check to remove version notifications
|
- admin: improve check to remove version notifications
|
||||||
- cmd/server: improve cleanup on shutdown
|
- cmd/server: improve cleanup on shutdown
|
||||||
- core: add command to output full config
|
- core: add command to output full config
|
||||||
- core: fix auth_method for tokens
|
- core: fix auth_method for tokens
|
||||||
- core: include parent group name
|
- core: include parent group name
|
||||||
- core: make group membership lookup respect parent groups (upwards)
|
- core: make group membership lookup respect parent groups (upwards)
|
||||||
- events: ignore creation/deletion of AuthenticatedSession objects
|
- events: ignore creation/deletion of AuthenticatedSession objects
|
||||||
- internal: start embedded outpost directly after backend is healthy instead of waiting
|
- internal: start embedded outpost directly after backend is healthy instead of waiting
|
||||||
- lifecycle: revert to non-h11 worker
|
- lifecycle: revert to non-h11 worker
|
||||||
- outpost/ldap: don't cleanup user info as it is overwritten on bind
|
- outpost/ldap: don't cleanup user info as it is overwritten on bind
|
||||||
- providers/\*: include list of outposts
|
- providers/\*: include list of outposts
|
||||||
- providers/ldap: add/squash migrations
|
- providers/ldap: add/squash migrations
|
||||||
- providers/ldap: memory Query (#1681)
|
- providers/ldap: memory Query (#1681)
|
||||||
- recovery: add create_admin_group management command
|
- recovery: add create_admin_group management command
|
||||||
- root: fix defaults for EMAIL_USE_TLS
|
- root: fix defaults for EMAIL_USE_TLS
|
||||||
- root: improve compose detection, add anonymous stats
|
- root: improve compose detection, add anonymous stats
|
||||||
- root: keep last 30 backups
|
- root: keep last 30 backups
|
||||||
- sources/ldap: remove deprecated default
|
- sources/ldap: remove deprecated default
|
||||||
- sources/oauth: set prompt=none for Discord provider
|
- sources/oauth: set prompt=none for Discord provider
|
||||||
- sources/plex: allow users to connect their plex account without login flow
|
- sources/plex: allow users to connect their plex account without login flow
|
||||||
- sources/plex: use exception_to_string in tasks
|
- sources/plex: use exception_to_string in tasks
|
||||||
- stages/authenticator\_\*: add default name for authenticators
|
- stages/authenticator\_\*: add default name for authenticators
|
||||||
- stages/identification: only allow limited challenges for login sources
|
- stages/identification: only allow limited challenges for login sources
|
||||||
- stages/identification: use random sleep
|
- stages/identification: use random sleep
|
||||||
- stages/prompt: add text_read_only field
|
- stages/prompt: add text_read_only field
|
||||||
- stages/prompt: default prompts to the current value of the context
|
- stages/prompt: default prompts to the current value of the context
|
||||||
- stages/prompt: only set placeholder when in context
|
- stages/prompt: only set placeholder when in context
|
||||||
- stages/prompt: set field placeholder based on plan context
|
- stages/prompt: set field placeholder based on plan context
|
||||||
- stages/prompt: use initial instead of default
|
- stages/prompt: use initial instead of default
|
||||||
- web: fix linting errors by adding a wrapper for next param
|
- web: fix linting errors by adding a wrapper for next param
|
||||||
- web/admin: only show flows with an invitation stage configured instead of all enrollment flows
|
- web/admin: only show flows with an invitation stage configured instead of all enrollment flows
|
||||||
- web/admin: show warning on invitation list when no stage exists or is bound
|
- web/admin: show warning on invitation list when no stage exists or is bound
|
||||||
- web/admin: show warning on provider when not used with outpost
|
- web/admin: show warning on provider when not used with outpost
|
||||||
- web/flows: fix authenticator_validate not allowing alphanumeric codes due to empty pattern
|
- web/flows: fix authenticator_validate not allowing alphanumeric codes due to empty pattern
|
||||||
- web/flows: improve display of static tokens
|
- web/flows: improve display of static tokens
|
||||||
- web/user: fix ak-user-settings-password getting wrong configureUrl
|
- web/user: fix ak-user-settings-password getting wrong configureUrl
|
||||||
- web/user: fix device type for static tokens
|
- web/user: fix device type for static tokens
|
||||||
- web/user: fix empty page when no sources to connect exist
|
- web/user: fix empty page when no sources to connect exist
|
||||||
- web/user: fix redirect after starting configuration flow from user interface
|
- web/user: fix redirect after starting configuration flow from user interface
|
||||||
|
|
||||||
## Fixed in 2021.10.4
|
## Fixed in 2021.10.4
|
||||||
|
|
||||||
- core: force lowercase emails for gravatar usage
|
- core: force lowercase emails for gravatar usage
|
||||||
- outposts: fix MFA Challenges not working with outpost
|
- outposts: fix MFA Challenges not working with outpost
|
||||||
- outposts/ldap: fix logic error in cached ldap searcher
|
- outposts/ldap: fix logic error in cached ldap searcher
|
||||||
- outposts/proxy: fix static files not being served in proxy mode
|
- outposts/proxy: fix static files not being served in proxy mode
|
||||||
- providers/proxy: return list of configured scope names so outpost requests custom scopes
|
- providers/proxy: return list of configured scope names so outpost requests custom scopes
|
||||||
- root: use python slim-bullseye as base
|
- root: use python slim-bullseye as base
|
||||||
- sources/ldap: fix user/group sync overwriting attributes instead of merging them
|
- sources/ldap: fix user/group sync overwriting attributes instead of merging them
|
||||||
- sources/ldap: set connect/receive timeout (default to 15s)
|
- sources/ldap: set connect/receive timeout (default to 15s)
|
||||||
- stages/\*: disable trim_whitespace on important fields
|
- stages/\*: disable trim_whitespace on important fields
|
||||||
- stages/authenticator_duo: fix devices created with name
|
- stages/authenticator_duo: fix devices created with name
|
||||||
- stages/authenticator_validate: enable all device classes by default
|
- stages/authenticator_validate: enable all device classes by default
|
||||||
- web: write interfaces to different folders and remove custom chunk names
|
- web: write interfaces to different folders and remove custom chunk names
|
||||||
- web/admin: fix display issues with flow execute buttons
|
- web/admin: fix display issues with flow execute buttons
|
||||||
- web/admin: show warnings above tab bar
|
- web/admin: show warnings above tab bar
|
||||||
- web/admin: use more natural default ordering for objects
|
- web/admin: use more natural default ordering for objects
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -9,252 +9,252 @@ This release does not have any headline features, and mostly fixes bugs.
|
|||||||
|
|
||||||
## Breaking changes
|
## Breaking changes
|
||||||
|
|
||||||
- stages/prompt: Before 2021.12, any policy was required to pass for the result to be considered valid. This has been changed, and now all policies are required to be valid.
|
- stages/prompt: Before 2021.12, any policy was required to pass for the result to be considered valid. This has been changed, and now all policies are required to be valid.
|
||||||
|
|
||||||
## Minor changes
|
## Minor changes
|
||||||
|
|
||||||
- core: make defaults for \_change_email and \_change_username configurable
|
- core: make defaults for \_change_email and \_change_username configurable
|
||||||
- core: remove dump_config, handle directly in config loader without booting django, don't check database
|
- core: remove dump_config, handle directly in config loader without booting django, don't check database
|
||||||
- events: add gdpr_compliance option
|
- events: add gdpr_compliance option
|
||||||
- internal: fix integrated docs not working
|
- internal: fix integrated docs not working
|
||||||
- internal: use runserver when debug for code reload
|
- internal: use runserver when debug for code reload
|
||||||
- lib: add cli option for lib.config
|
- lib: add cli option for lib.config
|
||||||
- lib: add improved log to sentry events being sent
|
- lib: add improved log to sentry events being sent
|
||||||
- lib: fix custom URL schemes being overwritten
|
- lib: fix custom URL schemes being overwritten
|
||||||
- lib: load json strings in config env variables
|
- lib: load json strings in config env variables
|
||||||
- lib: log error for file:// in config
|
- lib: log error for file:// in config
|
||||||
- lifecycle: allow custom worker count in k8s
|
- lifecycle: allow custom worker count in k8s
|
||||||
- lifecycle: improve backup restore by dropping database before
|
- lifecycle: improve backup restore by dropping database before
|
||||||
- lifecycle: improve redis connection debug py printing full URL
|
- lifecycle: improve redis connection debug py printing full URL
|
||||||
- outpost: configure error reporting based off of main instance config
|
- outpost: configure error reporting based off of main instance config
|
||||||
- outposts: don't panic when listening for metrics fails
|
- outposts: don't panic when listening for metrics fails
|
||||||
- outposts: reload on signal USR1, fix display of reload offset
|
- outposts: reload on signal USR1, fix display of reload offset
|
||||||
- outposts/ldap: copy boundUsers map when running refresh instead of using blank map
|
- outposts/ldap: copy boundUsers map when running refresh instead of using blank map
|
||||||
- outposts/ldap: fix panic when attempting to update without locked users mutex
|
- outposts/ldap: fix panic when attempting to update without locked users mutex
|
||||||
- outposts/proxy: continue compiling additional regexes even when one fails
|
- outposts/proxy: continue compiling additional regexes even when one fails
|
||||||
- outposts/proxy: show better error when hostname isn't configured
|
- outposts/proxy: show better error when hostname isn't configured
|
||||||
- outposts/proxy: use disableIndex for static files
|
- outposts/proxy: use disableIndex for static files
|
||||||
- policies/expression: fix ak_user_has_authenticator evaluation when not specifying optional device_type (#1849)
|
- policies/expression: fix ak_user_has_authenticator evaluation when not specifying optional device_type (#1849)
|
||||||
- providers/saml: fix SessionNotOnOrAfter not being included
|
- providers/saml: fix SessionNotOnOrAfter not being included
|
||||||
- root: add lifespan shim to prevent errors
|
- root: add lifespan shim to prevent errors
|
||||||
- root: fix settings for managed not loaded
|
- root: fix settings for managed not loaded
|
||||||
- root: make sentry sample rate configurable
|
- root: make sentry sample rate configurable
|
||||||
- stages/authenticator_validate: catch error when attempting to configure user without flow
|
- stages/authenticator_validate: catch error when attempting to configure user without flow
|
||||||
- stages/email: fix missing component in response when retrying email send
|
- stages/email: fix missing component in response when retrying email send
|
||||||
- stages/email: minify email css template
|
- stages/email: minify email css template
|
||||||
- stages/email: prevent error with duplicate token
|
- stages/email: prevent error with duplicate token
|
||||||
- web: improve dark theme for vertical tabs
|
- web: improve dark theme for vertical tabs
|
||||||
- web: only show applications with http link
|
- web: only show applications with http link
|
||||||
- web/admin: allow flow edit on flow view page
|
- web/admin: allow flow edit on flow view page
|
||||||
- web/admin: fix actions column on ip reputation page
|
- web/admin: fix actions column on ip reputation page
|
||||||
- web/admin: fix Forms with file uploads not handling errors correctly
|
- web/admin: fix Forms with file uploads not handling errors correctly
|
||||||
- web/admin: make object view pages more consistent
|
- web/admin: make object view pages more consistent
|
||||||
- web/admin: make user clickable for bound policies list
|
- web/admin: make user clickable for bound policies list
|
||||||
- web/admin: redesign provider pages to provide more info
|
- web/admin: redesign provider pages to provide more info
|
||||||
- web/admin: show changelog on user info page
|
- web/admin: show changelog on user info page
|
||||||
- web/admin: unify rendering and sorting of user lists
|
- web/admin: unify rendering and sorting of user lists
|
||||||
- web/elements: add new API to store attributes in URL, use for table and tabs
|
- web/elements: add new API to store attributes in URL, use for table and tabs
|
||||||
- web/elements: allow app.model names for ak-object-changelog
|
- web/elements: allow app.model names for ak-object-changelog
|
||||||
- web/elements: allow multiple tabs with different state
|
- web/elements: allow multiple tabs with different state
|
||||||
- web/flows: fix spinner during webauthn not centred
|
- web/flows: fix spinner during webauthn not centred
|
||||||
- web/flows: update default background
|
- web/flows: update default background
|
||||||
- web/user: fix filtering for applications based on launchURL
|
- web/user: fix filtering for applications based on launchURL
|
||||||
- web/user: fix height issues on user interface
|
- web/user: fix height issues on user interface
|
||||||
|
|
||||||
## Fixed in 2021.12.1-rc2
|
## Fixed in 2021.12.1-rc2
|
||||||
|
|
||||||
- \*: don't use go embed to make using custom files easier
|
- \*: don't use go embed to make using custom files easier
|
||||||
- crypto: add certificate discovery to automatically import certificates from lets encrypt
|
- crypto: add certificate discovery to automatically import certificates from lets encrypt
|
||||||
- crypto: fix default API not having an ordering
|
- crypto: fix default API not having an ordering
|
||||||
- outposts: always trigger outpost reconcile on startup
|
- outposts: always trigger outpost reconcile on startup
|
||||||
- outposts/ldap: Rework/improve LDAP search logic. (#1687)
|
- outposts/ldap: Rework/improve LDAP search logic. (#1687)
|
||||||
- outposts/proxy: make logging fields more consistent
|
- outposts/proxy: make logging fields more consistent
|
||||||
- outposts/proxy: re-add rs256 support
|
- outposts/proxy: re-add rs256 support
|
||||||
- providers/proxy: fix defaults for traefik integration
|
- providers/proxy: fix defaults for traefik integration
|
||||||
- providers/proxy: use wildcard for traefik headers copy
|
- providers/proxy: use wildcard for traefik headers copy
|
||||||
- providers/saml: fix error when using post bindings and user freshly logged in
|
- providers/saml: fix error when using post bindings and user freshly logged in
|
||||||
- providers/saml: fix IndexError in signature check
|
- providers/saml: fix IndexError in signature check
|
||||||
- sources/ldap: add optional tls verification certificate
|
- sources/ldap: add optional tls verification certificate
|
||||||
- sources/ldap: allow multiple server URIs for loadbalancing and failover
|
- sources/ldap: allow multiple server URIs for loadbalancing and failover
|
||||||
- sources/ldap: don't cache LDAP Connection, use random server
|
- sources/ldap: don't cache LDAP Connection, use random server
|
||||||
- sources/ldap: handle typeerror during creation of objects when using wrong keyword params
|
- sources/ldap: handle typeerror during creation of objects when using wrong keyword params
|
||||||
- sources/plex: fix plex token being included in event log
|
- sources/plex: fix plex token being included in event log
|
||||||
- stages/prompt: fix error when both default and required are set
|
- stages/prompt: fix error when both default and required are set
|
||||||
- web/admin: add spinner to table refresh button to show progress
|
- web/admin: add spinner to table refresh button to show progress
|
||||||
- web/admin: don't show disabled http basic as red
|
- web/admin: don't show disabled http basic as red
|
||||||
- web/admin: fix wrong description for reputation policy
|
- web/admin: fix wrong description for reputation policy
|
||||||
- web/flows: fix linting errors
|
- web/flows: fix linting errors
|
||||||
- web/flows: Revise duo authenticator login prompt text (#1872)
|
- web/flows: Revise duo authenticator login prompt text (#1872)
|
||||||
|
|
||||||
## Fixed in 2021.12.1-rc3
|
## Fixed in 2021.12.1-rc3
|
||||||
|
|
||||||
- core: add FlowToken which saves the pickled flow plan, replace standard token in email stage to allow finishing flows in different sessions
|
- core: add FlowToken which saves the pickled flow plan, replace standard token in email stage to allow finishing flows in different sessions
|
||||||
- core: fix missing permission check for group creating when creating service account
|
- core: fix missing permission check for group creating when creating service account
|
||||||
- outposts/ldap: Fix search case sensitivity. (#1897)
|
- outposts/ldap: Fix search case sensitivity. (#1897)
|
||||||
- policies/expression: add ak_call_policy
|
- policies/expression: add ak_call_policy
|
||||||
- providers/saml: add ?force_binding to limit bindings for metadata endpoint
|
- providers/saml: add ?force_binding to limit bindings for metadata endpoint
|
||||||
- root: add request_id to celery tasks, prefixed with "task-"
|
- root: add request_id to celery tasks, prefixed with "task-"
|
||||||
- sources/\*: Allow creation of source connections via API
|
- sources/\*: Allow creation of source connections via API
|
||||||
- stages/prompt: use policyenginemode all
|
- stages/prompt: use policyenginemode all
|
||||||
- tests/e2e: add post binding test
|
- tests/e2e: add post binding test
|
||||||
- web: fix duplicate classes, make generic icon clickable
|
- web: fix duplicate classes, make generic icon clickable
|
||||||
- web: fix text colour for bad request on light mode
|
- web: fix text colour for bad request on light mode
|
||||||
- web/admin: show outpost warning on application page too
|
- web/admin: show outpost warning on application page too
|
||||||
- web/elements: close dropdown when refresh event is dispatched
|
- web/elements: close dropdown when refresh event is dispatched
|
||||||
- web/user: allow custom font-awesome icons for applications
|
- web/user: allow custom font-awesome icons for applications
|
||||||
|
|
||||||
## Fixed in 2021.12.1-rc4
|
## Fixed in 2021.12.1-rc4
|
||||||
|
|
||||||
- core: fix error when using invalid key-values in attributes query
|
- core: fix error when using invalid key-values in attributes query
|
||||||
- flows: fix error in inspector view
|
- flows: fix error in inspector view
|
||||||
- flows: fix error when trying to print FlowToken objects
|
- flows: fix error when trying to print FlowToken objects
|
||||||
- lib: correctly report "faked" IPs to sentry
|
- lib: correctly report "faked" IPs to sentry
|
||||||
- outposts: add additional checks for websocket connection
|
- outposts: add additional checks for websocket connection
|
||||||
- outposts: cleanup logs for failed binds
|
- outposts: cleanup logs for failed binds
|
||||||
- outposts: don't try to create docker client for embedded outpost
|
- outposts: don't try to create docker client for embedded outpost
|
||||||
- outposts: fix docker controller not stopping containers
|
- outposts: fix docker controller not stopping containers
|
||||||
- outposts: fix unlabeled transaction
|
- outposts: fix unlabeled transaction
|
||||||
- outposts: handle RuntimeError during websocket connect
|
- outposts: handle RuntimeError during websocket connect
|
||||||
- outposts: rewrite re-connect logic without recws
|
- outposts: rewrite re-connect logic without recws
|
||||||
- outposts: set display name for outpost service account
|
- outposts: set display name for outpost service account
|
||||||
- outposts/ldap: fix searches with mixed casing
|
- outposts/ldap: fix searches with mixed casing
|
||||||
- outposts/proxy: use filesystem storage for non-embedded outposts
|
- outposts/proxy: use filesystem storage for non-embedded outposts
|
||||||
- policies: don't always clear application cache on post_save
|
- policies: don't always clear application cache on post_save
|
||||||
- stagse/authenticator_webauthn: remove pydantic import
|
- stagse/authenticator_webauthn: remove pydantic import
|
||||||
- web: fix borders of sidebars in dark mode
|
- web: fix borders of sidebars in dark mode
|
||||||
|
|
||||||
## Fixed in 2021.12.1-rc5
|
## Fixed in 2021.12.1-rc5
|
||||||
|
|
||||||
- crypto: add additional validation before importing a certificate
|
- crypto: add additional validation before importing a certificate
|
||||||
- events: add flow_execution event type
|
- events: add flow_execution event type
|
||||||
- events: fix schema for top_per_user
|
- events: fix schema for top_per_user
|
||||||
- flows: fix wrong exception being caught in flow inspector
|
- flows: fix wrong exception being caught in flow inspector
|
||||||
- outposts: reset backoff after successful connect
|
- outposts: reset backoff after successful connect
|
||||||
- outposts/proxy: fix securecookie: the value is too long again, since it can happen even with filesystem storage
|
- outposts/proxy: fix securecookie: the value is too long again, since it can happen even with filesystem storage
|
||||||
- providers/oauth2: add additional logging to show with token path is taken
|
- providers/oauth2: add additional logging to show with token path is taken
|
||||||
- providers/oauth2: use generate_key instead of uuid4
|
- providers/oauth2: use generate_key instead of uuid4
|
||||||
- sources/ldap: fix incorrect task names being referenced, use source native slug
|
- sources/ldap: fix incorrect task names being referenced, use source native slug
|
||||||
- sources/oauth: add initial okta type
|
- sources/oauth: add initial okta type
|
||||||
- sources/oauth: allow oauth types to override their login button challenge
|
- sources/oauth: allow oauth types to override their login button challenge
|
||||||
- sources/oauth: implement apple native sign-in using the apple JS SDK
|
- sources/oauth: implement apple native sign-in using the apple JS SDK
|
||||||
- sources/oauth: strip parts of custom apple client_id
|
- sources/oauth: strip parts of custom apple client_id
|
||||||
- stages/authenticator_webauthn: make user_verification configurable
|
- stages/authenticator_webauthn: make user_verification configurable
|
||||||
- stages/identification: fix miscalculated sleep
|
- stages/identification: fix miscalculated sleep
|
||||||
- stages/invitation: use GroupMemberSerializer serializer to prevent all of the user's groups and their users from being returned
|
- stages/invitation: use GroupMemberSerializer serializer to prevent all of the user's groups and their users from being returned
|
||||||
- web: add link to open API Browser for API Drawer
|
- web: add link to open API Browser for API Drawer
|
||||||
- web/admin: add dashboard with user creation/login statistics
|
- web/admin: add dashboard with user creation/login statistics
|
||||||
- web/admin: fix invalid display for LDAP Source sync status
|
- web/admin: fix invalid display for LDAP Source sync status
|
||||||
- web/admin: fix rendering for applications on view page
|
- web/admin: fix rendering for applications on view page
|
||||||
- web/admin: fix rendering of applications with custom icon
|
- web/admin: fix rendering of applications with custom icon
|
||||||
- web/admin: improve wording for froward_auth, don't show setup when using proxy mode
|
- web/admin: improve wording for froward_auth, don't show setup when using proxy mode
|
||||||
- web/admin: show warning when deleting currently logged in user
|
- web/admin: show warning when deleting currently logged in user
|
||||||
- web/admin: update overview page
|
- web/admin: update overview page
|
||||||
- web/flows: fix error when attempting to enroll new webauthn device
|
- web/flows: fix error when attempting to enroll new webauthn device
|
||||||
|
|
||||||
## Fixed in 2021.12.1
|
## Fixed in 2021.12.1
|
||||||
|
|
||||||
- core: fix error when attempting to provider from cached application
|
- core: fix error when attempting to provider from cached application
|
||||||
- events: improve app lookup for event creation
|
- events: improve app lookup for event creation
|
||||||
- internal: cleanup duplicate and redundant code, properly set sentry SDK scope settings
|
- internal: cleanup duplicate and redundant code, properly set sentry SDK scope settings
|
||||||
- lifecycle: add -Ofair to celery
|
- lifecycle: add -Ofair to celery
|
||||||
- web/admin: add sidebar to applications
|
- web/admin: add sidebar to applications
|
||||||
- web/admin: fix notification unread colours not matching on user and admin interface
|
- web/admin: fix notification unread colours not matching on user and admin interface
|
||||||
- web/admin: fix stage related flows not being shown in a list
|
- web/admin: fix stage related flows not being shown in a list
|
||||||
- web/elements: add Markdown component to improve rendering
|
- web/elements: add Markdown component to improve rendering
|
||||||
- web/elements: add support for sidebar on table page
|
- web/elements: add support for sidebar on table page
|
||||||
- web/elements: close notification drawer when clearing all notifications
|
- web/elements: close notification drawer when clearing all notifications
|
||||||
|
|
||||||
## Fixed in 2021.12.2
|
## Fixed in 2021.12.2
|
||||||
|
|
||||||
- core: don't rotate non-api tokens
|
- core: don't rotate non-api tokens
|
||||||
- crypto: fix private keys not being imported correctly
|
- crypto: fix private keys not being imported correctly
|
||||||
- outposts: release binary outposts (#1954)
|
- outposts: release binary outposts (#1954)
|
||||||
- outposts/proxy: match skipPathRegex against full URL on domain auth
|
- outposts/proxy: match skipPathRegex against full URL on domain auth
|
||||||
- policies/password: add minimum digits
|
- policies/password: add minimum digits
|
||||||
- providers/oauth2: don't rely on expiry task for access codes and refresh tokens
|
- providers/oauth2: don't rely on expiry task for access codes and refresh tokens
|
||||||
- sources/oauth: allow writing to user in SourceConnection
|
- sources/oauth: allow writing to user in SourceConnection
|
||||||
- web: ignore instantSearchSDKJSBridgeClearHighlight error on edge on iOS
|
- web: ignore instantSearchSDKJSBridgeClearHighlight error on edge on iOS
|
||||||
- web/admin: fix background colour for application sidebar
|
- web/admin: fix background colour for application sidebar
|
||||||
- web/elements: fix border between search buttons
|
- web/elements: fix border between search buttons
|
||||||
|
|
||||||
## Fixed in 2021.12.3
|
## Fixed in 2021.12.3
|
||||||
|
|
||||||
- \*: revert to using GHCR directly
|
- \*: revert to using GHCR directly
|
||||||
- core: fix error when getting launch URL for application with non-existent Provider
|
- core: fix error when getting launch URL for application with non-existent Provider
|
||||||
- internal: fix sentry sample rate not applying to proxy
|
- internal: fix sentry sample rate not applying to proxy
|
||||||
- internal: rework global logging settings, embedded outpost no longer overwrites core
|
- internal: rework global logging settings, embedded outpost no longer overwrites core
|
||||||
- outpost: re-run globalSetup when updating config, allowing for live log level changes
|
- outpost: re-run globalSetup when updating config, allowing for live log level changes
|
||||||
- outposts: handle/ignore http Abort handler
|
- outposts: handle/ignore http Abort handler
|
||||||
- outposts/ldap: fix log formatter and level not being set correctly
|
- outposts/ldap: fix log formatter and level not being set correctly
|
||||||
- outposts/proxy: add initial redirect-loop prevention
|
- outposts/proxy: add initial redirect-loop prevention
|
||||||
- outposts/proxy: fix allowlist for forward_auth and traefik
|
- outposts/proxy: fix allowlist for forward_auth and traefik
|
||||||
- outposts/proxy: fix ping URI not being routed
|
- outposts/proxy: fix ping URI not being routed
|
||||||
- outposts/proxy: fix session not expiring correctly due to miscalculation
|
- outposts/proxy: fix session not expiring correctly due to miscalculation
|
||||||
- root: allow trace log level to work for core/embedded
|
- root: allow trace log level to work for core/embedded
|
||||||
- root: don't set secure cross opener policy
|
- root: don't set secure cross opener policy
|
||||||
- root: drop redis cache sentry errors
|
- root: drop redis cache sentry errors
|
||||||
- root: fix inconsistent URL quoting of redis URLs
|
- root: fix inconsistent URL quoting of redis URLs
|
||||||
- web/admin: add outpost type to list
|
- web/admin: add outpost type to list
|
||||||
- web/admin: auto set the embedded outpost's authentik_host on first view
|
- web/admin: auto set the embedded outpost's authentik_host on first view
|
||||||
- web/admin: don't auto-select certificate for LDAP source verification
|
- web/admin: don't auto-select certificate for LDAP source verification
|
||||||
- web/admin: fix border for outpost health status
|
- web/admin: fix border for outpost health status
|
||||||
|
|
||||||
## Fixed in 2021.12.4
|
## Fixed in 2021.12.4
|
||||||
|
|
||||||
- crypto: improve handling for non-rsa private keys
|
- crypto: improve handling for non-rsa private keys
|
||||||
- events: create test notification with event with data
|
- events: create test notification with event with data
|
||||||
- internal: add custom proxy certificates support to embedded outpost
|
- internal: add custom proxy certificates support to embedded outpost
|
||||||
- policies: fix application cache not being cleared correctly
|
- policies: fix application cache not being cleared correctly
|
||||||
- providers/oauth2: remove jwt_alg field and set algorithm based on selected keypair, select HS256 when no keypair is selected
|
- providers/oauth2: remove jwt_alg field and set algorithm based on selected keypair, select HS256 when no keypair is selected
|
||||||
- stages/authenticator_validate: add passwordless login
|
- stages/authenticator_validate: add passwordless login
|
||||||
- stages/authenticator_validate: fix prompt not triggering when using in non-authentication context
|
- stages/authenticator_validate: fix prompt not triggering when using in non-authentication context
|
||||||
- stages/authenticator_validate: refuse passwordless flow if flow is not for authentication
|
- stages/authenticator_validate: refuse passwordless flow if flow is not for authentication
|
||||||
- tenants: add web certificate field, make authentik's core certificate configurable based on keypair
|
- tenants: add web certificate field, make authentik's core certificate configurable based on keypair
|
||||||
- web/admin: fix explore integration not opening in new tab
|
- web/admin: fix explore integration not opening in new tab
|
||||||
- web/elements: fix link from notification drawer not working in user interface
|
- web/elements: fix link from notification drawer not working in user interface
|
||||||
- web/user: fix user details not rendering when loading to a different user settings tab and then switching
|
- web/user: fix user details not rendering when loading to a different user settings tab and then switching
|
||||||
|
|
||||||
## Fixed in 2021.12.5
|
## Fixed in 2021.12.5
|
||||||
|
|
||||||
- \*: use py3.10 syntax for unions, remove old Type[] import when possible
|
- \*: use py3.10 syntax for unions, remove old Type[] import when possible
|
||||||
- core: add API endpoint to directly set user's password
|
- core: add API endpoint to directly set user's password
|
||||||
- core: add error handling in source flow manager when flow isn't applicable
|
- core: add error handling in source flow manager when flow isn't applicable
|
||||||
- core: fix UserSelfSerializer's save() overwriting other user attributes
|
- core: fix UserSelfSerializer's save() overwriting other user attributes
|
||||||
- core: prevent LDAP password being set for internal hash upgrades
|
- core: prevent LDAP password being set for internal hash upgrades
|
||||||
- crypto: return private key's type (required for some oauth2 providers)
|
- crypto: return private key's type (required for some oauth2 providers)
|
||||||
- flows: add test helpers to simplify and improve checking of stages, remove force_str
|
- flows: add test helpers to simplify and improve checking of stages, remove force_str
|
||||||
- flows: don't create EventAction.FLOW_EXECUTION
|
- flows: don't create EventAction.FLOW_EXECUTION
|
||||||
- flows: update default flow titles
|
- flows: update default flow titles
|
||||||
- flows: use WithUserInfoChallenge for AccessDeniedChallenge
|
- flows: use WithUserInfoChallenge for AccessDeniedChallenge
|
||||||
- lib: strip values for timedelta from string
|
- lib: strip values for timedelta from string
|
||||||
- outposts: add remote docker integration via SSH
|
- outposts: add remote docker integration via SSH
|
||||||
- outposts: fix outpost's sentry not sending release
|
- outposts: fix outpost's sentry not sending release
|
||||||
- outposts: include outposts build hash in state
|
- outposts: include outposts build hash in state
|
||||||
- outposts/proxy: add support for multiple states, when multiple requests are redirect at once
|
- outposts/proxy: add support for multiple states, when multiple requests are redirect at once
|
||||||
- outposts/proxy: fix error checking for type assertion
|
- outposts/proxy: fix error checking for type assertion
|
||||||
- policies/reputation: rework reputation to use a single entry, include geo_ip data
|
- policies/reputation: rework reputation to use a single entry, include geo_ip data
|
||||||
- sources/oauth: add additional scopes field to get additional data from provider
|
- sources/oauth: add additional scopes field to get additional data from provider
|
||||||
- sources/oauth: fix github provider not including correct base scopes
|
- sources/oauth: fix github provider not including correct base scopes
|
||||||
- stages/identification: add field for passwordless flow
|
- stages/identification: add field for passwordless flow
|
||||||
- tenants: forbid creation of multiple default tenants
|
- tenants: forbid creation of multiple default tenants
|
||||||
- web: add tr to locale
|
- web: add tr to locale
|
||||||
- web: remove page header colour, match user navbar to admin sidebar
|
- web: remove page header colour, match user navbar to admin sidebar
|
||||||
- web/admin: add Admin in titlebar for admin interface
|
- web/admin: add Admin in titlebar for admin interface
|
||||||
- web/admin: fix alignment in outpost list when expanding rows
|
- web/admin: fix alignment in outpost list when expanding rows
|
||||||
- web/admin: fix display when groups/users don't fit on a single row
|
- web/admin: fix display when groups/users don't fit on a single row
|
||||||
- web/admin: include key type in list
|
- web/admin: include key type in list
|
||||||
- web/admin: mark additional scopes as non-required
|
- web/admin: mark additional scopes as non-required
|
||||||
- web/admin: show flow title in list
|
- web/admin: show flow title in list
|
||||||
- web/elements: fix alignment of chipgroup on modal add
|
- web/elements: fix alignment of chipgroup on modal add
|
||||||
- web/elements: fix spacing between chips in chip-group
|
- web/elements: fix spacing between chips in chip-group
|
||||||
- web/elements: re-enable codemirror line numbers (fixed on firefox)
|
- web/elements: re-enable codemirror line numbers (fixed on firefox)
|
||||||
- web/flows: add workaround for autofocus not working in password stage
|
- web/flows: add workaround for autofocus not working in password stage
|
||||||
- web/flows: fix duplicate loading spinners when using webauthn
|
- web/flows: fix duplicate loading spinners when using webauthn
|
||||||
- web/flows: fix helper form not being removed from identification stage (improve password manager compatibility)
|
- web/flows: fix helper form not being removed from identification stage (improve password manager compatibility)
|
||||||
- web/flows: include user in access denied stage
|
- web/flows: include user in access denied stage
|
||||||
- web/flows: only add helper username input if using native shadow dom to prevent browser confusion
|
- web/flows: only add helper username input if using native shadow dom to prevent browser confusion
|
||||||
- web/user: add language selection
|
- web/user: add language selection
|
||||||
- web/user: rework user source connection UI
|
- web/user: rework user source connection UI
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,107 +5,107 @@ slug: "/releases/2021.2"
|
|||||||
|
|
||||||
## Headline Changes
|
## Headline Changes
|
||||||
|
|
||||||
- Managed objects
|
- Managed objects
|
||||||
|
|
||||||
Objects like property mappings can now be marked as managed, which means that they will be created, updated and deleted by authentik.
|
Objects like property mappings can now be marked as managed, which means that they will be created, updated and deleted by authentik.
|
||||||
|
|
||||||
Currently, this is used to update default property mappings, and mark tokens and users generated by outposts.
|
Currently, this is used to update default property mappings, and mark tokens and users generated by outposts.
|
||||||
|
|
||||||
- Improved support for different LDAP Servers
|
- Improved support for different LDAP Servers
|
||||||
|
|
||||||
The LDAP source has improved support for non-Active Directory LDAP setups. This includes the following changes:
|
The LDAP source has improved support for non-Active Directory LDAP setups. This includes the following changes:
|
||||||
|
|
||||||
- Switch to sync membership from groups to users rather than user to group
|
- Switch to sync membership from groups to users rather than user to group
|
||||||
- Fix users, which were removed from a group in LDAP not being removed from said group
|
- Fix users, which were removed from a group in LDAP not being removed from said group
|
||||||
- Add support for LDAP servers which have core fields declared as lists
|
- Add support for LDAP servers which have core fields declared as lists
|
||||||
- Add property-mappings for groups, to map attributes like `name` or `is_superuser`
|
- Add property-mappings for groups, to map attributes like `name` or `is_superuser`
|
||||||
|
|
||||||
- Add test view to debug property-mappings.
|
- Add test view to debug property-mappings.
|
||||||
|
|
||||||
## Fixes
|
## Fixes
|
||||||
|
|
||||||
- admin: add test view for property mappings
|
- admin: add test view for property mappings
|
||||||
- core: Fix application cache not being cleared correctly (and not being ignored for searches)
|
- core: Fix application cache not being cleared correctly (and not being ignored for searches)
|
||||||
- events: add send_once flag to send webhooks only once
|
- events: add send_once flag to send webhooks only once
|
||||||
- events: allow searching by event id
|
- events: allow searching by event id
|
||||||
- events: don't log successful system tasks
|
- events: don't log successful system tasks
|
||||||
- events: improve information sent in notification emails
|
- events: improve information sent in notification emails
|
||||||
- providers/oauth2: pass application to configuration error event
|
- providers/oauth2: pass application to configuration error event
|
||||||
- providers/saml: fix imported provider not saving properties correctly
|
- providers/saml: fix imported provider not saving properties correctly
|
||||||
- root: use filtering_bound_logger for speed improvements
|
- root: use filtering_bound_logger for speed improvements
|
||||||
- stages/consent: fix wrong widget for expire
|
- stages/consent: fix wrong widget for expire
|
||||||
- web: migrate Provider List to SPA
|
- web: migrate Provider List to SPA
|
||||||
|
|
||||||
## Fixed in 2021.2.1-rc2
|
## Fixed in 2021.2.1-rc2
|
||||||
|
|
||||||
- admin: add Certificate-Keypair generation
|
- admin: add Certificate-Keypair generation
|
||||||
- admin: fix property-mapping views redirecting to invalid URL
|
- admin: fix property-mapping views redirecting to invalid URL
|
||||||
- admin: improve layout for policy testing
|
- admin: improve layout for policy testing
|
||||||
- admin: remove old provider list view
|
- admin: remove old provider list view
|
||||||
- outpost: cap reconnect backoff at 60 seconds, reset backoff on successful connection
|
- outpost: cap reconnect backoff at 60 seconds, reset backoff on successful connection
|
||||||
- policies: add debug flag to PolicyRequest to prevent alerts from testing policies
|
- policies: add debug flag to PolicyRequest to prevent alerts from testing policies
|
||||||
- providers/saml: force-set friendly_name to empty string for managed mappings
|
- providers/saml: force-set friendly_name to empty string for managed mappings
|
||||||
- root: add dedicated live and readiness healthcheck views
|
- root: add dedicated live and readiness healthcheck views
|
||||||
- web: fix link to provider list on overview page
|
- web: fix link to provider list on overview page
|
||||||
- web: fix outpost item in sidebar being active on service connection views
|
- web: fix outpost item in sidebar being active on service connection views
|
||||||
|
|
||||||
## Fixed in 2021.2.1-stable
|
## Fixed in 2021.2.1-stable
|
||||||
|
|
||||||
- admin: fix link in source list
|
- admin: fix link in source list
|
||||||
- web: rebuild Outposts list in SPA
|
- web: rebuild Outposts list in SPA
|
||||||
- outposts: Fix reconnect not working reliably
|
- outposts: Fix reconnect not working reliably
|
||||||
- providers/oauth2: add authorized scopes to AUTHORIZE_APPLICATION event
|
- providers/oauth2: add authorized scopes to AUTHORIZE_APPLICATION event
|
||||||
- providers/oauth2: add unofficial groups attribute to default profile claim
|
- providers/oauth2: add unofficial groups attribute to default profile claim
|
||||||
- web: fix sidebar being active when stage prompts is selected
|
- web: fix sidebar being active when stage prompts is selected
|
||||||
|
|
||||||
## Fixed in 2021.2.2-stable
|
## Fixed in 2021.2.2-stable
|
||||||
|
|
||||||
- crypto: move certificate and key data to separate api calls to create events
|
- crypto: move certificate and key data to separate api calls to create events
|
||||||
- events: rename context.token to context.secret
|
- events: rename context.token to context.secret
|
||||||
- events: rename token_view to secret_view
|
- events: rename token_view to secret_view
|
||||||
- lib: fix stacktrace for general expressions
|
- lib: fix stacktrace for general expressions
|
||||||
- outposts: fix ProxyProvider update not triggering outpost update
|
- outposts: fix ProxyProvider update not triggering outpost update
|
||||||
- policies: skip cache on debug request
|
- policies: skip cache on debug request
|
||||||
- providers/proxy: fix certificates without key being selectable
|
- providers/proxy: fix certificates without key being selectable
|
||||||
- root: log runtime in milliseconds
|
- root: log runtime in milliseconds
|
||||||
- sources/\*: switch API to use slug in URL
|
- sources/\*: switch API to use slug in URL
|
||||||
- sources/ldap: add API for sync status
|
- sources/ldap: add API for sync status
|
||||||
- sources/oauth: add callback URL to api
|
- sources/oauth: add callback URL to api
|
||||||
- web: fix ModalButton working in global scope, causing issues on 2nd use
|
- web: fix ModalButton working in global scope, causing issues on 2nd use
|
||||||
|
|
||||||
## Fixed in 2021.2.3-stable
|
## Fixed in 2021.2.3-stable
|
||||||
|
|
||||||
- core: fix tokens using wrong lookup
|
- core: fix tokens using wrong lookup
|
||||||
- web: fix missing source create button
|
- web: fix missing source create button
|
||||||
|
|
||||||
## Fixed in 2021.2.4-stable
|
## Fixed in 2021.2.4-stable
|
||||||
|
|
||||||
- admin: fix missing success_urls causing errors on create/update forms
|
- admin: fix missing success_urls causing errors on create/update forms
|
||||||
- core: fix typo in user settings causing sources to not show
|
- core: fix typo in user settings causing sources to not show
|
||||||
|
|
||||||
## Fixed in 2021.2.5-stable
|
## Fixed in 2021.2.5-stable
|
||||||
|
|
||||||
- admin: fix policy list not having a refresh button
|
- admin: fix policy list not having a refresh button
|
||||||
- events: pass Event's user to Notification policy engine when present
|
- events: pass Event's user to Notification policy engine when present
|
||||||
- helm: add initial wait for healthcheck
|
- helm: add initial wait for healthcheck
|
||||||
- outpost: improve logging output, ensure fields match api server
|
- outpost: improve logging output, ensure fields match api server
|
||||||
- root: fix request_id not being logged for actual asgi requests
|
- root: fix request_id not being logged for actual asgi requests
|
||||||
- sources/oauth: fix buttons not being ak-root-link
|
- sources/oauth: fix buttons not being ak-root-link
|
||||||
- web: fix library not being full height, again
|
- web: fix library not being full height, again
|
||||||
- web: fix outpost edit/delete buttons
|
- web: fix outpost edit/delete buttons
|
||||||
- web: fix SiteShell breaking links when handlers are updated twice
|
- web: fix SiteShell breaking links when handlers are updated twice
|
||||||
|
|
||||||
## Fixed in 2021.2.6-stable
|
## Fixed in 2021.2.6-stable
|
||||||
|
|
||||||
- admin: fix missing success_url for Cache clean views
|
- admin: fix missing success_url for Cache clean views
|
||||||
- events: fix error when event can't be loaded in rule task
|
- events: fix error when event can't be loaded in rule task
|
||||||
- flows: handle error when app cannot be found during flow import
|
- flows: handle error when app cannot be found during flow import
|
||||||
- policies: sort groups in GroupMembershipPolicy policy and binding
|
- policies: sort groups in GroupMembershipPolicy policy and binding
|
||||||
- providers/oauth2: fix error when no login event could be found
|
- providers/oauth2: fix error when no login event could be found
|
||||||
- sources/ldap: fix API error when source has not synced yet
|
- sources/ldap: fix API error when source has not synced yet
|
||||||
- sources/ldap: fix password setter on users which are not LDAP
|
- sources/ldap: fix password setter on users which are not LDAP
|
||||||
- web: add sentry CaptureConsole
|
- web: add sentry CaptureConsole
|
||||||
- web: fix colourstyles not being included in common_styles
|
- web: fix colourstyles not being included in common_styles
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
@ -117,11 +117,11 @@ The change affects the "SAML Name" property, which has been changed from an oid
|
|||||||
|
|
||||||
The integrations affected are:
|
The integrations affected are:
|
||||||
|
|
||||||
- [Ansible Tower/AWX](/integrations/services/awx-tower/)
|
- [Ansible Tower/AWX](/integrations/services/awx-tower/)
|
||||||
- [GitLab](/integrations/services/gitlab/)
|
- [GitLab](/integrations/services/gitlab/)
|
||||||
- [NextCloud](/integrations/services/nextcloud/)
|
- [NextCloud](/integrations/services/nextcloud/)
|
||||||
- [Rancher](/integrations/services/rancher/)
|
- [Rancher](/integrations/services/rancher/)
|
||||||
- [Sentry](/integrations/services/sentry/)
|
- [Sentry](/integrations/services/sentry/)
|
||||||
|
|
||||||
### docker-compose
|
### docker-compose
|
||||||
|
|
||||||
|
@ -5,13 +5,13 @@ slug: "/releases/2021.3"
|
|||||||
|
|
||||||
## Headline Changes
|
## Headline Changes
|
||||||
|
|
||||||
- WebAuthn support
|
- WebAuthn support
|
||||||
|
|
||||||
This release introduces support for [WebAuthn](https://webauthn.io/), an open standard for the use of hardware authentication keys like YubiKeys on the web.
|
This release introduces support for [WebAuthn](https://webauthn.io/), an open standard for the use of hardware authentication keys like YubiKeys on the web.
|
||||||
|
|
||||||
You can configure a WebAuthn device using the "WebAuthn Authenticator Setup Stage" stage. Afterwards, it can be used as an n-th factor, just like TOTP authenticators.
|
You can configure a WebAuthn device using the "WebAuthn Authenticator Setup Stage" stage. Afterwards, it can be used as an n-th factor, just like TOTP authenticators.
|
||||||
|
|
||||||
- Simplify role-based access
|
- Simplify role-based access
|
||||||
|
|
||||||
Instead of having to create a Group Membership policy for every group you want to use, you can now select a Group and even a User directly in a binding.
|
Instead of having to create a Group Membership policy for every group you want to use, you can now select a Group and even a User directly in a binding.
|
||||||
|
|
||||||
@ -21,19 +21,19 @@ slug: "/releases/2021.3"
|
|||||||
|
|
||||||
Group Membership policies are automatically migrated to use this simplified access.
|
Group Membership policies are automatically migrated to use this simplified access.
|
||||||
|
|
||||||
- Invisible reCAPTCHA
|
- Invisible reCAPTCHA
|
||||||
|
|
||||||
The checkbox-based reCAPTCHA has been replaced with [reCAPTCHA v2 Invisible](https://developers.google.com/recaptcha/docs/invisible).
|
The checkbox-based reCAPTCHA has been replaced with [reCAPTCHA v2 Invisible](https://developers.google.com/recaptcha/docs/invisible).
|
||||||
|
|
||||||
This is a breaking change, as a set of reCAPTCHA keys are only valid for a single type. For this, go to https://www.google.com/recaptcha/admin and create a new set of keys with the "reCAPTCHA v2" type and "Invisible reCAPTCHA badge" mode.
|
This is a breaking change, as a set of reCAPTCHA keys are only valid for a single type. For this, go to https://www.google.com/recaptcha/admin and create a new set of keys with the "reCAPTCHA v2" type and "Invisible reCAPTCHA badge" mode.
|
||||||
|
|
||||||
- Migration of Flow Executor to SPA/API
|
- Migration of Flow Executor to SPA/API
|
||||||
|
|
||||||
The flow executor has been migrated to a full SPA/API architecture. This was required for WebAuthn, but also allows for greater customizability.
|
The flow executor has been migrated to a full SPA/API architecture. This was required for WebAuthn, but also allows for greater customizability.
|
||||||
|
|
||||||
It also allows other services to use the flow executor via an API, which will be used by the outpost further down the road.
|
It also allows other services to use the flow executor via an API, which will be used by the outpost further down the road.
|
||||||
|
|
||||||
- Deny stage
|
- Deny stage
|
||||||
|
|
||||||
A new stage which simply denies access. This can be used to conditionally deny access to users during a flow. Authorization flows for example required an authenticated user, but there was no previous way to block access for un-authenticated users.
|
A new stage which simply denies access. This can be used to conditionally deny access to users during a flow. Authorization flows for example required an authenticated user, but there was no previous way to block access for un-authenticated users.
|
||||||
|
|
||||||
@ -41,43 +41,43 @@ slug: "/releases/2021.3"
|
|||||||
|
|
||||||
## Fixed in 2021.3.2
|
## Fixed in 2021.3.2
|
||||||
|
|
||||||
- sources/ldap: fix sync for Users without pwdLastSet
|
- sources/ldap: fix sync for Users without pwdLastSet
|
||||||
- web: fix date display issue
|
- web: fix date display issue
|
||||||
- web: fix submit in Modal reloading page in firefox
|
- web: fix submit in Modal reloading page in firefox
|
||||||
|
|
||||||
## Fixed in 2021.3.3
|
## Fixed in 2021.3.3
|
||||||
|
|
||||||
- providers/oauth2: allow protected_resource_view when method is OPTIONS
|
- providers/oauth2: allow protected_resource_view when method is OPTIONS
|
||||||
- stages/authenticator_static: fix error when disable static tokens
|
- stages/authenticator_static: fix error when disable static tokens
|
||||||
- stages/authenticator_webauthn: add missing migration
|
- stages/authenticator_webauthn: add missing migration
|
||||||
- web: fix Colours for user settings in dark mode
|
- web: fix Colours for user settings in dark mode
|
||||||
- web: fix Flow executor not showing spinner when redirecting
|
- web: fix Flow executor not showing spinner when redirecting
|
||||||
- web: fix Source icons not being displayed on firefox
|
- web: fix Source icons not being displayed on firefox
|
||||||
- web: fix styling for static token list
|
- web: fix styling for static token list
|
||||||
|
|
||||||
## Fixed in 2021.3.4
|
## Fixed in 2021.3.4
|
||||||
|
|
||||||
- admin: include git build hash in gh-\* tags and show build hash in admin overview
|
- admin: include git build hash in gh-\* tags and show build hash in admin overview
|
||||||
- events: don't fail on boot when geoip can't be opened
|
- events: don't fail on boot when geoip can't be opened
|
||||||
- helm: add initial geoip
|
- helm: add initial geoip
|
||||||
- outposts: improve logs for outpost connection
|
- outposts: improve logs for outpost connection
|
||||||
- policies: fix error when clearing policy cache when no policies are cached
|
- policies: fix error when clearing policy cache when no policies are cached
|
||||||
- root: add comment for error reporting to compose
|
- root: add comment for error reporting to compose
|
||||||
- root: add geoip config to docker-compose
|
- root: add geoip config to docker-compose
|
||||||
- sources/oauth: fix error on user enrollment when no enrollment flow is defined
|
- sources/oauth: fix error on user enrollment when no enrollment flow is defined
|
||||||
- web: add close button to messages
|
- web: add close button to messages
|
||||||
- web: backport fix: add missing background filter
|
- web: backport fix: add missing background filter
|
||||||
- web: fix outpost health display
|
- web: fix outpost health display
|
||||||
- web: fix path for fallback flow view
|
- web: fix path for fallback flow view
|
||||||
- web: fix system task index
|
- web: fix system task index
|
||||||
- web: improve compatibility with password managers
|
- web: improve compatibility with password managers
|
||||||
- web: improve layout of expanded event info
|
- web: improve layout of expanded event info
|
||||||
- web: improve styling for application list
|
- web: improve styling for application list
|
||||||
- web: prevent duplicate messages
|
- web: prevent duplicate messages
|
||||||
- web: show related edit button for bound stages and policies
|
- web: show related edit button for bound stages and policies
|
||||||
- web: use chunking for vendor and api
|
- web: use chunking for vendor and api
|
||||||
- web: use loadingState for autosubmitStage
|
- web: use loadingState for autosubmitStage
|
||||||
- web: use sections in sidebar, adjust colouring
|
- web: use sections in sidebar, adjust colouring
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,126 +5,126 @@ slug: "/releases/2021.4"
|
|||||||
|
|
||||||
## Headline Changes
|
## Headline Changes
|
||||||
|
|
||||||
- Configurable Policy engine mode
|
- Configurable Policy engine mode
|
||||||
|
|
||||||
In the past, all objects, which could have policies attached to them, required _all_ policies to pass to consider an action successful.
|
In the past, all objects, which could have policies attached to them, required _all_ policies to pass to consider an action successful.
|
||||||
You can now configure if _all_ policies need to pass, or if _any_ policy needs to pass.
|
You can now configure if _all_ policies need to pass, or if _any_ policy needs to pass.
|
||||||
|
|
||||||
This can now be configured for the following objects:
|
This can now be configured for the following objects:
|
||||||
|
|
||||||
- Applications (access restrictions)
|
- Applications (access restrictions)
|
||||||
- Sources
|
- Sources
|
||||||
- Flows
|
- Flows
|
||||||
- Flow-stage bindings
|
- Flow-stage bindings
|
||||||
|
|
||||||
For backwards compatibility, this is set to _all_, but new objects will default to _any_.
|
For backwards compatibility, this is set to _all_, but new objects will default to _any_.
|
||||||
|
|
||||||
- Expiring Events
|
- Expiring Events
|
||||||
|
|
||||||
Previously, events would stay in the database forever, and had to eventually be cleaned up manually. This version add expiry to events with a default
|
Previously, events would stay in the database forever, and had to eventually be cleaned up manually. This version add expiry to events with a default
|
||||||
timeout of 1 Year. This also applies to existing events, and their expiry will be set during the migration.
|
timeout of 1 Year. This also applies to existing events, and their expiry will be set during the migration.
|
||||||
|
|
||||||
- New UI
|
- New UI
|
||||||
|
|
||||||
While the UI mostly looks the same, under the hood a lot has changed. The Web UI is now a Single-page application based on rollup and lit-html. This has several consequences and new features, for example:
|
While the UI mostly looks the same, under the hood a lot has changed. The Web UI is now a Single-page application based on rollup and lit-html. This has several consequences and new features, for example:
|
||||||
|
|
||||||
- You can now see a user's OAuth Access/Refresh tokens and the consents they've given
|
- You can now see a user's OAuth Access/Refresh tokens and the consents they've given
|
||||||
- You can now see a per-object changelog based on the model_create/update/delete events being created.
|
- You can now see a per-object changelog based on the model_create/update/delete events being created.
|
||||||
- A new API Browser is available under `https://authentink.company/api/v2beta/`
|
- A new API Browser is available under `https://authentink.company/api/v2beta/`
|
||||||
- Several new charts, new pages and quality-of-life improvements
|
- Several new charts, new pages and quality-of-life improvements
|
||||||
- Credentials of objects are no longer shown while editing them
|
- Credentials of objects are no longer shown while editing them
|
||||||
|
|
||||||
- Deprecated Group membership has been removed.
|
- Deprecated Group membership has been removed.
|
||||||
|
|
||||||
## Minor changes
|
## Minor changes
|
||||||
|
|
||||||
- You can now specify the amount of processes started in docker-compose using the `WORKERS` environment variable.
|
- You can now specify the amount of processes started in docker-compose using the `WORKERS` environment variable.
|
||||||
|
|
||||||
## Fixed in 2021.4.2
|
## Fixed in 2021.4.2
|
||||||
|
|
||||||
- core: fix propertymapping API returning invalid value for components (https://github.com/goauthentik/authentik/issues/746)
|
- core: fix propertymapping API returning invalid value for components (https://github.com/goauthentik/authentik/issues/746)
|
||||||
- core: improve messaging when creating a recovery link for a user when no recovery flow exists
|
- core: improve messaging when creating a recovery link for a user when no recovery flow exists
|
||||||
- flows: annotate flows executor 404 error
|
- flows: annotate flows executor 404 error
|
||||||
- flows: include configure_flow in stages API
|
- flows: include configure_flow in stages API
|
||||||
- helm: make storage class, size and mode configurable
|
- helm: make storage class, size and mode configurable
|
||||||
- helm: turn off monitoring by default (https://github.com/goauthentik/authentik/issues/741)
|
- helm: turn off monitoring by default (https://github.com/goauthentik/authentik/issues/741)
|
||||||
- outposts: fix errors when creating multiple outposts
|
- outposts: fix errors when creating multiple outposts
|
||||||
- root: add restart: unless-stopped to compose
|
- root: add restart: unless-stopped to compose
|
||||||
- root: base Websocket message storage on Base not fallback
|
- root: base Websocket message storage on Base not fallback
|
||||||
- root: fix healthcheck part in docker-compose
|
- root: fix healthcheck part in docker-compose
|
||||||
- root: fix setting of EMAIL_USE_TLS and EMAIL_USE_SSL
|
- root: fix setting of EMAIL_USE_TLS and EMAIL_USE_SSL
|
||||||
- sources/ldap: improve error handling during sync
|
- sources/ldap: improve error handling during sync
|
||||||
- sources/oauth: fix error when creating an oauth source which has fixed URLs
|
- sources/oauth: fix error when creating an oauth source which has fixed URLs
|
||||||
- sources/oauth: fix resolution of sources' provider type
|
- sources/oauth: fix resolution of sources' provider type
|
||||||
- web: fix background-color on router outlet on light mode
|
- web: fix background-color on router outlet on light mode
|
||||||
- web/admin: fix error when user doesn't have permissions to read source
|
- web/admin: fix error when user doesn't have permissions to read source
|
||||||
- web/admin: fix errors in user profile when non-superuser
|
- web/admin: fix errors in user profile when non-superuser
|
||||||
|
|
||||||
## Fixed in 2021.4.3
|
## Fixed in 2021.4.3
|
||||||
|
|
||||||
- \*: add model_name to TypeCreate API to distinguish between models sharing a component
|
- \*: add model_name to TypeCreate API to distinguish between models sharing a component
|
||||||
- api: fix CSRF error when using POST/PATCH/PUT in API Browser
|
- api: fix CSRF error when using POST/PATCH/PUT in API Browser
|
||||||
- api: make 401 messages clearer
|
- api: make 401 messages clearer
|
||||||
- api: mount outposts under outposts/instances to match flows
|
- api: mount outposts under outposts/instances to match flows
|
||||||
- core: add parameter to output property mapping test result formatted
|
- core: add parameter to output property mapping test result formatted
|
||||||
- core: add superuser_full_list to applications list, shows all applications when superuser
|
- core: add superuser_full_list to applications list, shows all applications when superuser
|
||||||
- core: fix Tokens being created with incorrect intent by default
|
- core: fix Tokens being created with incorrect intent by default
|
||||||
- outposts: don't run outpost_controller when no service connection is set
|
- outposts: don't run outpost_controller when no service connection is set
|
||||||
- providers/oauth2: Set CORS Headers for token endpoint, check Origin header against redirect URLs
|
- providers/oauth2: Set CORS Headers for token endpoint, check Origin header against redirect URLs
|
||||||
- root: auto-migrate on startup, lock database using pg_advisory_lock
|
- root: auto-migrate on startup, lock database using pg_advisory_lock
|
||||||
- sources/oauth: add login with plex support
|
- sources/oauth: add login with plex support
|
||||||
- sources/oauth: fix redirect loop for source with non-configurable URLs
|
- sources/oauth: fix redirect loop for source with non-configurable URLs
|
||||||
- sources/oauth: save null instead of empty string for sources without configurable URLs
|
- sources/oauth: save null instead of empty string for sources without configurable URLs
|
||||||
- web/admin: add ability to add users to a group whilst creating a group
|
- web/admin: add ability to add users to a group whilst creating a group
|
||||||
- web/admin: fix default for codemirror
|
- web/admin: fix default for codemirror
|
||||||
- web/admin: fix group member table order
|
- web/admin: fix group member table order
|
||||||
- web/admin: fix non-matching provider type being selected when creating an OAuth Source
|
- web/admin: fix non-matching provider type being selected when creating an OAuth Source
|
||||||
- web/admin: fix provider type resetting when changing provider type
|
- web/admin: fix provider type resetting when changing provider type
|
||||||
- web/admin: fix undefined being shown when viewing application
|
- web/admin: fix undefined being shown when viewing application
|
||||||
- web/admin: improve default selection for property-mappings
|
- web/admin: improve default selection for property-mappings
|
||||||
|
|
||||||
## Fixed in 2021.4.4
|
## Fixed in 2021.4.4
|
||||||
|
|
||||||
- \*: make tasks run every 60 minutes not :00 every hour
|
- \*: make tasks run every 60 minutes not :00 every hour
|
||||||
- outposts: check for X-Forwarded-Host to switch context
|
- outposts: check for X-Forwarded-Host to switch context
|
||||||
- outposts: improve update performance
|
- outposts: improve update performance
|
||||||
- outposts: move local connection check to task, run every 60 minutes
|
- outposts: move local connection check to task, run every 60 minutes
|
||||||
- providers/oauth2: add proper support for non-http schemes as redirect URIs
|
- providers/oauth2: add proper support for non-http schemes as redirect URIs
|
||||||
- providers/oauth2: fix TokenView not having CORS headers set even with proper Origin
|
- providers/oauth2: fix TokenView not having CORS headers set even with proper Origin
|
||||||
- sources/oauth: fix error whilst fetching user profile when source uses fixed URLs
|
- sources/oauth: fix error whilst fetching user profile when source uses fixed URLs
|
||||||
- sources/oauth: handle error in AzureAD when ID Can't be extracted
|
- sources/oauth: handle error in AzureAD when ID Can't be extracted
|
||||||
- stages/user_login: add default backend
|
- stages/user_login: add default backend
|
||||||
- web: fix title not being loaded from config
|
- web: fix title not being loaded from config
|
||||||
- web: only report http errors for 500 and above
|
- web: only report http errors for 500 and above
|
||||||
- web: send response info when response is thrown
|
- web: send response info when response is thrown
|
||||||
- web/admin: add description for fields in proxy provider form
|
- web/admin: add description for fields in proxy provider form
|
||||||
- web/admin: adjust phrasing of cards on overview page
|
- web/admin: adjust phrasing of cards on overview page
|
||||||
- web/admin: fix display for user supseruser status
|
- web/admin: fix display for user supseruser status
|
||||||
- web/admin: fix error when me() returns 403
|
- web/admin: fix error when me() returns 403
|
||||||
- web/admin: fix error when updating identification stage
|
- web/admin: fix error when updating identification stage
|
||||||
- web/admin: fix invalid group member count
|
- web/admin: fix invalid group member count
|
||||||
- web/admin: fix link to providers on overview page
|
- web/admin: fix link to providers on overview page
|
||||||
- web/admin: fix mismatched required tags
|
- web/admin: fix mismatched required tags
|
||||||
- web/admin: improve phrasing for Policy bindings
|
- web/admin: improve phrasing for Policy bindings
|
||||||
- web/admin: only allow policies to be bound to sources as users/groups cannot be checked
|
- web/admin: only allow policies to be bound to sources as users/groups cannot be checked
|
||||||
- web/admin: only pre-select items when creating a new object
|
- web/admin: only pre-select items when creating a new object
|
||||||
- web/flows: fix Sentry not being loaded correctly
|
- web/flows: fix Sentry not being loaded correctly
|
||||||
|
|
||||||
## Fixed in 2021.4.5
|
## Fixed in 2021.4.5
|
||||||
|
|
||||||
- core: fix text on error pages being hard to read
|
- core: fix text on error pages being hard to read
|
||||||
- outposts: only kill docker container if its running
|
- outposts: only kill docker container if its running
|
||||||
- root: add middleware to properly report websocket connection to sentry
|
- root: add middleware to properly report websocket connection to sentry
|
||||||
- root: don't use .error of structlog to not send to sentry
|
- root: don't use .error of structlog to not send to sentry
|
||||||
- stages/email: catch ValueError when global email settings are invalid
|
- stages/email: catch ValueError when global email settings are invalid
|
||||||
- stages/invitation: accept token from prompt_data
|
- stages/invitation: accept token from prompt_data
|
||||||
- stages/invitation: fix token not being loaded correctly from query string
|
- stages/invitation: fix token not being loaded correctly from query string
|
||||||
- web: fix text-colour for form help text
|
- web: fix text-colour for form help text
|
||||||
- web: ignore network errors for sentry
|
- web: ignore network errors for sentry
|
||||||
- web/admin: don't show docker certs as required
|
- web/admin: don't show docker certs as required
|
||||||
- web/flows: fix redirect loop when sentry is enabled on flow views
|
- web/flows: fix redirect loop when sentry is enabled on flow views
|
||||||
- web/flows: include ShadyDOM, always enable ShadyDOM for flow interface, improve compatibility with password
|
- web/flows: include ShadyDOM, always enable ShadyDOM for flow interface, improve compatibility with password
|
||||||
- web/flows/identification: fix phrasing account recovery
|
- web/flows/identification: fix phrasing account recovery
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ slug: "/releases/2021.5"
|
|||||||
|
|
||||||
## Headline Changes
|
## Headline Changes
|
||||||
|
|
||||||
- LDAP Provider
|
- LDAP Provider
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
This feature is still in technical preview, so please report any Bugs you run into on [GitHub](https://github.com/goauthentik/authentik/issues)
|
This feature is still in technical preview, so please report any Bugs you run into on [GitHub](https://github.com/goauthentik/authentik/issues)
|
||||||
@ -17,85 +17,85 @@ This feature is still in technical preview, so please report any Bugs you run in
|
|||||||
|
|
||||||
Binding against the LDAP Server uses a flow in the background. This allows you to use the same policies and flows as you do for web-based logins. The only limitation is that currently only identification and password stages are supported, due to how LDAP works.
|
Binding against the LDAP Server uses a flow in the background. This allows you to use the same policies and flows as you do for web-based logins. The only limitation is that currently only identification and password stages are supported, due to how LDAP works.
|
||||||
|
|
||||||
- Compatibility with forwardAuth/auth_request
|
- Compatibility with forwardAuth/auth_request
|
||||||
|
|
||||||
The authentik proxy is now compatible with forwardAuth (traefik) / auth_request (nginx). All that is required is the latest version of the outpost,
|
The authentik proxy is now compatible with forwardAuth (traefik) / auth_request (nginx). All that is required is the latest version of the outpost,
|
||||||
and the correct config from [here](../../add-secure-apps/providers/proxy/forward_auth.mdx).
|
and the correct config from [here](../../add-secure-apps/providers/proxy/forward_auth.mdx).
|
||||||
|
|
||||||
- Docker images for ARM
|
- Docker images for ARM
|
||||||
|
|
||||||
Docker images are now built for amd64 and arm64.
|
Docker images are now built for amd64 and arm64.
|
||||||
|
|
||||||
- Reduced setup complexity
|
- Reduced setup complexity
|
||||||
|
|
||||||
The authentik server now requires less containers. The static container (as well as the traefik when using docker-compose) are no longer required. As the first stage of a migration to Golang instead of Python, authentik now runs behind an in-container reverse proxy, which hosts the static files.
|
The authentik server now requires less containers. The static container (as well as the traefik when using docker-compose) are no longer required. As the first stage of a migration to Golang instead of Python, authentik now runs behind an in-container reverse proxy, which hosts the static files.
|
||||||
|
|
||||||
- New Plex authentication source
|
- New Plex authentication source
|
||||||
|
|
||||||
The plex source (previously a provider for the OAuth Source) has been rewritten to a dedicated Source.
|
The plex source (previously a provider for the OAuth Source) has been rewritten to a dedicated Source.
|
||||||
|
|
||||||
You can now limit access to authentik based on which servers a Plex user is member of.
|
You can now limit access to authentik based on which servers a Plex user is member of.
|
||||||
|
|
||||||
- Configurable source behaviour
|
- Configurable source behaviour
|
||||||
|
|
||||||
You can now configure how a source behaves after the user has authenticated themselves to the source. Previously, authentik always checked the unique identifier from the source, enrolled the user when the identifier didn't exist and authenticated the user otherwise.
|
You can now configure how a source behaves after the user has authenticated themselves to the source. Previously, authentik always checked the unique identifier from the source, enrolled the user when the identifier didn't exist and authenticated the user otherwise.
|
||||||
|
|
||||||
Now you can configure how the matching should be done:
|
Now you can configure how the matching should be done:
|
||||||
|
|
||||||
- Identifier: Keeps the old behaviour, can lead to duplicate user accounts
|
- Identifier: Keeps the old behaviour, can lead to duplicate user accounts
|
||||||
- Email (link): If a user with the same Email address exists, they are linked. Can have security implications when a source doesn't validate email addresses.
|
- Email (link): If a user with the same Email address exists, they are linked. Can have security implications when a source doesn't validate email addresses.
|
||||||
- Email (deny): Deny the flow if the Email address is already used.
|
- Email (deny): Deny the flow if the Email address is already used.
|
||||||
- Username (link): If a user with the same username address exists, they are linked. Can have security implications when a username is used with another source.
|
- Username (link): If a user with the same username address exists, they are linked. Can have security implications when a username is used with another source.
|
||||||
- Username (deny): Deny the flow if the username address is already used.
|
- Username (deny): Deny the flow if the username address is already used.
|
||||||
|
|
||||||
## Minor changes
|
## Minor changes
|
||||||
|
|
||||||
- Improved compatibility of the flow interface with password managers.
|
- Improved compatibility of the flow interface with password managers.
|
||||||
- Improved compatibility when using SAML Sources with a redirect binding.
|
- Improved compatibility when using SAML Sources with a redirect binding.
|
||||||
- Improved configurability of outpost docker image name for managed Outposts.
|
- Improved configurability of outpost docker image name for managed Outposts.
|
||||||
- Add customization of access code validity for OAuth2 Providers.
|
- Add customization of access code validity for OAuth2 Providers.
|
||||||
- Add ability to configure no login fields on identification stage to only allow logins with Sources.
|
- Add ability to configure no login fields on identification stage to only allow logins with Sources.
|
||||||
- Add single-use flag for invitations to delete token after use.
|
- Add single-use flag for invitations to delete token after use.
|
||||||
- Fix sidebar not collapsible on mobile.
|
- Fix sidebar not collapsible on mobile.
|
||||||
|
|
||||||
## Fixed in 2021.5.2
|
## Fixed in 2021.5.2
|
||||||
|
|
||||||
- core: fix application's slug field not being set to unique
|
- core: fix application's slug field not being set to unique
|
||||||
- flows: fix error when using cancel flow
|
- flows: fix error when using cancel flow
|
||||||
- lib: Fix config loading of secrets from files (#887)
|
- lib: Fix config loading of secrets from files (#887)
|
||||||
- lib: fix parsing of remote IP header when behind multiple reverse proxies
|
- lib: fix parsing of remote IP header when behind multiple reverse proxies
|
||||||
- lifecycle: check if group of docker socket exists
|
- lifecycle: check if group of docker socket exists
|
||||||
- lifecycle: fix error when worker is not running as root
|
- lifecycle: fix error when worker is not running as root
|
||||||
- outposts: fix error when controller loads from cache but cache has expired
|
- outposts: fix error when controller loads from cache but cache has expired
|
||||||
- outposts: fix missing default for OutpostState.for_channel
|
- outposts: fix missing default for OutpostState.for_channel
|
||||||
- outposts: fix reload notification not working due to wrong ID being cached
|
- outposts: fix reload notification not working due to wrong ID being cached
|
||||||
- outposts/ldap: fix AUTHENTIK_INSECURE not being respected for API client during bind
|
- outposts/ldap: fix AUTHENTIK_INSECURE not being respected for API client during bind
|
||||||
- outposts/proxy: fix error redeeming code when using non-standard ports
|
- outposts/proxy: fix error redeeming code when using non-standard ports
|
||||||
- outposts/proxy: fix insecure TLS Skip
|
- outposts/proxy: fix insecure TLS Skip
|
||||||
- providers/ldap: use username instead of name for user dn (#883)
|
- providers/ldap: use username instead of name for user dn (#883)
|
||||||
- providers/proxy: connect ingress to https instead of http
|
- providers/proxy: connect ingress to https instead of http
|
||||||
- root: only load debug secret key when debug is enabled
|
- root: only load debug secret key when debug is enabled
|
||||||
- web: fix chunks overwriting each other
|
- web: fix chunks overwriting each other
|
||||||
- web/admin: add notice for LDAP Provider's group selection
|
- web/admin: add notice for LDAP Provider's group selection
|
||||||
- web/admin: fix PropertyMappings not loading correctly
|
- web/admin: fix PropertyMappings not loading correctly
|
||||||
- website/docs: add example ldapsearch command
|
- website/docs: add example ldapsearch command
|
||||||
|
|
||||||
## Fixed in 2021.5.3
|
## Fixed in 2021.5.3
|
||||||
|
|
||||||
- outposts: fix update signal not being sent to correct instances
|
- outposts: fix update signal not being sent to correct instances
|
||||||
- providers/oauth2: fix double login required when prompt=login
|
- providers/oauth2: fix double login required when prompt=login
|
||||||
- providers/proxy: fix redirect_uris not always being set on save
|
- providers/proxy: fix redirect_uris not always being set on save
|
||||||
- sources/plex: force setting of plex token
|
- sources/plex: force setting of plex token
|
||||||
- web: fix t.reset is not a function
|
- web: fix t.reset is not a function
|
||||||
- web: remove nginx config, add caching headers to static files
|
- web: remove nginx config, add caching headers to static files
|
||||||
- web/admin: fix flow form not loading data
|
- web/admin: fix flow form not loading data
|
||||||
|
|
||||||
## Fixed in 2021.5.4
|
## Fixed in 2021.5.4
|
||||||
|
|
||||||
- providers/oauth2: add missing kid header to JWT Tokens
|
- providers/oauth2: add missing kid header to JWT Tokens
|
||||||
- stages/authenticator\_\*: fix Permission Error when disabling Authenticator as non-superuser
|
- stages/authenticator\_\*: fix Permission Error when disabling Authenticator as non-superuser
|
||||||
- web: fix missing flow and policy cache clearing UI
|
- web: fix missing flow and policy cache clearing UI
|
||||||
- web: set x-forwarded-proto based on upstream TLS Status
|
- web: set x-forwarded-proto based on upstream TLS Status
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,161 +5,161 @@ slug: "/releases/2021.6"
|
|||||||
|
|
||||||
## Headline Changes
|
## Headline Changes
|
||||||
|
|
||||||
- Duo two-factor support
|
- Duo two-factor support
|
||||||
|
|
||||||
You can now add the new `authenticator_duo` stage to configure Duo authenticators. Duo has also been added as device class to the `authenticator_validation` stage.
|
You can now add the new `authenticator_duo` stage to configure Duo authenticators. Duo has also been added as device class to the `authenticator_validation` stage.
|
||||||
|
|
||||||
Currently, only Duo push notifications are supported. Because no additional input is required, Duo also works with the LDAP Outpost.
|
Currently, only Duo push notifications are supported. Because no additional input is required, Duo also works with the LDAP Outpost.
|
||||||
|
|
||||||
- Multi-tenancy
|
- Multi-tenancy
|
||||||
|
|
||||||
This version adds soft multi-tenancy. This means you can configure different branding settings and different default flows per domain.
|
This version adds soft multi-tenancy. This means you can configure different branding settings and different default flows per domain.
|
||||||
|
|
||||||
This also changes how a default flow is determined. Previously, for defaults flow, authentik would pick the first flow that
|
This also changes how a default flow is determined. Previously, for defaults flow, authentik would pick the first flow that
|
||||||
|
|
||||||
- matches the required designation
|
- matches the required designation
|
||||||
- comes first sorted by slug
|
- comes first sorted by slug
|
||||||
- is allowed by policies
|
- is allowed by policies
|
||||||
|
|
||||||
Now, authentik first checks if the current tenant has a default flow configured for the selected designation. If not, it behaves the same as before, meaning that if you want to select a default flow based on policy, you can just leave the tenant default empty.
|
Now, authentik first checks if the current tenant has a default flow configured for the selected designation. If not, it behaves the same as before, meaning that if you want to select a default flow based on policy, you can just leave the tenant default empty.
|
||||||
|
|
||||||
- Domain-level authorization with proxy providers
|
- Domain-level authorization with proxy providers
|
||||||
|
|
||||||
Instead of simply being able to toggle between forward auth and proxy mode, you can now enable forward auth for an entire domain. This has the downside that you can't do per-application authorization, but also simplifies configuration as you don't have to create each application in authentik.
|
Instead of simply being able to toggle between forward auth and proxy mode, you can now enable forward auth for an entire domain. This has the downside that you can't do per-application authorization, but also simplifies configuration as you don't have to create each application in authentik.
|
||||||
|
|
||||||
- API Schema now uses OpenAPI v3
|
- API Schema now uses OpenAPI v3
|
||||||
|
|
||||||
The API endpoints are mostly the same, however all the clients are now built from an OpenAPI v3 schema. You can retrieve the schema from `authentik.company.tld/api/v2beta/schema/`
|
The API endpoints are mostly the same, however all the clients are now built from an OpenAPI v3 schema. You can retrieve the schema from `authentik.company.tld/api/v2beta/schema/`
|
||||||
|
|
||||||
- On Kubernetes installs without a /media PVC, you can now set URLs instead of uploading files.
|
- On Kubernetes installs without a /media PVC, you can now set URLs instead of uploading files.
|
||||||
- Expanded prometheus metrics for PolicyEngine and FlowPlanner
|
- Expanded prometheus metrics for PolicyEngine and FlowPlanner
|
||||||
|
|
||||||
## Minor changes
|
## Minor changes
|
||||||
|
|
||||||
- You can now specify which sources should be shown on an Identification stage.
|
- You can now specify which sources should be shown on an Identification stage.
|
||||||
- Add UI for the reputation of IPs and usernames for reputation policies.
|
- Add UI for the reputation of IPs and usernames for reputation policies.
|
||||||
- Fix proxy outpost not being able to redeem tokens when using with an un-trusted SSL Certificate
|
- Fix proxy outpost not being able to redeem tokens when using with an un-trusted SSL Certificate
|
||||||
- Add UI to check access of any application for any user
|
- Add UI to check access of any application for any user
|
||||||
|
|
||||||
## Fixed in 2021.6.1-rc5
|
## Fixed in 2021.6.1-rc5
|
||||||
|
|
||||||
- flows: fix configuration URL being set when no flow is configure
|
- flows: fix configuration URL being set when no flow is configure
|
||||||
- stages/authenticator_totp: set TOTP issuer based on slug'd tenant title
|
- stages/authenticator_totp: set TOTP issuer based on slug'd tenant title
|
||||||
- stages/authenticator_webauthn: use tenant title as RP_NAME
|
- stages/authenticator_webauthn: use tenant title as RP_NAME
|
||||||
- stages/identification: add UPN
|
- stages/identification: add UPN
|
||||||
- stages/password: add constants for password backends
|
- stages/password: add constants for password backends
|
||||||
- web: fix flow download link
|
- web: fix flow download link
|
||||||
|
|
||||||
## Fixed in 2021.6.1-rc6
|
## Fixed in 2021.6.1-rc6
|
||||||
|
|
||||||
- ci: build and push stable tag when rc not in release name
|
- ci: build and push stable tag when rc not in release name
|
||||||
- core: delete real session when AuthenticatedSession is deleted
|
- core: delete real session when AuthenticatedSession is deleted
|
||||||
- core: fix impersonation not working with inactive users
|
- core: fix impersonation not working with inactive users
|
||||||
- core: fix upload api not checking clear properly
|
- core: fix upload api not checking clear properly
|
||||||
- core: revert check_access API to get to prevent CSRF errors
|
- core: revert check_access API to get to prevent CSRF errors
|
||||||
- events: add tenant to event
|
- events: add tenant to event
|
||||||
- events: catch unhandled exceptions from request as event, add button to open github issue
|
- events: catch unhandled exceptions from request as event, add button to open github issue
|
||||||
- flows: fix error clearing flow background when no files have been uploaded
|
- flows: fix error clearing flow background when no files have been uploaded
|
||||||
- outpost: fix syntax error when creating an outpost with connection
|
- outpost: fix syntax error when creating an outpost with connection
|
||||||
- outposts: fix integrity error with tokens
|
- outposts: fix integrity error with tokens
|
||||||
- outposts/ldap: improve responses for unsuccessful binds
|
- outposts/ldap: improve responses for unsuccessful binds
|
||||||
- policies/reputation: fix race condition in tests
|
- policies/reputation: fix race condition in tests
|
||||||
- provider/proxy: mark forward_auth flag as deprecated
|
- provider/proxy: mark forward_auth flag as deprecated
|
||||||
- providers/saml: improve error handling for signature errors
|
- providers/saml: improve error handling for signature errors
|
||||||
- root: fix build_hash being set incorrectly for tagged versions
|
- root: fix build_hash being set incorrectly for tagged versions
|
||||||
- sources/saml: check sessions before deleting user
|
- sources/saml: check sessions before deleting user
|
||||||
- stages/authenticator_duo: don't create default duo stage
|
- stages/authenticator_duo: don't create default duo stage
|
||||||
- stages/authenticator_validate: add tests for authenticator validation
|
- stages/authenticator_validate: add tests for authenticator validation
|
||||||
- stages/identification: fix challenges not being annotated correctly and API client not loading data correctly
|
- stages/identification: fix challenges not being annotated correctly and API client not loading data correctly
|
||||||
- web: add capabilities to sentry event
|
- web: add capabilities to sentry event
|
||||||
- web: migrate banner to sidebar
|
- web: migrate banner to sidebar
|
||||||
- web/admin: fix user enable/disable modal not matching other modals
|
- web/admin: fix user enable/disable modal not matching other modals
|
||||||
- web/admin: select service connection by default when only one exists
|
- web/admin: select service connection by default when only one exists
|
||||||
- web/flows: fix expiry not shown on consent stage when loading
|
- web/flows: fix expiry not shown on consent stage when loading
|
||||||
- web/flows: fix IdentificationStage's label not matching fields
|
- web/flows: fix IdentificationStage's label not matching fields
|
||||||
- web/flows: improve display of allowed fields for identification stage
|
- web/flows: improve display of allowed fields for identification stage
|
||||||
- website/docs: add docs for outpost configuration
|
- website/docs: add docs for outpost configuration
|
||||||
|
|
||||||
## Fixed in 2021.6.1
|
## Fixed in 2021.6.1
|
||||||
|
|
||||||
- core: fix error getting stages when enrollment flow isn't set
|
- core: fix error getting stages when enrollment flow isn't set
|
||||||
- core: fix error when creating AuthenticatedSession without key
|
- core: fix error when creating AuthenticatedSession without key
|
||||||
- flows: fix error when stage has incorrect type
|
- flows: fix error when stage has incorrect type
|
||||||
- providers/saml: add support for NameID type unspecified
|
- providers/saml: add support for NameID type unspecified
|
||||||
- providers/saml: fix error when getting transient user identifier
|
- providers/saml: fix error when getting transient user identifier
|
||||||
- providers/saml: fix NameIDPolicy not being parsed correctly
|
- providers/saml: fix NameIDPolicy not being parsed correctly
|
||||||
- recovery: fix error when creating multiple keys for the same user
|
- recovery: fix error when creating multiple keys for the same user
|
||||||
- stages/authenticator_duo: fix error when enrolling an existing user
|
- stages/authenticator_duo: fix error when enrolling an existing user
|
||||||
- stages/authenticator_duo: make Duo-admin viewset writeable
|
- stages/authenticator_duo: make Duo-admin viewset writeable
|
||||||
- website/docs: remove migrate command
|
- website/docs: remove migrate command
|
||||||
|
|
||||||
## Fixed in 2021.6.2
|
## Fixed in 2021.6.2
|
||||||
|
|
||||||
- core: add support for custom urls for avatars
|
- core: add support for custom urls for avatars
|
||||||
- core: deepmerge user.group_attributes, use group_attributes for user settings
|
- core: deepmerge user.group_attributes, use group_attributes for user settings
|
||||||
- core: fix PropertyMapping's globals not matching Expression policy
|
- core: fix PropertyMapping's globals not matching Expression policy
|
||||||
- core: remove default flow background from default css, set static in base_full and dynamically in if/flow
|
- core: remove default flow background from default css, set static in base_full and dynamically in if/flow
|
||||||
- crypto: catch error when loading private key
|
- crypto: catch error when loading private key
|
||||||
- flows: make flow plan cache timeout configurable
|
- flows: make flow plan cache timeout configurable
|
||||||
- outposts: fix port and inner_port being mixed on docker controller
|
- outposts: fix port and inner_port being mixed on docker controller
|
||||||
- outposts/proxy: fix additionalHeaders not being set properly
|
- outposts/proxy: fix additionalHeaders not being set properly
|
||||||
- policies: don't use policy cache when checking application access
|
- policies: don't use policy cache when checking application access
|
||||||
- policies: make policy result cache timeout configurable
|
- policies: make policy result cache timeout configurable
|
||||||
- root: allow loading local /static files without debug flag
|
- root: allow loading local /static files without debug flag
|
||||||
- root: make general cache timeouts configurable
|
- root: make general cache timeouts configurable
|
||||||
- root: remove old traefik labels
|
- root: remove old traefik labels
|
||||||
- root: save temporary database dump in /tmp
|
- root: save temporary database dump in /tmp
|
||||||
- root: set outposts.docker_image_base to gh-master for tests
|
- root: set outposts.docker_image_base to gh-master for tests
|
||||||
- stages/authenticator_validate: fix error when using not_configured_action=configure
|
- stages/authenticator_validate: fix error when using not_configured_action=configure
|
||||||
- tenants: fix tenant not being queried correctly when using accessing over a child domain
|
- tenants: fix tenant not being queried correctly when using accessing over a child domain
|
||||||
- web/admin: fix tenant's default flag not being saved
|
- web/admin: fix tenant's default flag not being saved
|
||||||
- web/admin: handle elements in slot=form not being forms
|
- web/admin: handle elements in slot=form not being forms
|
||||||
- web/admin: sort inputs on authenticator validation stage form
|
- web/admin: sort inputs on authenticator validation stage form
|
||||||
|
|
||||||
## Fixed in 2021.6.3
|
## Fixed in 2021.6.3
|
||||||
|
|
||||||
- api: use partition instead of split for token
|
- api: use partition instead of split for token
|
||||||
- core: fix flow background not correctly loading on initial draw
|
- core: fix flow background not correctly loading on initial draw
|
||||||
- events: add ability to create events via API
|
- events: add ability to create events via API
|
||||||
- events: ignore notification non-existent in transport
|
- events: ignore notification non-existent in transport
|
||||||
- events: only create SYSTEM_EXCEPTION event when error would've been sent to sentry
|
- events: only create SYSTEM_EXCEPTION event when error would've been sent to sentry
|
||||||
- expressions: fix regex_match result being inverted
|
- expressions: fix regex_match result being inverted
|
||||||
- flows: add FlowStageBinding to flow plan instead of just stage
|
- flows: add FlowStageBinding to flow plan instead of just stage
|
||||||
- flows: add invalid_response_action to configure how the FlowExecutor should handle invalid responses
|
- flows: add invalid_response_action to configure how the FlowExecutor should handle invalid responses
|
||||||
- flows: handle possible errors with FlowPlans received from cache
|
- flows: handle possible errors with FlowPlans received from cache
|
||||||
- outposts: check docker container ports match
|
- outposts: check docker container ports match
|
||||||
- outposts/ldap: fixed IsActive and IsSuperuser returning swapped incorrect values (#1078)
|
- outposts/ldap: fixed IsActive and IsSuperuser returning swapped incorrect values (#1078)
|
||||||
- providers/oauth2: fix exp of JWT when not using seconds
|
- providers/oauth2: fix exp of JWT when not using seconds
|
||||||
- sources/ldap: improve error handling when checking for password complexity on non-ad setups
|
- sources/ldap: improve error handling when checking for password complexity on non-ad setups
|
||||||
- stages/authenticator_duo: fix component not being set in API
|
- stages/authenticator_duo: fix component not being set in API
|
||||||
- stages/prompt: ensure hidden and static fields keep the value they had set
|
- stages/prompt: ensure hidden and static fields keep the value they had set
|
||||||
- stages/user_write: add flag to create new users as inactive
|
- stages/user_write: add flag to create new users as inactive
|
||||||
- tenants: include all default flows in current_tenant
|
- tenants: include all default flows in current_tenant
|
||||||
- web/admin: fix deletion of authenticator not reloading the state correctly
|
- web/admin: fix deletion of authenticator not reloading the state correctly
|
||||||
- web/admin: fix only recovery flows being selectable for unenrollment flow in tenant form
|
- web/admin: fix only recovery flows being selectable for unenrollment flow in tenant form
|
||||||
- web/admin: fix text color on pf-c-card
|
- web/admin: fix text color on pf-c-card
|
||||||
|
|
||||||
## Fixed in 2021.6.4
|
## Fixed in 2021.6.4
|
||||||
|
|
||||||
- core: only show `Reset password` link when recovery flow is configured
|
- core: only show `Reset password` link when recovery flow is configured
|
||||||
- crypto: show both sha1 and sha256 fingerprints
|
- crypto: show both sha1 and sha256 fingerprints
|
||||||
- flows: handle old cached flow plans better
|
- flows: handle old cached flow plans better
|
||||||
- g: fix static and media caching not working properly
|
- g: fix static and media caching not working properly
|
||||||
- outposts: fix container not being started after creation
|
- outposts: fix container not being started after creation
|
||||||
- outposts: fix docker controller not checking env correctly
|
- outposts: fix docker controller not checking env correctly
|
||||||
- outposts: fix docker controller not checking ports correctly
|
- outposts: fix docker controller not checking ports correctly
|
||||||
- outposts: fix empty message when docker outpost controller has changed nothing
|
- outposts: fix empty message when docker outpost controller has changed nothing
|
||||||
- outposts: fix permissions not being set correctly upon outpost creation
|
- outposts: fix permissions not being set correctly upon outpost creation
|
||||||
- outposts/ldap: add support for boolean fields in ldap
|
- outposts/ldap: add support for boolean fields in ldap
|
||||||
- outposts/proxy: always redirect to session-end interface on sign_out
|
- outposts/proxy: always redirect to session-end interface on sign_out
|
||||||
- providers/oauth2: add revoked field, create suspicious event when previous token is used
|
- providers/oauth2: add revoked field, create suspicious event when previous token is used
|
||||||
- providers/oauth2: deepmerge claims
|
- providers/oauth2: deepmerge claims
|
||||||
- providers/oauth2: fix CORS headers not being set for unsuccessful requests
|
- providers/oauth2: fix CORS headers not being set for unsuccessful requests
|
||||||
- providers/oauth2: use self.expires for exp field instead of calculating it again
|
- providers/oauth2: use self.expires for exp field instead of calculating it again
|
||||||
- sources/oauth: create configuration error event when profile can't be parsed as json
|
- sources/oauth: create configuration error event when profile can't be parsed as json
|
||||||
- stages/user_write: add wrapper for post to user_write
|
- stages/user_write: add wrapper for post to user_write
|
||||||
- web/admin: fix ModelForm not re-loading after being reset
|
- web/admin: fix ModelForm not re-loading after being reset
|
||||||
- web/admin: show oauth2 token revoked status
|
- web/admin: show oauth2 token revoked status
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,107 +5,107 @@ slug: "/releases/2021.7"
|
|||||||
|
|
||||||
## Headline Changes
|
## Headline Changes
|
||||||
|
|
||||||
- SSL Support for LDAP Providers
|
- SSL Support for LDAP Providers
|
||||||
|
|
||||||
You can now configure certificates for your LDAP Providers, meaning that all communication will be done encrypted.
|
You can now configure certificates for your LDAP Providers, meaning that all communication will be done encrypted.
|
||||||
|
|
||||||
Currently, only SSL on port 636 is supported, not StartTLS.
|
Currently, only SSL on port 636 is supported, not StartTLS.
|
||||||
|
|
||||||
- Add bundled docs
|
- Add bundled docs
|
||||||
|
|
||||||
You can now browse the authentik docs for your version by browsing to `/help`. This means you don't have to rely on an
|
You can now browse the authentik docs for your version by browsing to `/help`. This means you don't have to rely on an
|
||||||
internet connection to check the docs, and you also have the correct docs for your currently running version.
|
internet connection to check the docs, and you also have the correct docs for your currently running version.
|
||||||
|
|
||||||
## Minor changes
|
## Minor changes
|
||||||
|
|
||||||
- api: Tunnel Sentry requests through authentik to prevent them being blocked by ad-blockers
|
- api: Tunnel Sentry requests through authentik to prevent them being blocked by ad-blockers
|
||||||
- core: fix error when setting icon/background to url longer than 100 chars
|
- core: fix error when setting icon/background to url longer than 100 chars
|
||||||
- events: fix error when slack notification request failed without a response
|
- events: fix error when slack notification request failed without a response
|
||||||
- flows: allow variable substitution in flow titles
|
- flows: allow variable substitution in flow titles
|
||||||
- outposts/ldap: Fix LDAP outpost missing a `member` field on groups with all member DNs
|
- outposts/ldap: Fix LDAP outpost missing a `member` field on groups with all member DNs
|
||||||
- outposts/ldap: Fix LDAP outpost not parsing arrays from user and group attributes correctly
|
- outposts/ldap: Fix LDAP outpost not parsing arrays from user and group attributes correctly
|
||||||
- providers/oauth2: allow blank redirect_uris to allow any redirect_uri
|
- providers/oauth2: allow blank redirect_uris to allow any redirect_uri
|
||||||
- providers/saml: fix parsing of POST bindings
|
- providers/saml: fix parsing of POST bindings
|
||||||
- root: add PROXY protocol support for http, https, ldap and ldaps servers
|
- root: add PROXY protocol support for http, https, ldap and ldaps servers
|
||||||
- root: Allow configuration of Redis port
|
- root: Allow configuration of Redis port
|
||||||
- root: set samesite to None for SAML POST flows
|
- root: set samesite to None for SAML POST flows
|
||||||
- root: subclass SessionMiddleware to set Secure and SameSite flag depending on context
|
- root: subclass SessionMiddleware to set Secure and SameSite flag depending on context
|
||||||
- web: fix error when showing error message of request
|
- web: fix error when showing error message of request
|
||||||
|
|
||||||
## Fixed in 2021.7.1-rc2
|
## Fixed in 2021.7.1-rc2
|
||||||
|
|
||||||
- core: add email filter for user
|
- core: add email filter for user
|
||||||
- core: add group filter by member username and pk
|
- core: add group filter by member username and pk
|
||||||
- core: broaden error catching for propertymappings
|
- core: broaden error catching for propertymappings
|
||||||
- lib: fix outpost fake-ip not working, add tests
|
- lib: fix outpost fake-ip not working, add tests
|
||||||
- outpost: fix 100% CPU Usage when not connected to websocket
|
- outpost: fix 100% CPU Usage when not connected to websocket
|
||||||
- outposts: ensure outpost SAs always have permissions to fake IP
|
- outposts: ensure outpost SAs always have permissions to fake IP
|
||||||
- outposts: fix git hash not being set in outposts
|
- outposts: fix git hash not being set in outposts
|
||||||
- outposts: save certificate fingerprint and check before re-fetching to cleanup logs
|
- outposts: save certificate fingerprint and check before re-fetching to cleanup logs
|
||||||
- outposts/ldap: add tracing for LDAP bind and search
|
- outposts/ldap: add tracing for LDAP bind and search
|
||||||
- outposts/ldap: improve parsing of LDAP filters
|
- outposts/ldap: improve parsing of LDAP filters
|
||||||
- outposts/ldap: optimise backend Search API requests
|
- outposts/ldap: optimise backend Search API requests
|
||||||
- outposts/proxy: add X-Auth-Groups header to pass groups
|
- outposts/proxy: add X-Auth-Groups header to pass groups
|
||||||
- providers/oauth2: handler PropertyMapping exceptions and create event
|
- providers/oauth2: handler PropertyMapping exceptions and create event
|
||||||
- providers/saml: improve error handling for property mappings
|
- providers/saml: improve error handling for property mappings
|
||||||
- sources/ldap: improve error handling for property mappings
|
- sources/ldap: improve error handling for property mappings
|
||||||
- web: fix icon flashing in header, fix notification header icon in dark mode
|
- web: fix icon flashing in header, fix notification header icon in dark mode
|
||||||
- web: separate websocket connection from messages
|
- web: separate websocket connection from messages
|
||||||
- web/admin: fix missing dark theme for notifications
|
- web/admin: fix missing dark theme for notifications
|
||||||
- web/admin: fix negative count for policies when more cached than total policies
|
- web/admin: fix negative count for policies when more cached than total policies
|
||||||
- web/admin: improve UI for notification toggle
|
- web/admin: improve UI for notification toggle
|
||||||
- website/docs: clear up outpost uuids
|
- website/docs: clear up outpost uuids
|
||||||
- website/docs: remove duplicate proxy docs
|
- website/docs: remove duplicate proxy docs
|
||||||
|
|
||||||
## Fixed in 2021.7.1
|
## Fixed in 2021.7.1
|
||||||
|
|
||||||
- core: add tests for flow_manager
|
- core: add tests for flow_manager
|
||||||
- core: fix CheckApplication's for_user flag not being checked correctly
|
- core: fix CheckApplication's for_user flag not being checked correctly
|
||||||
- core: fix pagination not working correctly with applications API
|
- core: fix pagination not working correctly with applications API
|
||||||
- providers/oauth2: fix blank redirect_uri not working with TokenView
|
- providers/oauth2: fix blank redirect_uri not working with TokenView
|
||||||
- root: add code of conduct and PR template
|
- root: add code of conduct and PR template
|
||||||
- root: add contributing file
|
- root: add contributing file
|
||||||
- tenants: make event retention configurable on tenant level
|
- tenants: make event retention configurable on tenant level
|
||||||
- tenants: set tenant uuid in sentry
|
- tenants: set tenant uuid in sentry
|
||||||
- web/admin: add notice for event_retention
|
- web/admin: add notice for event_retention
|
||||||
- web/admin: add status card for https and timedrift
|
- web/admin: add status card for https and timedrift
|
||||||
- web/admin: default to authentication flow for LDAP provider
|
- web/admin: default to authentication flow for LDAP provider
|
||||||
- web/admin: fix ApplicationView's CheckAccess not sending UserID correctly
|
- web/admin: fix ApplicationView's CheckAccess not sending UserID correctly
|
||||||
- website/docs: add go requirement
|
- website/docs: add go requirement
|
||||||
- website/docs: update terminology for dark mode
|
- website/docs: update terminology for dark mode
|
||||||
|
|
||||||
## Fixed in 2021.7.2
|
## Fixed in 2021.7.2
|
||||||
|
|
||||||
- ci: fix sentry sourcemap path
|
- ci: fix sentry sourcemap path
|
||||||
- e2e: fix broken selenium by locking images
|
- e2e: fix broken selenium by locking images
|
||||||
- events: ensure fallback result is set for on_failure
|
- events: ensure fallback result is set for on_failure
|
||||||
- events: remove default result for MonitoredTasks, only save when result was set
|
- events: remove default result for MonitoredTasks, only save when result was set
|
||||||
- flows: don't check redirect URL when set from flow plan (set from authentik or policy)
|
- flows: don't check redirect URL when set from flow plan (set from authentik or policy)
|
||||||
- flows: fix unhandled error in stage execution not being logged as SYSTEM_EXCEPTION event
|
- flows: fix unhandled error in stage execution not being logged as SYSTEM_EXCEPTION event
|
||||||
- outpost: bump timer for periodic config reloads
|
- outpost: bump timer for periodic config reloads
|
||||||
- outposts: catch invalid ServiceConnection error in outpost controller
|
- outposts: catch invalid ServiceConnection error in outpost controller
|
||||||
- providers/oauth2: fix error when requesting jwks keys with no rs256 aet
|
- providers/oauth2: fix error when requesting jwks keys with no rs256 aet
|
||||||
- providers/proxy: fix hosts for ingress not being compared correctly
|
- providers/proxy: fix hosts for ingress not being compared correctly
|
||||||
- providers/saml: fix Error when getting metadata for invalid ID
|
- providers/saml: fix Error when getting metadata for invalid ID
|
||||||
- providers/saml: fix metadata being inaccessible without authentication
|
- providers/saml: fix metadata being inaccessible without authentication
|
||||||
- sources/ldap: improve ms-ad password complexity checking
|
- sources/ldap: improve ms-ad password complexity checking
|
||||||
- sources/plex: add background task to monitor validity of plex token
|
- sources/plex: add background task to monitor validity of plex token
|
||||||
- stages/email: fix error when re-requesting email after token has expired
|
- stages/email: fix error when re-requesting email after token has expired
|
||||||
- stages/invitation: delete invite only after full enrollment flow is completed
|
- stages/invitation: delete invite only after full enrollment flow is completed
|
||||||
- web/admin: add re-authenticate button for plex
|
- web/admin: add re-authenticate button for plex
|
||||||
- web/admin: add UI to copy invitation link
|
- web/admin: add UI to copy invitation link
|
||||||
- web/admin: fix empty column when no invitation expiry was set
|
- web/admin: fix empty column when no invitation expiry was set
|
||||||
- web/admin: fix LDAP Provider bind flow list being empty
|
- web/admin: fix LDAP Provider bind flow list being empty
|
||||||
- web/admin: fully remove response cloning due to errors
|
- web/admin: fully remove response cloning due to errors
|
||||||
|
|
||||||
## Fixed in 2021.7.3
|
## Fixed in 2021.7.3
|
||||||
|
|
||||||
- core: fix users not being able to update their profile
|
- core: fix users not being able to update their profile
|
||||||
- lifecycle: decrease default worker count on compose
|
- lifecycle: decrease default worker count on compose
|
||||||
- providers/saml: fix error when WantAssertionsSigned is missing
|
- providers/saml: fix error when WantAssertionsSigned is missing
|
||||||
- providers/saml: fix error when PropertyMapping return value isn't string
|
- providers/saml: fix error when PropertyMapping return value isn't string
|
||||||
- web/admin: fix user's email field being required
|
- web/admin: fix user's email field being required
|
||||||
- web/admin: fix source form's userMatchingMode being swapped
|
- web/admin: fix source form's userMatchingMode being swapped
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,14 +5,14 @@ slug: "/releases/2021.8"
|
|||||||
|
|
||||||
## Headline Changes
|
## Headline Changes
|
||||||
|
|
||||||
- Embedded Outpost
|
- Embedded Outpost
|
||||||
|
|
||||||
To simplify the setup, an embedded outpost has been added. This outpost runs as part of the main authentik server, and requires no additional setup.
|
To simplify the setup, an embedded outpost has been added. This outpost runs as part of the main authentik server, and requires no additional setup.
|
||||||
|
|
||||||
You can simply assign providers to the embedded outpost, and either use the integrations to configure reverse proxies, or point your traffic to the main authentik server.
|
You can simply assign providers to the embedded outpost, and either use the integrations to configure reverse proxies, or point your traffic to the main authentik server.
|
||||||
Traffic is routed based on host-header, meaning every host that has been configured as a provider and is assigned to the embedded proxy will be sent to the outpost, and every sub-path under `/outpost.goauthentik.io` is sent to the outpost too. The rest is sent to authentik itself.
|
Traffic is routed based on host-header, meaning every host that has been configured as a provider and is assigned to the embedded proxy will be sent to the outpost, and every sub-path under `/outpost.goauthentik.io` is sent to the outpost too. The rest is sent to authentik itself.
|
||||||
|
|
||||||
- App passwords
|
- App passwords
|
||||||
|
|
||||||
You can now create Tokens with the intent `app_password`, and use them when authenticating with a flow. This requires the `User database + app passwords` backend in your password stage (this is done automatically on upgrade).
|
You can now create Tokens with the intent `app_password`, and use them when authenticating with a flow. This requires the `User database + app passwords` backend in your password stage (this is done automatically on upgrade).
|
||||||
|
|
||||||
@ -20,122 +20,122 @@ slug: "/releases/2021.8"
|
|||||||
|
|
||||||
## Minor changes
|
## Minor changes
|
||||||
|
|
||||||
- admin: add API to show embedded outpost status, add notice when its not configured properly
|
- admin: add API to show embedded outpost status, add notice when its not configured properly
|
||||||
- api: ensure all resources can be filtered
|
- api: ensure all resources can be filtered
|
||||||
- api: make all PropertyMappings filterable by multiple managed attributes
|
- api: make all PropertyMappings filterable by multiple managed attributes
|
||||||
- core: add API to directly send recovery link to user
|
- core: add API to directly send recovery link to user
|
||||||
- core: add UserSelfSerializer and separate method for users to update themselves with limited fields
|
- core: add UserSelfSerializer and separate method for users to update themselves with limited fields
|
||||||
- core: allow changing of groups a user is in from user api
|
- core: allow changing of groups a user is in from user api
|
||||||
- flows: fix unhandled error in stage execution not being logged as SYSTEM_EXCEPTION event
|
- flows: fix unhandled error in stage execution not being logged as SYSTEM_EXCEPTION event
|
||||||
- lifecycle: decrease default worker count on compose
|
- lifecycle: decrease default worker count on compose
|
||||||
- outpost/ldap: Performance improvements, support for (member=) lookup
|
- outpost/ldap: Performance improvements, support for (member=) lookup
|
||||||
- providers/proxy: don't create ingress when no hosts are defined
|
- providers/proxy: don't create ingress when no hosts are defined
|
||||||
- sources/plex: add API to get user connections
|
- sources/plex: add API to get user connections
|
||||||
- web: add API Drawer
|
- web: add API Drawer
|
||||||
- web/admin: add UI to copy invitation link
|
- web/admin: add UI to copy invitation link
|
||||||
- web/admin: allow modification of users groups from user view
|
- web/admin: allow modification of users groups from user view
|
||||||
- web/admin: re-name service connection to integration
|
- web/admin: re-name service connection to integration
|
||||||
|
|
||||||
## Fixed in 2021.8.1-rc2
|
## Fixed in 2021.8.1-rc2
|
||||||
|
|
||||||
- ci: add pipeline to build and push js api package
|
- ci: add pipeline to build and push js api package
|
||||||
- ci: upgrade web api client when schema changes
|
- ci: upgrade web api client when schema changes
|
||||||
- core: add new token intent and auth backend (#1284)
|
- core: add new token intent and auth backend (#1284)
|
||||||
- core: add token tests for invalid intent and token auth
|
- core: add token tests for invalid intent and token auth
|
||||||
- core: fix token intent not defaulting correctly
|
- core: fix token intent not defaulting correctly
|
||||||
- core: handle error when ?for_user is not numerical
|
- core: handle error when ?for_user is not numerical
|
||||||
- lib: move id and key generators to lib (#1286)
|
- lib: move id and key generators to lib (#1286)
|
||||||
- lifecycle: rename to ak
|
- lifecycle: rename to ak
|
||||||
- outpost: handle non-existent permission
|
- outpost: handle non-existent permission
|
||||||
- outpost: add recursion limit for docker controller
|
- outpost: add recursion limit for docker controller
|
||||||
- outpost: add repair_permissions command
|
- outpost: add repair_permissions command
|
||||||
- root: add alias for akflow files
|
- root: add alias for akflow files
|
||||||
- root: add ASGI Error handler
|
- root: add ASGI Error handler
|
||||||
- root: add License to NPM package
|
- root: add License to NPM package
|
||||||
- root: fix error_handler for websocket
|
- root: fix error_handler for websocket
|
||||||
- root: fix mis-matched postgres version for CI
|
- root: fix mis-matched postgres version for CI
|
||||||
- root: remove remainders from gen
|
- root: remove remainders from gen
|
||||||
- root: remove usage of make-gen
|
- root: remove usage of make-gen
|
||||||
- root: test schema auto-update
|
- root: test schema auto-update
|
||||||
- root: update schema
|
- root: update schema
|
||||||
- stages/password: auto-enable app password backend
|
- stages/password: auto-enable app password backend
|
||||||
- stages/user_write: fix wrong fallback authentication backend
|
- stages/user_write: fix wrong fallback authentication backend
|
||||||
- web: add custom readme to api client
|
- web: add custom readme to api client
|
||||||
- web: add ESM to generated Client
|
- web: add ESM to generated Client
|
||||||
- web: build. api in different folder
|
- web: build. api in different folder
|
||||||
- web: improve api client versioning
|
- web: improve api client versioning
|
||||||
- web: Merge pull request #1258 from goauthentik/publish-api-to-npm
|
- web: Merge pull request #1258 from goauthentik/publish-api-to-npm
|
||||||
- web: migrate to @goauthentik/api
|
- web: migrate to @goauthentik/api
|
||||||
- web: Update Web API Client version (#1283)
|
- web: Update Web API Client version (#1283)
|
||||||
- web/admin: allow users to create app password tokens
|
- web/admin: allow users to create app password tokens
|
||||||
- web/admin: display token's intents
|
- web/admin: display token's intents
|
||||||
- web/admin: fix missing app passwords backend
|
- web/admin: fix missing app passwords backend
|
||||||
- web/admin: improve delete modal for stage bindings and policy bindings
|
- web/admin: improve delete modal for stage bindings and policy bindings
|
||||||
- web/admin: select all password stage backends by default
|
- web/admin: select all password stage backends by default
|
||||||
- website: add docs for making schema changes
|
- website: add docs for making schema changes
|
||||||
- website: make default login-2fa flow ignore 2fa with app passwords
|
- website: make default login-2fa flow ignore 2fa with app passwords
|
||||||
- website/docs: add docs for `auth_method` and `auth_method_args` fields
|
- website/docs: add docs for `auth_method` and `auth_method_args` fields
|
||||||
|
|
||||||
## Fixed in 2021.8.1
|
## Fixed in 2021.8.1
|
||||||
|
|
||||||
- \*: cleanup api schema warnings
|
- \*: cleanup api schema warnings
|
||||||
- core: fix error for asgi error handler with websockets
|
- core: fix error for asgi error handler with websockets
|
||||||
- core: fix error when user updates themselves
|
- core: fix error when user updates themselves
|
||||||
- core: fix user object for token not be set-able
|
- core: fix user object for token not be set-able
|
||||||
- root: Fix table of contents for CONTRIBUTING.md (#1302)
|
- root: Fix table of contents for CONTRIBUTING.md (#1302)
|
||||||
- root: Require PG_PASS to be set (#1303)
|
- root: Require PG_PASS to be set (#1303)
|
||||||
- web/admin: allow admins to create tokens
|
- web/admin: allow admins to create tokens
|
||||||
|
|
||||||
## Fixed in 2021.8.2
|
## Fixed in 2021.8.2
|
||||||
|
|
||||||
- root: fix login loop created by old settings stored in cache
|
- root: fix login loop created by old settings stored in cache
|
||||||
|
|
||||||
## Fixed in 2021.8.3
|
## Fixed in 2021.8.3
|
||||||
|
|
||||||
- outpost: fix FlowExecutor not sending password for identification stage
|
- outpost: fix FlowExecutor not sending password for identification stage
|
||||||
- outpost: fix generated traefik labels containing invalid hosts
|
- outpost: fix generated traefik labels containing invalid hosts
|
||||||
- outpost: make docker network configurable when using docker integration
|
- outpost: make docker network configurable when using docker integration
|
||||||
- web/flow: fix redirects to application being sent multiple times, causing issues with OAuth providers
|
- web/flow: fix redirects to application being sent multiple times, causing issues with OAuth providers
|
||||||
- web/flow: fix rendering of checkboxes in prompt stages
|
- web/flow: fix rendering of checkboxes in prompt stages
|
||||||
|
|
||||||
## Fixed in 2021.8.4
|
## Fixed in 2021.8.4
|
||||||
|
|
||||||
- api: add /api/v3 path
|
- api: add /api/v3 path
|
||||||
- api: add basic rate limiting for sentry proxy endpoint
|
- api: add basic rate limiting for sentry proxy endpoint
|
||||||
- core: fix user_obj being empty on token API
|
- core: fix user_obj being empty on token API
|
||||||
- events: improve logging for task exceptions
|
- events: improve logging for task exceptions
|
||||||
- outpost/embedded: only send requests for non-akprox paths when we're doing proxy mode
|
- outpost/embedded: only send requests for non-akprox paths when we're doing proxy mode
|
||||||
- outpost/ldap: delay user information removal upon closing of connection
|
- outpost/ldap: delay user information removal upon closing of connection
|
||||||
- policies/password: fix PasswordStage not being usable with prompt stages
|
- policies/password: fix PasswordStage not being usable with prompt stages
|
||||||
- providers/proxy: fix traefik middleware being generated with wrong ports for embedded outposts
|
- providers/proxy: fix traefik middleware being generated with wrong ports for embedded outposts
|
||||||
- providers/proxy: improve error handling for non-tls ingresses
|
- providers/proxy: improve error handling for non-tls ingresses
|
||||||
- stages/authenticator_validate: show single button for multiple webauthn authenticators
|
- stages/authenticator_validate: show single button for multiple webauthn authenticators
|
||||||
- stages/invitation: fix invitation not inheriting ExpiringModel
|
- stages/invitation: fix invitation not inheriting ExpiringModel
|
||||||
- web/admin: fallback for invitation list on first load
|
- web/admin: fallback for invitation list on first load
|
||||||
- web/admin: fix flow executor not opening in new tab
|
- web/admin: fix flow executor not opening in new tab
|
||||||
- web/admin: fix list of webauthn devices not updating after rename
|
- web/admin: fix list of webauthn devices not updating after rename
|
||||||
- web/flows: fix FlowExecutor not updating when challenge changes from outside
|
- web/flows: fix FlowExecutor not updating when challenge changes from outside
|
||||||
|
|
||||||
## Fixed in 2021.8.5
|
## Fixed in 2021.8.5
|
||||||
|
|
||||||
- api: add additional filters for ldap and proxy providers
|
- api: add additional filters for ldap and proxy providers
|
||||||
- api: cache schema, fix server urls
|
- api: cache schema, fix server urls
|
||||||
- core: minor query optimization
|
- core: minor query optimization
|
||||||
- events: add mark_all_seen
|
- events: add mark_all_seen
|
||||||
- events: remove authentik_events gauge
|
- events: remove authentik_events gauge
|
||||||
- internal: disable directory listing on static files
|
- internal: disable directory listing on static files
|
||||||
- internal: fix font loading errors on safari
|
- internal: fix font loading errors on safari
|
||||||
- internal: fix web requests not having a logger set
|
- internal: fix web requests not having a logger set
|
||||||
- outpost: fix spans being sent without parent context
|
- outpost: fix spans being sent without parent context
|
||||||
- outposts: add expected outpost replica count to metrics
|
- outposts: add expected outpost replica count to metrics
|
||||||
- outposts/ldap: improve logging of client IPs
|
- outposts/ldap: improve logging of client IPs
|
||||||
- policies/password: fix symbols not being checked correctly
|
- policies/password: fix symbols not being checked correctly
|
||||||
- root: fix is_secure with safari on debug environments
|
- root: fix is_secure with safari on debug environments
|
||||||
- root: include authentik version in backup naming
|
- root: include authentik version in backup naming
|
||||||
- stages/identification: fix empty user_fields query returning first user
|
- stages/identification: fix empty user_fields query returning first user
|
||||||
- web/admin: fix user selection in token form
|
- web/admin: fix user selection in token form
|
||||||
- web/admin: show applications instead of providers in outpost form
|
- web/admin: show applications instead of providers in outpost form
|
||||||
- web/flows: fix display error when using IdentificationStage without input fields
|
- web/flows: fix display error when using IdentificationStage without input fields
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ slug: "/releases/2021.9"
|
|||||||
|
|
||||||
## Headline Changes
|
## Headline Changes
|
||||||
|
|
||||||
- Split user interface
|
- Split user interface
|
||||||
|
|
||||||
This release splits the administration interface from the end-user interface. This makes things clearer for end-users, as all their options are laid out more clearly.
|
This release splits the administration interface from the end-user interface. This makes things clearer for end-users, as all their options are laid out more clearly.
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ slug: "/releases/2021.9"
|
|||||||
|
|
||||||
The admin interface remains the same, and familiar buttons will redirect you between interfaces.
|
The admin interface remains the same, and familiar buttons will redirect you between interfaces.
|
||||||
|
|
||||||
- New proxy
|
- New proxy
|
||||||
|
|
||||||
The proxy outpost has been rewritten from scratch. This replaces the old proxy, which was based on oauth2_proxy. The new proxy allows us a much greater degree of flexibility, is much lighter and reports errors better.
|
The proxy outpost has been rewritten from scratch. This replaces the old proxy, which was based on oauth2_proxy. The new proxy allows us a much greater degree of flexibility, is much lighter and reports errors better.
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ slug: "/releases/2021.9"
|
|||||||
|
|
||||||
If you're using a manually deployed outpost, keep in mind that the ports change to 9000 and 9443 instead of 4180 and 4443
|
If you're using a manually deployed outpost, keep in mind that the ports change to 9000 and 9443 instead of 4180 and 4443
|
||||||
|
|
||||||
- New metrics
|
- New metrics
|
||||||
|
|
||||||
This version introduces new and simplified Prometheus metrics. There is a new common monitoring port across the server and all outposts, 9300. This port requires no authentication, making it easier to configure.
|
This version introduces new and simplified Prometheus metrics. There is a new common monitoring port across the server and all outposts, 9300. This port requires no authentication, making it easier to configure.
|
||||||
|
|
||||||
@ -31,166 +31,166 @@ slug: "/releases/2021.9"
|
|||||||
|
|
||||||
## Minor changes
|
## Minor changes
|
||||||
|
|
||||||
- \*: use common user agent for all outgoing requests
|
- \*: use common user agent for all outgoing requests
|
||||||
- admin: migrate to new update check, add option to disable update check
|
- admin: migrate to new update check, add option to disable update check
|
||||||
- api: add additional filters for ldap and proxy providers
|
- api: add additional filters for ldap and proxy providers
|
||||||
- core: optimise groups api by removing member superuser status
|
- core: optimise groups api by removing member superuser status
|
||||||
- core: remove ?v from static files
|
- core: remove ?v from static files
|
||||||
- events: add mark_all_seen
|
- events: add mark_all_seen
|
||||||
- events: allow setting a mapping for webhook transport to customise request payloads
|
- events: allow setting a mapping for webhook transport to customise request payloads
|
||||||
- internal: fix font loading errors on safari
|
- internal: fix font loading errors on safari
|
||||||
- lifecycle: fix worker startup error when docker socket's group is not called docker
|
- lifecycle: fix worker startup error when docker socket's group is not called docker
|
||||||
- outpost: fix spans being sent without parent context
|
- outpost: fix spans being sent without parent context
|
||||||
- outpost: update global outpost config on refresh
|
- outpost: update global outpost config on refresh
|
||||||
- outposts: add expected outpost replica count to metrics
|
- outposts: add expected outpost replica count to metrics
|
||||||
- outposts/controllers: re-create service when mismatched ports to prevent errors
|
- outposts/controllers: re-create service when mismatched ports to prevent errors
|
||||||
- outposts/controllers/kubernetes: don't create service monitor for embedded outpost
|
- outposts/controllers/kubernetes: don't create service monitor for embedded outpost
|
||||||
- outposts/ldap: improve logging of client IPs
|
- outposts/ldap: improve logging of client IPs
|
||||||
- policies/password: fix symbols not being checked correctly
|
- policies/password: fix symbols not being checked correctly
|
||||||
- root: include authentik version in backup naming
|
- root: include authentik version in backup naming
|
||||||
- root: show location header in logs when redirecting
|
- root: show location header in logs when redirecting
|
||||||
- sources/oauth: prevent potentially confidential data from being logged
|
- sources/oauth: prevent potentially confidential data from being logged
|
||||||
- stages/authenticator_duo: add API to "import" devices from duo
|
- stages/authenticator_duo: add API to "import" devices from duo
|
||||||
- stages/identification: fix empty user_fields query returning first user
|
- stages/identification: fix empty user_fields query returning first user
|
||||||
- tenants: optimise db queries in middleware
|
- tenants: optimise db queries in middleware
|
||||||
- web: allow duplicate messages
|
- web: allow duplicate messages
|
||||||
- web: ignore network error
|
- web: ignore network error
|
||||||
- web/admin: fix notification clear all not triggering render
|
- web/admin: fix notification clear all not triggering render
|
||||||
- web/admin: fix user selection in token form
|
- web/admin: fix user selection in token form
|
||||||
- web/admin: increase default expiry for refresh tokens
|
- web/admin: increase default expiry for refresh tokens
|
||||||
- web/admin: show applications instead of providers in outpost form
|
- web/admin: show applications instead of providers in outpost form
|
||||||
- web/flows: fix display error when using IdentificationStage without input fields
|
- web/flows: fix display error when using IdentificationStage without input fields
|
||||||
|
|
||||||
## Fixed in 2021.9.1-rc2
|
## Fixed in 2021.9.1-rc2
|
||||||
|
|
||||||
- core: fix token expiry for service accounts being only 30 minutes
|
- core: fix token expiry for service accounts being only 30 minutes
|
||||||
- outposts: add consistent name and type to metrics
|
- outposts: add consistent name and type to metrics
|
||||||
- outposts/proxy: remove deprecated rs256
|
- outposts/proxy: remove deprecated rs256
|
||||||
- policies: improve error handling when using bindings without policy
|
- policies: improve error handling when using bindings without policy
|
||||||
- providers/saml: improved error handling
|
- providers/saml: improved error handling
|
||||||
- stages/email: don't crash when testing stage does not exist
|
- stages/email: don't crash when testing stage does not exist
|
||||||
- web: update background image
|
- web: update background image
|
||||||
|
|
||||||
## Fixed in 2021.9.1-rc3
|
## Fixed in 2021.9.1-rc3
|
||||||
|
|
||||||
- core: allow admins to create tokens with all parameters, re-add user to token form
|
- core: allow admins to create tokens with all parameters, re-add user to token form
|
||||||
- core: fix tokens not being viewable but superusers
|
- core: fix tokens not being viewable but superusers
|
||||||
- root: log failed celery tasks to event log
|
- root: log failed celery tasks to event log
|
||||||
- sources/ldap: bump timeout, run each sync component in its own task
|
- sources/ldap: bump timeout, run each sync component in its own task
|
||||||
- sources/ldap: improve messages of sync tasks in UI
|
- sources/ldap: improve messages of sync tasks in UI
|
||||||
- sources/ldap: prevent error when retrying old system task with no arguments
|
- sources/ldap: prevent error when retrying old system task with no arguments
|
||||||
- web: fix datetime-local fields throwing errors on firefox
|
- web: fix datetime-local fields throwing errors on firefox
|
||||||
- web: fix text colour in delete form in dark mode
|
- web: fix text colour in delete form in dark mode
|
||||||
- web: improve display of action buttons with non-primary classes
|
- web: improve display of action buttons with non-primary classes
|
||||||
- web/admin: fix error in firefox when creating token
|
- web/admin: fix error in firefox when creating token
|
||||||
- web/admin: fix ldap sync status for new API
|
- web/admin: fix ldap sync status for new API
|
||||||
- web/admin: fix settings link on user avatar
|
- web/admin: fix settings link on user avatar
|
||||||
- web/admin: trigger refresh after syncing ldap
|
- web/admin: trigger refresh after syncing ldap
|
||||||
- web/user: add auto-focus search for applications
|
- web/user: add auto-focus search for applications
|
||||||
- web/user: add missing stop impersonation button
|
- web/user: add missing stop impersonation button
|
||||||
- web/user: fix edit button for applications
|
- web/user: fix edit button for applications
|
||||||
- web/user: fix final redirect after stage setup
|
- web/user: fix final redirect after stage setup
|
||||||
- web/user: optimise load, fix unread status for notifications
|
- web/user: optimise load, fix unread status for notifications
|
||||||
|
|
||||||
## Fixed in 2021.9.1
|
## Fixed in 2021.9.1
|
||||||
|
|
||||||
- api: disable include_format_suffixes
|
- api: disable include_format_suffixes
|
||||||
- core: fix token identifier not being slugified when created with user-controller input
|
- core: fix token identifier not being slugified when created with user-controller input
|
||||||
- outposts: don't map port 9300 on docker, only expose port
|
- outposts: don't map port 9300 on docker, only expose port
|
||||||
- outposts: don't restart container when health checks are starting
|
- outposts: don't restart container when health checks are starting
|
||||||
- outposts/ldap: allow custom attributes to shadow built-in attributes
|
- outposts/ldap: allow custom attributes to shadow built-in attributes
|
||||||
- policies/expression: add ak_user_has_authenticator
|
- policies/expression: add ak_user_has_authenticator
|
||||||
- root: use tagged go client version
|
- root: use tagged go client version
|
||||||
- stages/email: don't throw 404 when token can't be found
|
- stages/email: don't throw 404 when token can't be found
|
||||||
- stages/email: slugify token identifier
|
- stages/email: slugify token identifier
|
||||||
- stages/email: use different query arguments for email and invitation tokens
|
- stages/email: use different query arguments for email and invitation tokens
|
||||||
- web: fix notification badge not refreshing after clearing notifications
|
- web: fix notification badge not refreshing after clearing notifications
|
||||||
|
|
||||||
## Fixed in 2021.9.2
|
## Fixed in 2021.9.2
|
||||||
|
|
||||||
- api: add logging to sentry proxy
|
- api: add logging to sentry proxy
|
||||||
- internal: add asset paths for user interface
|
- internal: add asset paths for user interface
|
||||||
- web: fix import order of polyfills causing shadydom to not work on firefox and safari
|
- web: fix import order of polyfills causing shadydom to not work on firefox and safari
|
||||||
- web/user: enable sentry
|
- web/user: enable sentry
|
||||||
|
|
||||||
## Fixed in 2021.9.3
|
## Fixed in 2021.9.3
|
||||||
|
|
||||||
- core: fix api return code for user self-update
|
- core: fix api return code for user self-update
|
||||||
- events: add additional validation for event transport
|
- events: add additional validation for event transport
|
||||||
- outposts: ensure service is always re-created with mismatching ports
|
- outposts: ensure service is always re-created with mismatching ports
|
||||||
- outposts: fix outposts not correctly updating central state
|
- outposts: fix outposts not correctly updating central state
|
||||||
- outposts: make AUTHENTIK_HOST_BROWSER configurable from central config
|
- outposts: make AUTHENTIK_HOST_BROWSER configurable from central config
|
||||||
- outposts/proxy: ensure cookies only last as long as tokens
|
- outposts/proxy: ensure cookies only last as long as tokens
|
||||||
- outposts/proxy: Fix failing traefik healthcheck (#1470)
|
- outposts/proxy: Fix failing traefik healthcheck (#1470)
|
||||||
- outposts/proxyv2: fix routing not working correctly for domain auth
|
- outposts/proxyv2: fix routing not working correctly for domain auth
|
||||||
- providers/proxy: add token_validity field for outpost configuration
|
- providers/proxy: add token_validity field for outpost configuration
|
||||||
- web/admin: add notice for recovery
|
- web/admin: add notice for recovery
|
||||||
- web/admin: fix NotificationWebhookMapping not loading correctly
|
- web/admin: fix NotificationWebhookMapping not loading correctly
|
||||||
- web/admin: fix Transport Form not loading mode correctly on edit
|
- web/admin: fix Transport Form not loading mode correctly on edit
|
||||||
- web/admin: handle error correctly when creating user recovery link
|
- web/admin: handle error correctly when creating user recovery link
|
||||||
- web/elements: fix token copy error in safari
|
- web/elements: fix token copy error in safari
|
||||||
- web/elements: improve error handling on forms
|
- web/elements: improve error handling on forms
|
||||||
- web/user: fix brand not being shown in safari
|
- web/user: fix brand not being shown in safari
|
||||||
- web/user: search apps when user typed before apps have loaded
|
- web/user: search apps when user typed before apps have loaded
|
||||||
- website/docs: fix typos and grammar (#1459)
|
- website/docs: fix typos and grammar (#1459)
|
||||||
|
|
||||||
## Fixed in 2021.9.4
|
## Fixed in 2021.9.4
|
||||||
|
|
||||||
- outposts: allow disabling of docker controller port mapping
|
- outposts: allow disabling of docker controller port mapping
|
||||||
- outposts/proxy: fix duplicate protocol in domain auth mode
|
- outposts/proxy: fix duplicate protocol in domain auth mode
|
||||||
- root: Use fully qualified names for docker bases base images. (#1490)
|
- root: Use fully qualified names for docker bases base images. (#1490)
|
||||||
- sources/ldap: add support for Active Directory `userAccountControl` attribute
|
- sources/ldap: add support for Active Directory `userAccountControl` attribute
|
||||||
- sources/ldap: don't sync ldap source when no property mappings are set
|
- sources/ldap: don't sync ldap source when no property mappings are set
|
||||||
- web/admin: don't require username nor name for activate/deactivate toggles
|
- web/admin: don't require username nor name for activate/deactivate toggles
|
||||||
- web/admin: fix LDAP Source form not exposing syncParentGroup
|
- web/admin: fix LDAP Source form not exposing syncParentGroup
|
||||||
- web/elements: fix initialLoad not being done when viewportCheck was disabled
|
- web/elements: fix initialLoad not being done when viewportCheck was disabled
|
||||||
- web/elements: use dedicated button for search clear instead of webkit exclusive one
|
- web/elements: use dedicated button for search clear instead of webkit exclusive one
|
||||||
|
|
||||||
## Fixed in 2021.9.5
|
## Fixed in 2021.9.5
|
||||||
|
|
||||||
- events: add missing migration
|
- events: add missing migration
|
||||||
- lifecycle: switch to h11 uvicorn worker for now
|
- lifecycle: switch to h11 uvicorn worker for now
|
||||||
- outpost/proxy: fix missing negation for internal host ssl verification
|
- outpost/proxy: fix missing negation for internal host ssl verification
|
||||||
- outposts: check ports of deployment in kubernetes outpost controller
|
- outposts: check ports of deployment in kubernetes outpost controller
|
||||||
- outposts: don't always build permissions on outpost.user access, only in signals and tasks
|
- outposts: don't always build permissions on outpost.user access, only in signals and tasks
|
||||||
- outposts: fix circular import in kubernetes controller
|
- outposts: fix circular import in kubernetes controller
|
||||||
- outposts/proxy: add new headers with unified naming
|
- outposts/proxy: add new headers with unified naming
|
||||||
- outposts/proxy: show full error message when user is authenticated
|
- outposts/proxy: show full error message when user is authenticated
|
||||||
- providers/ldap: use RDN when using posixGroup's memberUid attribute (#1514)
|
- providers/ldap: use RDN when using posixGroup's memberUid attribute (#1514)
|
||||||
- providers/proxy: always check ingress secret in kubernetes controller
|
- providers/proxy: always check ingress secret in kubernetes controller
|
||||||
- sources/ldap: fix logic error in Active Directory account disabled status
|
- sources/ldap: fix logic error in Active Directory account disabled status
|
||||||
- stages/email: add activate_user_on_success flag, add for all example flows
|
- stages/email: add activate_user_on_success flag, add for all example flows
|
||||||
- stages/user_login: add check for user.is_active and tests
|
- stages/user_login: add check for user.is_active and tests
|
||||||
- tests/integration: fix tests failing due to incorrect comparison
|
- tests/integration: fix tests failing due to incorrect comparison
|
||||||
- web/admin: fix search group label
|
- web/admin: fix search group label
|
||||||
|
|
||||||
## Fixed in 2021.9.6
|
## Fixed in 2021.9.6
|
||||||
|
|
||||||
- admin: clear update notification when notification's version matches current version
|
- admin: clear update notification when notification's version matches current version
|
||||||
- api: ensure viewsets have default ordering
|
- api: ensure viewsets have default ordering
|
||||||
- core: include group uuids in self serializer
|
- core: include group uuids in self serializer
|
||||||
- core: make user's name field fully options
|
- core: make user's name field fully options
|
||||||
- core: only return group names for user_self
|
- core: only return group names for user_self
|
||||||
- internal: add internal healthchecking to prevent websocket errors
|
- internal: add internal healthchecking to prevent websocket errors
|
||||||
- outposts: fix error when comparing ports in docker controller when port mapping is disabled
|
- outposts: fix error when comparing ports in docker controller when port mapping is disabled
|
||||||
- root: add docker-native healthcheck for web and celery
|
- root: add docker-native healthcheck for web and celery
|
||||||
- root: remove redundant internal network from compose
|
- root: remove redundant internal network from compose
|
||||||
- web: add locale detection
|
- web: add locale detection
|
||||||
- web: fix rendering of token copy button in dark mode
|
- web: fix rendering of token copy button in dark mode
|
||||||
- web: fix strings not being translated at all when matching browser locale not found
|
- web: fix strings not being translated at all when matching browser locale not found
|
||||||
- web/admin: only show outpost deployment info when not embedded
|
- web/admin: only show outpost deployment info when not embedded
|
||||||
- web/elements: fix model form always loading when viewport check is disabled
|
- web/elements: fix model form always loading when viewport check is disabled
|
||||||
- web/flows: adjust message for email stage
|
- web/flows: adjust message for email stage
|
||||||
- web/user: don't show managed tokens in user interface
|
- web/user: don't show managed tokens in user interface
|
||||||
|
|
||||||
## Fixed in 2021.9.7
|
## Fixed in 2021.9.7
|
||||||
|
|
||||||
- root: fix syntax error in dockerfile healthcheck
|
- root: fix syntax error in dockerfile healthcheck
|
||||||
- web/admin: fix description for flow import
|
- web/admin: fix description for flow import
|
||||||
|
|
||||||
## Fixed in 2021.9.8
|
## Fixed in 2021.9.8
|
||||||
|
|
||||||
- web: fix interface crashing in non-blink browsers
|
- web: fix interface crashing in non-blink browsers
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -7,126 +7,126 @@ slug: "/releases/2022.1"
|
|||||||
|
|
||||||
This release mostly removes legacy fields and features that have been deprecated for several releases.
|
This release mostly removes legacy fields and features that have been deprecated for several releases.
|
||||||
|
|
||||||
- LDAP Outposts:
|
- LDAP Outposts:
|
||||||
|
|
||||||
This release removes the `accountStatus` and `superuser` fields. Use the direct replacements `goauthentik.io/ldap/active` and `goauthentik.io/ldap/superuser`.
|
This release removes the `accountStatus` and `superuser` fields. Use the direct replacements `goauthentik.io/ldap/active` and `goauthentik.io/ldap/superuser`.
|
||||||
|
|
||||||
- Proxy Outposts:
|
- Proxy Outposts:
|
||||||
|
|
||||||
This release consolidates headers sent by authentik to have a common prefix.
|
This release consolidates headers sent by authentik to have a common prefix.
|
||||||
|
|
||||||
The following headers have been removed:
|
The following headers have been removed:
|
||||||
|
|
||||||
- X-Auth-Username, use `X-authentik-username`
|
- X-Auth-Username, use `X-authentik-username`
|
||||||
- X-Auth-Groups, use `X-authentik-groups`
|
- X-Auth-Groups, use `X-authentik-groups`
|
||||||
- X-Forwarded-Email, use `X-authentik-email`
|
- X-Forwarded-Email, use `X-authentik-email`
|
||||||
- X-Forwarded-Preferred-Username, use `X-authentik-username`
|
- X-Forwarded-Preferred-Username, use `X-authentik-username`
|
||||||
- X-Forwarded-User, use `X-authentik-uid`
|
- X-Forwarded-User, use `X-authentik-uid`
|
||||||
|
|
||||||
The proxy now also sets the host header based on what is configured as upstream in the proxy provider. The original Host is forwarded as `X-Forwarded-Host`.
|
The proxy now also sets the host header based on what is configured as upstream in the proxy provider. The original Host is forwarded as `X-Forwarded-Host`.
|
||||||
|
|
||||||
Additionally, the header requirements for nginx have changed. Either a `X-Original-URL` or `X-Original-URI` header are now required. See the [_Proxy provider_](../../add-secure-apps/providers/proxy/forward_auth.mdx) documentation for updated snippets.
|
Additionally, the header requirements for nginx have changed. Either a `X-Original-URL` or `X-Original-URI` header are now required. See the [_Proxy provider_](../../add-secure-apps/providers/proxy/forward_auth.mdx) documentation for updated snippets.
|
||||||
|
|
||||||
- API:
|
- API:
|
||||||
|
|
||||||
The deprecated /api/v2beta/ Endpoint is removed. Use `/api/v3/`.
|
The deprecated /api/v2beta/ Endpoint is removed. Use `/api/v3/`.
|
||||||
|
|
||||||
- Backup:
|
- Backup:
|
||||||
|
|
||||||
The integrated backup has been deprecated for the following reasons:
|
The integrated backup has been deprecated for the following reasons:
|
||||||
|
|
||||||
- Difficulty with restores not working properly
|
- Difficulty with restores not working properly
|
||||||
- Inflexible configuration (fixed retention, limited to once a day, only S3 supported)
|
- Inflexible configuration (fixed retention, limited to once a day, only S3 supported)
|
||||||
- Most users will already have an existing backup infrastructure
|
- Most users will already have an existing backup infrastructure
|
||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- core: dont return 404 when trying to view key of expired token
|
- core: dont return 404 when trying to view key of expired token
|
||||||
- crypto: fully parse certificate on validation in serializer to prevent invalid certificates from being saved
|
- crypto: fully parse certificate on validation in serializer to prevent invalid certificates from being saved
|
||||||
- flows: handle error if flow title contains invalid format string
|
- flows: handle error if flow title contains invalid format string
|
||||||
- internal: route traffic to proxy providers based on cookie domain when multiple domain-level providers exist
|
- internal: route traffic to proxy providers based on cookie domain when multiple domain-level providers exist
|
||||||
- internal: use math.MaxInt for compatibility
|
- internal: use math.MaxInt for compatibility
|
||||||
- lifecycle: add early check for missing/invalid secret key
|
- lifecycle: add early check for missing/invalid secret key
|
||||||
- outposts/proxyv2: allow access to /outpost.goauthentik.io urls in forward auth mode to make routing in nginx/traefik easier
|
- outposts/proxyv2: allow access to /outpost.goauthentik.io urls in forward auth mode to make routing in nginx/traefik easier
|
||||||
- outposts/proxyv2: fix before-redirect url not being saved in proxy mode
|
- outposts/proxyv2: fix before-redirect url not being saved in proxy mode
|
||||||
- outposts/proxyv2: fix JWKS url pointing to localhost on embedded outpost
|
- outposts/proxyv2: fix JWKS url pointing to localhost on embedded outpost
|
||||||
- providers/oauth2: change default redirect uri behaviour; set first used url when blank and use star for wildcard
|
- providers/oauth2: change default redirect uri behaviour; set first used url when blank and use star for wildcard
|
||||||
- root: allow customisation of ports in compose without override
|
- root: allow customisation of ports in compose without override
|
||||||
- root: decrease to 10 backup history
|
- root: decrease to 10 backup history
|
||||||
- root: fix backups running every minute instead of once
|
- root: fix backups running every minute instead of once
|
||||||
- stages/authenticator_webauthn: make more WebAuthn options configurable
|
- stages/authenticator_webauthn: make more WebAuthn options configurable
|
||||||
- web: add polyfill for Intl.ListFormat
|
- web: add polyfill for Intl.ListFormat
|
||||||
- web: directly read csrf token before injecting into request
|
- web: directly read csrf token before injecting into request
|
||||||
- web: fix double plural in label
|
- web: fix double plural in label
|
||||||
- web/admin: also set embedded outpost host when it doesn't include scheme
|
- web/admin: also set embedded outpost host when it doesn't include scheme
|
||||||
- web/admin: fix missing configure flow setting on webuahtn setup stage form
|
- web/admin: fix missing configure flow setting on webuahtn setup stage form
|
||||||
- web/flows: remove node directly instead of using removeChild()
|
- web/flows: remove node directly instead of using removeChild()
|
||||||
|
|
||||||
## Fixed in 2022.1.2
|
## Fixed in 2022.1.2
|
||||||
|
|
||||||
- internal/proxyv2: only allow access to /outpost.goauthentik.io in nginx mode when forward url could be extracted
|
- internal/proxyv2: only allow access to /outpost.goauthentik.io in nginx mode when forward url could be extracted
|
||||||
- lib: disable backup by default, add note to configuration
|
- lib: disable backup by default, add note to configuration
|
||||||
- lifecycle: replace lowercase, deprecated prometheus_multiproc_dir
|
- lifecycle: replace lowercase, deprecated prometheus_multiproc_dir
|
||||||
- outposts: allow custom label for docker containers
|
- outposts: allow custom label for docker containers
|
||||||
- policies/hibp: ensure password is encodable
|
- policies/hibp: ensure password is encodable
|
||||||
- providers/proxy: add PathPrefix to auto-traefik labels
|
- providers/proxy: add PathPrefix to auto-traefik labels
|
||||||
- root: upgrade python dependencies
|
- root: upgrade python dependencies
|
||||||
|
|
||||||
## Fixed in 2022.1.3
|
## Fixed in 2022.1.3
|
||||||
|
|
||||||
- internal: add support for X-Original-URL
|
- internal: add support for X-Original-URL
|
||||||
- internal: add optional debug server listening on 9900
|
- internal: add optional debug server listening on 9900
|
||||||
- internal: don't override server header
|
- internal: don't override server header
|
||||||
- internal: start adding tests to outpost
|
- internal: start adding tests to outpost
|
||||||
- lifecycle: make secret_key warning more prominent
|
- lifecycle: make secret_key warning more prominent
|
||||||
- lifecycle: wait for db in worker
|
- lifecycle: wait for db in worker
|
||||||
- outposts/ldap: Fix more case sensitivity issues. (#2144)
|
- outposts/ldap: Fix more case sensitivity issues. (#2144)
|
||||||
- outposts/proxy: add more test cases for domain-level auth
|
- outposts/proxy: add more test cases for domain-level auth
|
||||||
- outposts/proxy: fix potential empty redirect, add tests
|
- outposts/proxy: fix potential empty redirect, add tests
|
||||||
- outposts/proxy: trace full headers to debug
|
- outposts/proxy: trace full headers to debug
|
||||||
- providers/proxy: fix traefik label
|
- providers/proxy: fix traefik label
|
||||||
- root: add max-requests for gunicorn and max tasks for celery
|
- root: add max-requests for gunicorn and max tasks for celery
|
||||||
- root: fix redis passwords not being encoded correctly
|
- root: fix redis passwords not being encoded correctly
|
||||||
- web/admin: fix links which look like labels
|
- web/admin: fix links which look like labels
|
||||||
- web/admin: fix SMS Stage form not working
|
- web/admin: fix SMS Stage form not working
|
||||||
|
|
||||||
## Fixed in 2022.1.4
|
## Fixed in 2022.1.4
|
||||||
|
|
||||||
- core: fix view_token permission not being assigned on token creation for non-admin user
|
- core: fix view_token permission not being assigned on token creation for non-admin user
|
||||||
- lifecycle: remove gunicorn reload option
|
- lifecycle: remove gunicorn reload option
|
||||||
- lifecycle: send analytics in gunicorn config to decrease outgoing requests when workers get restarted
|
- lifecycle: send analytics in gunicorn config to decrease outgoing requests when workers get restarted
|
||||||
- providers/proxy: add support for X-Original-URI in nginx, better handle missing headers and report errors to authentik
|
- providers/proxy: add support for X-Original-URI in nginx, better handle missing headers and report errors to authentik
|
||||||
- providers/proxy: don't include hostname and scheme in redirect when we only got a path and not a full URL
|
- providers/proxy: don't include hostname and scheme in redirect when we only got a path and not a full URL
|
||||||
- providers/proxy: fix routing for external_host when using forward_auth_domain
|
- providers/proxy: fix routing for external_host when using forward_auth_domain
|
||||||
- providers/proxy: set traefik labels using object_naming_template instead of UUID
|
- providers/proxy: set traefik labels using object_naming_template instead of UUID
|
||||||
- sources/ldap: add list_flatten function to property mappings, enable on managed LDAP mappings
|
- sources/ldap: add list_flatten function to property mappings, enable on managed LDAP mappings
|
||||||
- web: add es locale
|
- web: add es locale
|
||||||
- web: add pl locale
|
- web: add pl locale
|
||||||
- web/admin: only check first half of locale when detecting
|
- web/admin: only check first half of locale when detecting
|
||||||
- web/flows: fix width on flow container
|
- web/flows: fix width on flow container
|
||||||
- web/user: include locale code in locale selection
|
- web/user: include locale code in locale selection
|
||||||
|
|
||||||
## Fixed in 2022.1.5
|
## Fixed in 2022.1.5
|
||||||
|
|
||||||
- build(deps): bump uvicorn from 0.17.1 to 0.17.3 (#2229)
|
- build(deps): bump uvicorn from 0.17.1 to 0.17.3 (#2229)
|
||||||
- core: allow formatting strings to be used for applications' launch URLs
|
- core: allow formatting strings to be used for applications' launch URLs
|
||||||
- internal: don't attempt to lookup SNI Certificate if no SNI is sent
|
- internal: don't attempt to lookup SNI Certificate if no SNI is sent
|
||||||
- internal: fix CSRF error caused by Host header
|
- internal: fix CSRF error caused by Host header
|
||||||
- internal: improve error handling for internal reverse proxy
|
- internal: improve error handling for internal reverse proxy
|
||||||
- internal: remove uvicorn server header
|
- internal: remove uvicorn server header
|
||||||
- internal: trace headers and url for backend requests
|
- internal: trace headers and url for backend requests
|
||||||
- outposts: fix channel not always having a logger attribute
|
- outposts: fix channel not always having a logger attribute
|
||||||
- outposts: fix compare_ports to support both service and container ports
|
- outposts: fix compare_ports to support both service and container ports
|
||||||
- outposts: fix service reconciler re-creating services
|
- outposts: fix service reconciler re-creating services
|
||||||
- outposts: remove node_port on V1ServicePort checks to prevent service creation loops
|
- outposts: remove node_port on V1ServicePort checks to prevent service creation loops
|
||||||
- providers/proxy: fix Host/:Authority not being modified
|
- providers/proxy: fix Host/:Authority not being modified
|
||||||
- providers/proxy: fix nil error in claims
|
- providers/proxy: fix nil error in claims
|
||||||
- providers/proxy: improve error handling for invalid backend_override
|
- providers/proxy: improve error handling for invalid backend_override
|
||||||
- sources/ldap: log entire exception
|
- sources/ldap: log entire exception
|
||||||
- sources/saml: fix incorrect ProtocolBinding being sent
|
- sources/saml: fix incorrect ProtocolBinding being sent
|
||||||
- sources/saml: fix server error
|
- sources/saml: fix server error
|
||||||
- stages/authenticator_validate: handle non-existent device_challenges
|
- stages/authenticator_validate: handle non-existent device_challenges
|
||||||
- web/admin: fix mismatched icons in overview and lists
|
- web/admin: fix mismatched icons in overview and lists
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -5,18 +5,18 @@ slug: "/releases/2022.11"
|
|||||||
|
|
||||||
## Breaking changes
|
## Breaking changes
|
||||||
|
|
||||||
- Have I Been Pwned policy is deprecated
|
- Have I Been Pwned policy is deprecated
|
||||||
|
|
||||||
The policy has been merged with the password policy which provides the same functionality. Existing Have I Been Pwned policies will automatically be migrated.
|
The policy has been merged with the password policy which provides the same functionality. Existing Have I Been Pwned policies will automatically be migrated.
|
||||||
|
|
||||||
- Instead of using multiple redis databases, authentik now uses a single redis database
|
- Instead of using multiple redis databases, authentik now uses a single redis database
|
||||||
|
|
||||||
This will temporarily loose some cached information after the upgrade, like cached system tasks and policy results. This data will be re-cached in the background.
|
This will temporarily loose some cached information after the upgrade, like cached system tasks and policy results. This data will be re-cached in the background.
|
||||||
|
|
||||||
## New features
|
## New features
|
||||||
|
|
||||||
- authentik now runs on Python 3.11
|
- authentik now runs on Python 3.11
|
||||||
- Expanded password policy
|
- Expanded password policy
|
||||||
|
|
||||||
The "Have I been Pwned" policy has been merged into the password policy, and additionally passwords can be checked using [zxcvbn](https://github.com/dropbox/zxcvbn) to provider concise feedback.
|
The "Have I been Pwned" policy has been merged into the password policy, and additionally passwords can be checked using [zxcvbn](https://github.com/dropbox/zxcvbn) to provider concise feedback.
|
||||||
|
|
||||||
@ -40,49 +40,49 @@ image:
|
|||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- api: fix missing scheme in securitySchemes
|
- api: fix missing scheme in securitySchemes
|
||||||
- blueprints: Fixed bug causing blueprint instance context be discarded (#3990)
|
- blueprints: Fixed bug causing blueprint instance context be discarded (#3990)
|
||||||
- core: fix error when propertymappings return complex value
|
- core: fix error when propertymappings return complex value
|
||||||
- core: simplify group serializer for user API endpoint (#3899)
|
- core: simplify group serializer for user API endpoint (#3899)
|
||||||
- events: deepcopy event kwargs to prevent objects being removed, remove workaround
|
- events: deepcopy event kwargs to prevent objects being removed, remove workaround
|
||||||
- events: sanitize generator for json safety
|
- events: sanitize generator for json safety
|
||||||
- lib: fix complex objects being included in event context for ak_create_event
|
- lib: fix complex objects being included in event context for ak_create_event
|
||||||
- lifecycle: fix incorrect messages looped
|
- lifecycle: fix incorrect messages looped
|
||||||
- outposts/kubernetes: ingress class (#4002)
|
- outposts/kubernetes: ingress class (#4002)
|
||||||
- policies: only cache policies for authenticated users
|
- policies: only cache policies for authenticated users
|
||||||
- policies/password: merge hibp add zxcvbn (#4001)
|
- policies/password: merge hibp add zxcvbn (#4001)
|
||||||
- providers/oauth2: fix inconsistent expiry encoded in JWT
|
- providers/oauth2: fix inconsistent expiry encoded in JWT
|
||||||
- root: make sentry DSN configurable (#4016)
|
- root: make sentry DSN configurable (#4016)
|
||||||
- root: relicense and launch blog post
|
- root: relicense and launch blog post
|
||||||
- root: use single redis db (#4009)
|
- root: use single redis db (#4009)
|
||||||
- sources: add custom icon support (#4022)
|
- sources: add custom icon support (#4022)
|
||||||
- stages/authenticator\_\*: cleanup
|
- stages/authenticator\_\*: cleanup
|
||||||
- stages/authenticator_validate: add flag to configure user_verification for webauthn devices
|
- stages/authenticator_validate: add flag to configure user_verification for webauthn devices
|
||||||
- stages/invitation: directly delete invitation now that flow plan is saved in email token
|
- stages/invitation: directly delete invitation now that flow plan is saved in email token
|
||||||
- web: fix twitter icon
|
- web: fix twitter icon
|
||||||
- web/flows: always hide static user info when its not set in the flow
|
- web/flows: always hide static user info when its not set in the flow
|
||||||
|
|
||||||
## Fixed in 2022.11.1
|
## Fixed in 2022.11.1
|
||||||
|
|
||||||
- blueprints: add desired state attribute to objects (#4061)
|
- blueprints: add desired state attribute to objects (#4061)
|
||||||
- core: fix tab-complete in shell
|
- core: fix tab-complete in shell
|
||||||
- root: fix build on arm64
|
- root: fix build on arm64
|
||||||
- stages/email: add test for email translation
|
- stages/email: add test for email translation
|
||||||
- web/admin: fix error when importing duo devices
|
- web/admin: fix error when importing duo devices
|
||||||
- web/admin: reset cookie_domain when setting non-domain forward auth
|
- web/admin: reset cookie_domain when setting non-domain forward auth
|
||||||
|
|
||||||
## Fixed in 2022.11.2
|
## Fixed in 2022.11.2
|
||||||
|
|
||||||
- \*: fix [CVE-2022-46145](../../security/cves/CVE-2022-46145.md), Reported by [@sdimovv](https://github.com/sdimovv)
|
- \*: fix [CVE-2022-46145](../../security/cves/CVE-2022-46145.md), Reported by [@sdimovv](https://github.com/sdimovv)
|
||||||
|
|
||||||
## Fixed in 2022.11.3
|
## Fixed in 2022.11.3
|
||||||
|
|
||||||
- web: fix Flow Form failing to load due to outdated API client
|
- web: fix Flow Form failing to load due to outdated API client
|
||||||
|
|
||||||
## Fixed in 2022.11.4
|
## Fixed in 2022.11.4
|
||||||
|
|
||||||
- \*: fix [CVE-2022-46172](../../security/cves/CVE-2022-46172.md), Reported by [@DreamingRaven](https://github.com/DreamingRaven)
|
- \*: fix [CVE-2022-46172](../../security/cves/CVE-2022-46172.md), Reported by [@DreamingRaven](https://github.com/DreamingRaven)
|
||||||
- \*: fix [CVE-2022-23555](../../security/cves/CVE-2022-23555.md), Reported by [@fuomag9](https://github.com/fuomag9)
|
- \*: fix [CVE-2022-23555](../../security/cves/CVE-2022-23555.md), Reported by [@fuomag9](https://github.com/fuomag9)
|
||||||
|
|
||||||
## API Changes
|
## API Changes
|
||||||
|
|
||||||
@ -96,19 +96,19 @@ image:
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `check_static_rules` (boolean)
|
- Added property `check_static_rules` (boolean)
|
||||||
|
|
||||||
- Added property `check_have_i_been_pwned` (boolean)
|
- Added property `check_have_i_been_pwned` (boolean)
|
||||||
|
|
||||||
- Added property `check_zxcvbn` (boolean)
|
- Added property `check_zxcvbn` (boolean)
|
||||||
|
|
||||||
- Added property `hibp_allowed_count` (integer)
|
- Added property `hibp_allowed_count` (integer)
|
||||||
|
|
||||||
> How many times the password hash is allowed to be on haveibeenpwned
|
> How many times the password hash is allowed to be on haveibeenpwned
|
||||||
|
|
||||||
- Added property `zxcvbn_score_threshold` (integer)
|
- Added property `zxcvbn_score_threshold` (integer)
|
||||||
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
||||||
|
|
||||||
##### `PUT` /policies/password/{policy_uuid}/
|
##### `PUT` /policies/password/{policy_uuid}/
|
||||||
@ -117,36 +117,36 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `check_static_rules` (boolean)
|
- Added property `check_static_rules` (boolean)
|
||||||
|
|
||||||
- Added property `check_have_i_been_pwned` (boolean)
|
- Added property `check_have_i_been_pwned` (boolean)
|
||||||
|
|
||||||
- Added property `check_zxcvbn` (boolean)
|
- Added property `check_zxcvbn` (boolean)
|
||||||
|
|
||||||
- Added property `hibp_allowed_count` (integer)
|
- Added property `hibp_allowed_count` (integer)
|
||||||
|
|
||||||
> How many times the password hash is allowed to be on haveibeenpwned
|
> How many times the password hash is allowed to be on haveibeenpwned
|
||||||
|
|
||||||
- Added property `zxcvbn_score_threshold` (integer)
|
- Added property `zxcvbn_score_threshold` (integer)
|
||||||
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `check_static_rules` (boolean)
|
- Added property `check_static_rules` (boolean)
|
||||||
|
|
||||||
- Added property `check_have_i_been_pwned` (boolean)
|
- Added property `check_have_i_been_pwned` (boolean)
|
||||||
|
|
||||||
- Added property `check_zxcvbn` (boolean)
|
- Added property `check_zxcvbn` (boolean)
|
||||||
|
|
||||||
- Added property `hibp_allowed_count` (integer)
|
- Added property `hibp_allowed_count` (integer)
|
||||||
|
|
||||||
> How many times the password hash is allowed to be on haveibeenpwned
|
> How many times the password hash is allowed to be on haveibeenpwned
|
||||||
|
|
||||||
- Added property `zxcvbn_score_threshold` (integer)
|
- Added property `zxcvbn_score_threshold` (integer)
|
||||||
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
||||||
|
|
||||||
##### `PATCH` /policies/password/{policy_uuid}/
|
##### `PATCH` /policies/password/{policy_uuid}/
|
||||||
@ -155,36 +155,36 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `check_static_rules` (boolean)
|
- Added property `check_static_rules` (boolean)
|
||||||
|
|
||||||
- Added property `check_have_i_been_pwned` (boolean)
|
- Added property `check_have_i_been_pwned` (boolean)
|
||||||
|
|
||||||
- Added property `check_zxcvbn` (boolean)
|
- Added property `check_zxcvbn` (boolean)
|
||||||
|
|
||||||
- Added property `hibp_allowed_count` (integer)
|
- Added property `hibp_allowed_count` (integer)
|
||||||
|
|
||||||
> How many times the password hash is allowed to be on haveibeenpwned
|
> How many times the password hash is allowed to be on haveibeenpwned
|
||||||
|
|
||||||
- Added property `zxcvbn_score_threshold` (integer)
|
- Added property `zxcvbn_score_threshold` (integer)
|
||||||
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `check_static_rules` (boolean)
|
- Added property `check_static_rules` (boolean)
|
||||||
|
|
||||||
- Added property `check_have_i_been_pwned` (boolean)
|
- Added property `check_have_i_been_pwned` (boolean)
|
||||||
|
|
||||||
- Added property `check_zxcvbn` (boolean)
|
- Added property `check_zxcvbn` (boolean)
|
||||||
|
|
||||||
- Added property `hibp_allowed_count` (integer)
|
- Added property `hibp_allowed_count` (integer)
|
||||||
|
|
||||||
> How many times the password hash is allowed to be on haveibeenpwned
|
> How many times the password hash is allowed to be on haveibeenpwned
|
||||||
|
|
||||||
- Added property `zxcvbn_score_threshold` (integer)
|
- Added property `zxcvbn_score_threshold` (integer)
|
||||||
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
||||||
|
|
||||||
##### `GET` /core/tokens/{identifier}/
|
##### `GET` /core/tokens/{identifier}/
|
||||||
@ -193,23 +193,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user_obj` (object)
|
- Changed property `user_obj` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `PUT` /core/tokens/{identifier}/
|
##### `PUT` /core/tokens/{identifier}/
|
||||||
|
|
||||||
@ -217,23 +217,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user_obj` (object)
|
- Changed property `user_obj` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `PATCH` /core/tokens/{identifier}/
|
##### `PATCH` /core/tokens/{identifier}/
|
||||||
|
|
||||||
@ -241,23 +241,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user_obj` (object)
|
- Changed property `user_obj` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /core/users/{id}/
|
##### `GET` /core/users/{id}/
|
||||||
|
|
||||||
@ -265,19 +265,19 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `PUT` /core/users/{id}/
|
##### `PUT` /core/users/{id}/
|
||||||
|
|
||||||
@ -285,19 +285,19 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `PATCH` /core/users/{id}/
|
##### `PATCH` /core/users/{id}/
|
||||||
|
|
||||||
@ -305,19 +305,19 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /policies/bindings/{policy_binding_uuid}/
|
##### `GET` /policies/bindings/{policy_binding_uuid}/
|
||||||
|
|
||||||
@ -325,23 +325,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user_obj` (object)
|
- Changed property `user_obj` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `PUT` /policies/bindings/{policy_binding_uuid}/
|
##### `PUT` /policies/bindings/{policy_binding_uuid}/
|
||||||
|
|
||||||
@ -349,23 +349,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user_obj` (object)
|
- Changed property `user_obj` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `PATCH` /policies/bindings/{policy_binding_uuid}/
|
##### `PATCH` /policies/bindings/{policy_binding_uuid}/
|
||||||
|
|
||||||
@ -373,23 +373,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user_obj` (object)
|
- Changed property `user_obj` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `POST` /policies/password/
|
##### `POST` /policies/password/
|
||||||
|
|
||||||
@ -397,36 +397,36 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `check_static_rules` (boolean)
|
- Added property `check_static_rules` (boolean)
|
||||||
|
|
||||||
- Added property `check_have_i_been_pwned` (boolean)
|
- Added property `check_have_i_been_pwned` (boolean)
|
||||||
|
|
||||||
- Added property `check_zxcvbn` (boolean)
|
- Added property `check_zxcvbn` (boolean)
|
||||||
|
|
||||||
- Added property `hibp_allowed_count` (integer)
|
- Added property `hibp_allowed_count` (integer)
|
||||||
|
|
||||||
> How many times the password hash is allowed to be on haveibeenpwned
|
> How many times the password hash is allowed to be on haveibeenpwned
|
||||||
|
|
||||||
- Added property `zxcvbn_score_threshold` (integer)
|
- Added property `zxcvbn_score_threshold` (integer)
|
||||||
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **201 Created**
|
Changed response : **201 Created**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `check_static_rules` (boolean)
|
- Added property `check_static_rules` (boolean)
|
||||||
|
|
||||||
- Added property `check_have_i_been_pwned` (boolean)
|
- Added property `check_have_i_been_pwned` (boolean)
|
||||||
|
|
||||||
- Added property `check_zxcvbn` (boolean)
|
- Added property `check_zxcvbn` (boolean)
|
||||||
|
|
||||||
- Added property `hibp_allowed_count` (integer)
|
- Added property `hibp_allowed_count` (integer)
|
||||||
|
|
||||||
> How many times the password hash is allowed to be on haveibeenpwned
|
> How many times the password hash is allowed to be on haveibeenpwned
|
||||||
|
|
||||||
- Added property `zxcvbn_score_threshold` (integer)
|
- Added property `zxcvbn_score_threshold` (integer)
|
||||||
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
||||||
|
|
||||||
##### `GET` /policies/password/
|
##### `GET` /policies/password/
|
||||||
@ -447,23 +447,23 @@ Added: `zxcvbn_score_threshold` in `query`
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > Password Policy Serializer
|
Changed items (object): > Password Policy Serializer
|
||||||
|
|
||||||
- Added property `check_static_rules` (boolean)
|
- Added property `check_static_rules` (boolean)
|
||||||
|
|
||||||
- Added property `check_have_i_been_pwned` (boolean)
|
- Added property `check_have_i_been_pwned` (boolean)
|
||||||
|
|
||||||
- Added property `check_zxcvbn` (boolean)
|
- Added property `check_zxcvbn` (boolean)
|
||||||
|
|
||||||
- Added property `hibp_allowed_count` (integer)
|
- Added property `hibp_allowed_count` (integer)
|
||||||
|
|
||||||
> How many times the password hash is allowed to be on haveibeenpwned
|
> How many times the password hash is allowed to be on haveibeenpwned
|
||||||
|
|
||||||
- Added property `zxcvbn_score_threshold` (integer)
|
- Added property `zxcvbn_score_threshold` (integer)
|
||||||
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
> If the zxcvbn score is equal or less than this value, the policy will fail.
|
||||||
|
|
||||||
##### `POST` /core/tokens/
|
##### `POST` /core/tokens/
|
||||||
@ -472,23 +472,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **201 Created**
|
Changed response : **201 Created**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user_obj` (object)
|
- Changed property `user_obj` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /core/tokens/
|
##### `GET` /core/tokens/
|
||||||
|
|
||||||
@ -496,27 +496,27 @@ Changed response : **201 Created**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > Token Serializer
|
Changed items (object): > Token Serializer
|
||||||
|
|
||||||
- Changed property `user_obj` (object)
|
- Changed property `user_obj` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /core/user_consent/{id}/
|
##### `GET` /core/user_consent/{id}/
|
||||||
|
|
||||||
@ -524,23 +524,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user` (object)
|
- Changed property `user` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `POST` /core/users/
|
##### `POST` /core/users/
|
||||||
|
|
||||||
@ -548,19 +548,19 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **201 Created**
|
Changed response : **201 Created**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /core/users/
|
##### `GET` /core/users/
|
||||||
|
|
||||||
@ -568,23 +568,23 @@ Changed response : **201 Created**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > User Serializer
|
Changed items (object): > User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /oauth2/authorization_codes/{id}/
|
##### `GET` /oauth2/authorization_codes/{id}/
|
||||||
|
|
||||||
@ -592,23 +592,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user` (object)
|
- Changed property `user` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /oauth2/refresh_tokens/{id}/
|
##### `GET` /oauth2/refresh_tokens/{id}/
|
||||||
|
|
||||||
@ -616,23 +616,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user` (object)
|
- Changed property `user` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `POST` /policies/bindings/
|
##### `POST` /policies/bindings/
|
||||||
|
|
||||||
@ -640,23 +640,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **201 Created**
|
Changed response : **201 Created**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `user_obj` (object)
|
- Changed property `user_obj` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /policies/bindings/
|
##### `GET` /policies/bindings/
|
||||||
|
|
||||||
@ -664,27 +664,27 @@ Changed response : **201 Created**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > PolicyBinding Serializer
|
Changed items (object): > PolicyBinding Serializer
|
||||||
|
|
||||||
- Changed property `user_obj` (object)
|
- Changed property `user_obj` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /core/user_consent/
|
##### `GET` /core/user_consent/
|
||||||
|
|
||||||
@ -692,27 +692,27 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > UserConsent Serializer
|
Changed items (object): > UserConsent Serializer
|
||||||
|
|
||||||
- Changed property `user` (object)
|
- Changed property `user` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /oauth2/authorization_codes/
|
##### `GET` /oauth2/authorization_codes/
|
||||||
|
|
||||||
@ -720,27 +720,27 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > Serializer for BaseGrantModel and ExpiringBaseGrant
|
Changed items (object): > Serializer for BaseGrantModel and ExpiringBaseGrant
|
||||||
|
|
||||||
- Changed property `user` (object)
|
- Changed property `user` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
|
||||||
##### `GET` /oauth2/refresh_tokens/
|
##### `GET` /oauth2/refresh_tokens/
|
||||||
|
|
||||||
@ -748,24 +748,24 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > Serializer for BaseGrantModel and RefreshToken
|
Changed items (object): > Serializer for BaseGrantModel and RefreshToken
|
||||||
|
|
||||||
- Changed property `user` (object)
|
- Changed property `user` (object)
|
||||||
|
|
||||||
> User Serializer
|
> User Serializer
|
||||||
|
|
||||||
- Changed property `groups_obj` (array)
|
- Changed property `groups_obj` (array)
|
||||||
|
|
||||||
Changed items (object): > Simplified Group Serializer for user's groups
|
Changed items (object): > Simplified Group Serializer for user's groups
|
||||||
|
|
||||||
New optional properties:
|
New optional properties:
|
||||||
|
|
||||||
- `users_obj`
|
- `users_obj`
|
||||||
|
|
||||||
* Deleted property `users` (array)
|
* Deleted property `users` (array)
|
||||||
|
|
||||||
* Deleted property `users_obj` (array)
|
* Deleted property `users_obj` (array)
|
||||||
|
@ -5,17 +5,17 @@ slug: "/releases/2022.12"
|
|||||||
|
|
||||||
## Breaking changes
|
## Breaking changes
|
||||||
|
|
||||||
- Blueprints fetched via OCI require oci:// schema
|
- Blueprints fetched via OCI require oci:// schema
|
||||||
|
|
||||||
To better detect if a blueprint should be fetched locally or via OCI, all OCI sourced blueprints require an `oci://` protocol.
|
To better detect if a blueprint should be fetched locally or via OCI, all OCI sourced blueprints require an `oci://` protocol.
|
||||||
|
|
||||||
## New features
|
## New features
|
||||||
|
|
||||||
- Bundled GeoIP City database
|
- Bundled GeoIP City database
|
||||||
|
|
||||||
authentik now comes with a bundled MaxMind GeoLite2 City database. This allows everyone to take advantage of the extra data provided by GeoIP. The default docker-compose file removes the GeoIP update container as it is no longer needed. See more [here](../../sys-mgmt/ops/geoip.mdx).
|
authentik now comes with a bundled MaxMind GeoLite2 City database. This allows everyone to take advantage of the extra data provided by GeoIP. The default docker-compose file removes the GeoIP update container as it is no longer needed. See more [here](../../sys-mgmt/ops/geoip.mdx).
|
||||||
|
|
||||||
- Improved UX for user & group management and stage/policy binding
|
- Improved UX for user & group management and stage/policy binding
|
||||||
|
|
||||||
Users can now more easily be added to and removed from groups, both when viewing a single user and viewing a group.
|
Users can now more easily be added to and removed from groups, both when viewing a single user and viewing a group.
|
||||||
|
|
||||||
@ -23,11 +23,11 @@ slug: "/releases/2022.12"
|
|||||||
|
|
||||||
Select inputs were previously limited to showing a single page of items (default size of 100 items). These inputs have been replaced by dynamically loading inputs which support searching and better show the properties of the item.
|
Select inputs were previously limited to showing a single page of items (default size of 100 items). These inputs have been replaced by dynamically loading inputs which support searching and better show the properties of the item.
|
||||||
|
|
||||||
- Preview for OAuth2 and SAML providers
|
- Preview for OAuth2 and SAML providers
|
||||||
|
|
||||||
OAuth2 and SAML providers can now preview what the currently selected property/scope mappings's outcome will look like. This helps with seeing what data is sent to the client and implementing and testing custom mappings.
|
OAuth2 and SAML providers can now preview what the currently selected property/scope mappings's outcome will look like. This helps with seeing what data is sent to the client and implementing and testing custom mappings.
|
||||||
|
|
||||||
- Customisable Captcha stage
|
- Customisable Captcha stage
|
||||||
|
|
||||||
The captcha stage now supports alternate compatible providers, like [hCaptcha](https://docs.hcaptcha.com/switch/) and [Turnstile](https://developers.cloudflare.com/turnstile/get-started/migrating-from-recaptcha/).
|
The captcha stage now supports alternate compatible providers, like [hCaptcha](https://docs.hcaptcha.com/switch/) and [Turnstile](https://developers.cloudflare.com/turnstile/get-started/migrating-from-recaptcha/).
|
||||||
|
|
||||||
@ -51,124 +51,124 @@ image:
|
|||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- blueprints: add !Env tag
|
- blueprints: add !Env tag
|
||||||
- blueprints: add `!If` tag (#4264)
|
- blueprints: add `!If` tag (#4264)
|
||||||
- blueprints: add conditions to blueprint schema
|
- blueprints: add conditions to blueprint schema
|
||||||
- blueprints: Added conditional entry application (#4167)
|
- blueprints: Added conditional entry application (#4167)
|
||||||
- blueprints: better OCI support in UI (#4263)
|
- blueprints: better OCI support in UI (#4263)
|
||||||
- blueprints: fixed bug causing filtering with an empty query (#4106)
|
- blueprints: fixed bug causing filtering with an empty query (#4106)
|
||||||
- blueprints: Support nested custom tags in `!Find` and `!Format` tags (#4127)
|
- blueprints: Support nested custom tags in `!Find` and `!Format` tags (#4127)
|
||||||
- core: add endpoints to add/remove users from group atomically
|
- core: add endpoints to add/remove users from group atomically
|
||||||
- core: bundle geoip (#4250)
|
- core: bundle geoip (#4250)
|
||||||
- events: fix incorrect EventAction being used
|
- events: fix incorrect EventAction being used
|
||||||
- events: improve handling creation of events with non-pickleable objects
|
- events: improve handling creation of events with non-pickleable objects
|
||||||
- events: remove legacy logger declaration
|
- events: remove legacy logger declaration
|
||||||
- events: save login event in session after login
|
- events: save login event in session after login
|
||||||
- flows: fix redirect from plan context "redirect" not being wrapped in flow response
|
- flows: fix redirect from plan context "redirect" not being wrapped in flow response
|
||||||
- flows: set stage name and verbose_name for in_memory stages
|
- flows: set stage name and verbose_name for in_memory stages
|
||||||
- internal: dont error if environment config isn't found
|
- internal: dont error if environment config isn't found
|
||||||
- internal: remove sentry proxy
|
- internal: remove sentry proxy
|
||||||
- internal: reuse http transport to prevent leaking connections (#3996)
|
- internal: reuse http transport to prevent leaking connections (#3996)
|
||||||
- lib: enable sentry profiles_sample_rate
|
- lib: enable sentry profiles_sample_rate
|
||||||
- lib: fix uploaded files not being saved correctly, add tests
|
- lib: fix uploaded files not being saved correctly, add tests
|
||||||
- lifecycle: don't set user/group in gunicorn
|
- lifecycle: don't set user/group in gunicorn
|
||||||
- lifecycle: improve explanation for user: root and docket socket mount
|
- lifecycle: improve explanation for user: root and docket socket mount
|
||||||
- policies: don't log context when policy returns None
|
- policies: don't log context when policy returns None
|
||||||
- policies: log correct cache state
|
- policies: log correct cache state
|
||||||
- policies: make name required
|
- policies: make name required
|
||||||
- policies/password: Always add generic message to failing zxcvbn check (#4100)
|
- policies/password: Always add generic message to failing zxcvbn check (#4100)
|
||||||
- providers: add preview for mappings (#4254)
|
- providers: add preview for mappings (#4254)
|
||||||
- providers/ldap: improve mapping of LDAP filters to authentik queries
|
- providers/ldap: improve mapping of LDAP filters to authentik queries
|
||||||
- providers/oauth2: optimise and cache signing key, prevent key being loaded multiple times
|
- providers/oauth2: optimise and cache signing key, prevent key being loaded multiple times
|
||||||
- providers/oauth2: set amr values based on login event
|
- providers/oauth2: set amr values based on login event
|
||||||
- providers/proxy: correctly set id_token_hint if possible
|
- providers/proxy: correctly set id_token_hint if possible
|
||||||
- providers/saml: set AuthnContextClassRef based on login event
|
- providers/saml: set AuthnContextClassRef based on login event
|
||||||
- root: allow custom settings via python module
|
- root: allow custom settings via python module
|
||||||
- root: migrate to hosted sentry with rate-limited DSN
|
- root: migrate to hosted sentry with rate-limited DSN
|
||||||
- security: fix CVE 2022 23555 (#4274)
|
- security: fix CVE 2022 23555 (#4274)
|
||||||
- security: fix CVE 2022 46145 (#4140)
|
- security: fix CVE 2022 46145 (#4140)
|
||||||
- security: fix CVE 2022 46172 (#4275)
|
- security: fix CVE 2022 46172 (#4275)
|
||||||
- stages/authenticator_duo: fix imported duo devices not being confirmed
|
- stages/authenticator_duo: fix imported duo devices not being confirmed
|
||||||
- stages/authenticator_validate: fix validation to ensure configuration stage is set
|
- stages/authenticator_validate: fix validation to ensure configuration stage is set
|
||||||
- stages/authenticator_validate: improve validation for not_configured_action
|
- stages/authenticator_validate: improve validation for not_configured_action
|
||||||
- stages/authenticator_validate: log duo error
|
- stages/authenticator_validate: log duo error
|
||||||
- stages/authenticator_validate: save used mfa devices in login event
|
- stages/authenticator_validate: save used mfa devices in login event
|
||||||
- stages/captcha: customisable URLs (#3832)
|
- stages/captcha: customisable URLs (#3832)
|
||||||
- stages/invitation: fix incorrect pk check for invitation's flow
|
- stages/invitation: fix incorrect pk check for invitation's flow
|
||||||
- stages/user_login: prevent double success message when logging in via source
|
- stages/user_login: prevent double success message when logging in via source
|
||||||
- stages/user_write: always ignore `component` field and prevent warning
|
- stages/user_write: always ignore `component` field and prevent warning
|
||||||
- web: fix authentication with Plex on iOS (#4095)
|
- web: fix authentication with Plex on iOS (#4095)
|
||||||
- web: ignore d3 circular deps warning, treat unresolved import as error
|
- web: ignore d3 circular deps warning, treat unresolved import as error
|
||||||
- web: use version family subdomain for in-app doc links
|
- web: use version family subdomain for in-app doc links
|
||||||
- web/admin: better show metadata download for saml provider
|
- web/admin: better show metadata download for saml provider
|
||||||
- web/admin: break all in code blocks in event info
|
- web/admin: break all in code blocks in event info
|
||||||
- web/admin: clarify phrasing that user ID is required
|
- web/admin: clarify phrasing that user ID is required
|
||||||
- web/admin: fix action button order for blueprints
|
- web/admin: fix action button order for blueprints
|
||||||
- web/admin: fix alignment in tables with multiple elements in cell
|
- web/admin: fix alignment in tables with multiple elements in cell
|
||||||
- web/admin: fix empty request being sent due to multiple forms in duo import modal
|
- web/admin: fix empty request being sent due to multiple forms in duo import modal
|
||||||
- web/admin: improve i18n for documentation link in outpost form
|
- web/admin: improve i18n for documentation link in outpost form
|
||||||
- web/admin: improve UI for removing users from groups and groups from users
|
- web/admin: improve UI for removing users from groups and groups from users
|
||||||
- web/admin: improve user/group UX for adding/removing users to and from groups
|
- web/admin: improve user/group UX for adding/removing users to and from groups
|
||||||
- web/admin: more consistent label usage, use compact labels
|
- web/admin: more consistent label usage, use compact labels
|
||||||
- web/admin: rework markdown, correctly render Admonitions, fix links
|
- web/admin: rework markdown, correctly render Admonitions, fix links
|
||||||
- web/admin: show bound policies order first to match stages
|
- web/admin: show bound policies order first to match stages
|
||||||
- web/admin: show policy binding form when creating policy in bound list
|
- web/admin: show policy binding form when creating policy in bound list
|
||||||
- web/admin: show stage binding form when creating stage in bound list
|
- web/admin: show stage binding form when creating stage in bound list
|
||||||
- web/elements: fix alignment for checkboxes in table
|
- web/elements: fix alignment for checkboxes in table
|
||||||
- web/elements: fix alignment with checkbox in table
|
- web/elements: fix alignment with checkbox in table
|
||||||
- web/elements: fix log level for diagram
|
- web/elements: fix log level for diagram
|
||||||
- web/elements: fix table select-all checkbox being checked with no elements
|
- web/elements: fix table select-all checkbox being checked with no elements
|
||||||
- web/elements: fix wizard form page changing state before being active
|
- web/elements: fix wizard form page changing state before being active
|
||||||
- web/elements: unselect top checkbox in table when not all elements are selected
|
- web/elements: unselect top checkbox in table when not all elements are selected
|
||||||
- web/flows: fix display for long redirect URLs
|
- web/flows: fix display for long redirect URLs
|
||||||
- web/flows: improve error messages for failed duo push
|
- web/flows: improve error messages for failed duo push
|
||||||
- web/flows: update flow background
|
- web/flows: update flow background
|
||||||
- web/user: fix styling for clear all button in notification drawer
|
- web/user: fix styling for clear all button in notification drawer
|
||||||
|
|
||||||
## Fixed in 2022.12.1
|
## Fixed in 2022.12.1
|
||||||
|
|
||||||
- api: add filter backend for secret key to allow access to tenants and certificates
|
- api: add filter backend for secret key to allow access to tenants and certificates
|
||||||
- blueprints: fix error when entry with state absent doesn't exist
|
- blueprints: fix error when entry with state absent doesn't exist
|
||||||
- blueprints: Resolve yamltags in state and model attributes (#4299)
|
- blueprints: Resolve yamltags in state and model attributes (#4299)
|
||||||
- outposts: include hostname in outpost heartbeat
|
- outposts: include hostname in outpost heartbeat
|
||||||
- outposts/ldap: only use common cert if cert is configured
|
- outposts/ldap: only use common cert if cert is configured
|
||||||
- outposts/ldap: use configured certificate for LDAPS when all providers' certificates are identical
|
- outposts/ldap: use configured certificate for LDAPS when all providers' certificates are identical
|
||||||
- web/admin: migrate selection to ak-search-select
|
- web/admin: migrate selection to ak-search-select
|
||||||
- web/admin: rework outpost health
|
- web/admin: rework outpost health
|
||||||
- web/elements: add grouping and descriptions to search select
|
- web/elements: add grouping and descriptions to search select
|
||||||
- web/elements: make ak-search-select limited in height and scroll
|
- web/elements: make ak-search-select limited in height and scroll
|
||||||
- web/elements: render ak-seach-select dropdown correctly in modals
|
- web/elements: render ak-seach-select dropdown correctly in modals
|
||||||
- web/user: fix user settings stuck loading
|
- web/user: fix user settings stuck loading
|
||||||
|
|
||||||
## Fixed in 2022.12.2
|
## Fixed in 2022.12.2
|
||||||
|
|
||||||
- admin: use matching environment for system API
|
- admin: use matching environment for system API
|
||||||
- crypto: fix type for has_key
|
- crypto: fix type for has_key
|
||||||
- providers/oauth2: fix null amr value not being removed from id_token
|
- providers/oauth2: fix null amr value not being removed from id_token
|
||||||
- providers/saml: don't error if no request in API serializer context
|
- providers/saml: don't error if no request in API serializer context
|
||||||
- stages/captcha: fix captcha not loading correctly, add tests
|
- stages/captcha: fix captcha not loading correctly, add tests
|
||||||
- stages/dummy: add toggle to throw error for debugging
|
- stages/dummy: add toggle to throw error for debugging
|
||||||
- stages/email: make template tests less flaky
|
- stages/email: make template tests less flaky
|
||||||
- stages/email: use pending user correctly
|
- stages/email: use pending user correctly
|
||||||
- stages/prompt: use stage.get_pending_user() to fallback to the correct user
|
- stages/prompt: use stage.get_pending_user() to fallback to the correct user
|
||||||
- web: add check compile test to prevent compile errors/warnings
|
- web: add check compile test to prevent compile errors/warnings
|
||||||
- web: ensure locales are built for tsc check
|
- web: ensure locales are built for tsc check
|
||||||
- web: update tsconfig strictness
|
- web: update tsconfig strictness
|
||||||
- web/admin: add Radio control, search-select fixes (#4333)
|
- web/admin: add Radio control, search-select fixes (#4333)
|
||||||
- web/admin: fix error in outpost form dropdown
|
- web/admin: fix error in outpost form dropdown
|
||||||
- web/admin: fix error when creating SAML Provider from metadata
|
- web/admin: fix error when creating SAML Provider from metadata
|
||||||
- web/elements: correctly display selected empty option when blankable is enabled
|
- web/elements: correctly display selected empty option when blankable is enabled
|
||||||
- web/elements: fix dropdown menu closing before selecting item sometimes
|
- web/elements: fix dropdown menu closing before selecting item sometimes
|
||||||
- web/elements: fix selection of blank elements in search-select, fix issue when re-opening dropdown
|
- web/elements: fix selection of blank elements in search-select, fix issue when re-opening dropdown
|
||||||
- web/elements: tabs: only find pages for directly related slots
|
- web/elements: tabs: only find pages for directly related slots
|
||||||
- web/elements: trigger search select data update on connected callback
|
- web/elements: trigger search select data update on connected callback
|
||||||
- web/flows: add close button to flow inspector
|
- web/flows: add close button to flow inspector
|
||||||
- web/flows: fix alternate captchas not loading
|
- web/flows: fix alternate captchas not loading
|
||||||
- web/flows: rework error display, always use ak-stage-flow-error instead of shell
|
- web/flows: rework error display, always use ak-stage-flow-error instead of shell
|
||||||
|
|
||||||
## Fixed in 2022.12.3
|
## Fixed in 2022.12.3
|
||||||
|
|
||||||
- \*: fix [CVE-2023-26481](../../security/cves/CVE-2023-26481.md), Reported by [@fuomag9](https://github.com/fuomag9)
|
- \*: fix [CVE-2023-26481](../../security/cves/CVE-2023-26481.md), Reported by [@fuomag9](https://github.com/fuomag9)
|
||||||
|
|
||||||
## API Changes
|
## API Changes
|
||||||
|
|
||||||
@ -182,13 +182,13 @@ image:
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `js_url` (string)
|
- Added property `js_url` (string)
|
||||||
|
|
||||||
- Added property `api_url` (string)
|
- Added property `api_url` (string)
|
||||||
|
|
||||||
- Changed property `public_key` (string)
|
- Changed property `public_key` (string)
|
||||||
> Public key, acquired your captcha Provider.
|
> Public key, acquired your captcha Provider.
|
||||||
|
|
||||||
##### `PUT` /stages/captcha/{stage_uuid}/
|
##### `PUT` /stages/captcha/{stage_uuid}/
|
||||||
@ -197,28 +197,28 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `js_url` (string)
|
- Added property `js_url` (string)
|
||||||
|
|
||||||
- Added property `api_url` (string)
|
- Added property `api_url` (string)
|
||||||
|
|
||||||
- Changed property `public_key` (string)
|
- Changed property `public_key` (string)
|
||||||
|
|
||||||
> Public key, acquired your captcha Provider.
|
> Public key, acquired your captcha Provider.
|
||||||
|
|
||||||
- Changed property `private_key` (string)
|
- Changed property `private_key` (string)
|
||||||
> Private key, acquired your captcha Provider.
|
> Private key, acquired your captcha Provider.
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `js_url` (string)
|
- Added property `js_url` (string)
|
||||||
|
|
||||||
- Added property `api_url` (string)
|
- Added property `api_url` (string)
|
||||||
|
|
||||||
- Changed property `public_key` (string)
|
- Changed property `public_key` (string)
|
||||||
> Public key, acquired your captcha Provider.
|
> Public key, acquired your captcha Provider.
|
||||||
|
|
||||||
##### `PATCH` /stages/captcha/{stage_uuid}/
|
##### `PATCH` /stages/captcha/{stage_uuid}/
|
||||||
@ -227,28 +227,28 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `js_url` (string)
|
- Added property `js_url` (string)
|
||||||
|
|
||||||
- Added property `api_url` (string)
|
- Added property `api_url` (string)
|
||||||
|
|
||||||
- Changed property `public_key` (string)
|
- Changed property `public_key` (string)
|
||||||
|
|
||||||
> Public key, acquired your captcha Provider.
|
> Public key, acquired your captcha Provider.
|
||||||
|
|
||||||
- Changed property `private_key` (string)
|
- Changed property `private_key` (string)
|
||||||
> Private key, acquired your captcha Provider.
|
> Private key, acquired your captcha Provider.
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `js_url` (string)
|
- Added property `js_url` (string)
|
||||||
|
|
||||||
- Added property `api_url` (string)
|
- Added property `api_url` (string)
|
||||||
|
|
||||||
- Changed property `public_key` (string)
|
- Changed property `public_key` (string)
|
||||||
> Public key, acquired your captcha Provider.
|
> Public key, acquired your captcha Provider.
|
||||||
|
|
||||||
##### `GET` /flows/executor/{flow_slug}/
|
##### `GET` /flows/executor/{flow_slug}/
|
||||||
@ -257,14 +257,14 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
Updated `ak-stage-captcha` component:
|
Updated `ak-stage-captcha` component:
|
||||||
New required properties:
|
New required properties:
|
||||||
|
|
||||||
- `js_url`
|
- `js_url`
|
||||||
|
|
||||||
* Added property `js_url` (string)
|
* Added property `js_url` (string)
|
||||||
|
|
||||||
##### `POST` /flows/executor/{flow_slug}/
|
##### `POST` /flows/executor/{flow_slug}/
|
||||||
|
|
||||||
@ -272,14 +272,14 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
Updated `ak-stage-captcha` component:
|
Updated `ak-stage-captcha` component:
|
||||||
New required properties:
|
New required properties:
|
||||||
|
|
||||||
- `js_url`
|
- `js_url`
|
||||||
|
|
||||||
* Added property `js_url` (string)
|
* Added property `js_url` (string)
|
||||||
|
|
||||||
##### `POST` /stages/captcha/
|
##### `POST` /stages/captcha/
|
||||||
|
|
||||||
@ -287,28 +287,28 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `js_url` (string)
|
- Added property `js_url` (string)
|
||||||
|
|
||||||
- Added property `api_url` (string)
|
- Added property `api_url` (string)
|
||||||
|
|
||||||
- Changed property `public_key` (string)
|
- Changed property `public_key` (string)
|
||||||
|
|
||||||
> Public key, acquired your captcha Provider.
|
> Public key, acquired your captcha Provider.
|
||||||
|
|
||||||
- Changed property `private_key` (string)
|
- Changed property `private_key` (string)
|
||||||
> Private key, acquired your captcha Provider.
|
> Private key, acquired your captcha Provider.
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **201 Created**
|
Changed response : **201 Created**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `js_url` (string)
|
- Added property `js_url` (string)
|
||||||
|
|
||||||
- Added property `api_url` (string)
|
- Added property `api_url` (string)
|
||||||
|
|
||||||
- Changed property `public_key` (string)
|
- Changed property `public_key` (string)
|
||||||
> Public key, acquired your captcha Provider.
|
> Public key, acquired your captcha Provider.
|
||||||
|
|
||||||
##### `GET` /stages/captcha/
|
##### `GET` /stages/captcha/
|
||||||
@ -317,15 +317,15 @@ Changed response : **201 Created**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > CaptchaStage Serializer
|
Changed items (object): > CaptchaStage Serializer
|
||||||
|
|
||||||
- Added property `js_url` (string)
|
- Added property `js_url` (string)
|
||||||
|
|
||||||
- Added property `api_url` (string)
|
- Added property `api_url` (string)
|
||||||
|
|
||||||
- Changed property `public_key` (string)
|
- Changed property `public_key` (string)
|
||||||
> Public key, acquired your captcha Provider.
|
> Public key, acquired your captcha Provider.
|
||||||
|
@ -9,14 +9,14 @@ slug: "/releases/2022.2"
|
|||||||
|
|
||||||
The integrated backup functionality has been removed due to the following reasons:
|
The integrated backup functionality has been removed due to the following reasons:
|
||||||
|
|
||||||
- It caused a lot of issues during restore, with things breaking and difficult to restore backups
|
- It caused a lot of issues during restore, with things breaking and difficult to restore backups
|
||||||
- Limited compatibility (only supported local and S3 backups)
|
- Limited compatibility (only supported local and S3 backups)
|
||||||
- Most environments already have a solution for backups, so we feel that investing more time into making this feature better should be spent on more important things.
|
- Most environments already have a solution for backups, so we feel that investing more time into making this feature better should be spent on more important things.
|
||||||
|
|
||||||
If you don't already have a standard backup solution for other applications, you can consider these replacements:
|
If you don't already have a standard backup solution for other applications, you can consider these replacements:
|
||||||
|
|
||||||
- https://github.com/kartoza/docker-pg-backup for docker-compose and
|
- https://github.com/kartoza/docker-pg-backup for docker-compose and
|
||||||
- https://devtron.ai/blog/creating-a-kubernetes-cron-job-to-backup-postgres-db/ or https://cwienczek.com/2020/06/simple-backup-of-postgres-database-in-kubernetes/ for Kubernetes
|
- https://devtron.ai/blog/creating-a-kubernetes-cron-job-to-backup-postgres-db/ or https://cwienczek.com/2020/06/simple-backup-of-postgres-database-in-kubernetes/ for Kubernetes
|
||||||
|
|
||||||
### Changed URLs for forward auth
|
### Changed URLs for forward auth
|
||||||
|
|
||||||
@ -30,38 +30,38 @@ In an authenticator validation stage you can now configure multiple configuratio
|
|||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- \*: add placeholder custom.css to easily allow user customisation
|
- \*: add placeholder custom.css to easily allow user customisation
|
||||||
- \*: rename akprox to outpost.goauthentik.io (#2266)
|
- \*: rename akprox to outpost.goauthentik.io (#2266)
|
||||||
- internal: don't attempt to lookup SNI Certificate if no SNI is sent
|
- internal: don't attempt to lookup SNI Certificate if no SNI is sent
|
||||||
- internal: improve error handling for internal reverse proxy
|
- internal: improve error handling for internal reverse proxy
|
||||||
- internal: increase logging for no hostname found
|
- internal: increase logging for no hostname found
|
||||||
- internal: remove uvicorn server header
|
- internal: remove uvicorn server header
|
||||||
- outposts: ensure keypair is set for SSH connections
|
- outposts: ensure keypair is set for SSH connections
|
||||||
- outposts: fix channel not always having a logger attribute
|
- outposts: fix channel not always having a logger attribute
|
||||||
- outposts: fix compare_ports to support both service and container ports
|
- outposts: fix compare_ports to support both service and container ports
|
||||||
- outposts: fix service reconciler re-creating services
|
- outposts: fix service reconciler re-creating services
|
||||||
- outposts: make local discovery configurable
|
- outposts: make local discovery configurable
|
||||||
- outposts: remove node_port on V1ServicePort checks to prevent service creation loops
|
- outposts: remove node_port on V1ServicePort checks to prevent service creation loops
|
||||||
- outposts/proxy: correctly check host in forward domain redirect
|
- outposts/proxy: correctly check host in forward domain redirect
|
||||||
- outposts/proxy: correctly handle ?rd= param
|
- outposts/proxy: correctly handle ?rd= param
|
||||||
- providers/oauth2: add support for explicit response_mode
|
- providers/oauth2: add support for explicit response_mode
|
||||||
- providers/oauth2: fix redirect_uri being lowercased on successful validation
|
- providers/oauth2: fix redirect_uri being lowercased on successful validation
|
||||||
- providers/proxy: enable TLS in ingress via traefik annotation
|
- providers/proxy: enable TLS in ingress via traefik annotation
|
||||||
- providers/proxy: improve error handling for invalid backend_override
|
- providers/proxy: improve error handling for invalid backend_override
|
||||||
- providers/proxy: remove leading slash to allow subdirectories in proxy
|
- providers/proxy: remove leading slash to allow subdirectories in proxy
|
||||||
- sources/ldap: log entire exception
|
- sources/ldap: log entire exception
|
||||||
- sources/ldap: use merger that only appends unique items to list
|
- sources/ldap: use merger that only appends unique items to list
|
||||||
- sources/saml: fix incorrect ProtocolBinding being sent
|
- sources/saml: fix incorrect ProtocolBinding being sent
|
||||||
- stages/authenticator_validate: add ability to select multiple configuration stages which the user can choose
|
- stages/authenticator_validate: add ability to select multiple configuration stages which the user can choose
|
||||||
- stages/authenticator_validate: fix handling when single configuration stage is selected
|
- stages/authenticator_validate: fix handling when single configuration stage is selected
|
||||||
- stages/authenticator_validate: handle non-existent device_challenges
|
- stages/authenticator_validate: handle non-existent device_challenges
|
||||||
- Translate /web/src/locales/en.po in de (#2291)
|
- Translate /web/src/locales/en.po in de (#2291)
|
||||||
- Translate /web/src/locales/en.po in pl (#2274)
|
- Translate /web/src/locales/en.po in pl (#2274)
|
||||||
- Translate /web/src/locales/en.po in zh_TW (#2263)
|
- Translate /web/src/locales/en.po in zh_TW (#2263)
|
||||||
- Translate /web/src/locales/en.po in zh-Hans (#2262)
|
- Translate /web/src/locales/en.po in zh-Hans (#2262)
|
||||||
- Translate /web/src/locales/en.po in zh-Hant (#2261)
|
- Translate /web/src/locales/en.po in zh-Hant (#2261)
|
||||||
- web/admin: fix invalid URLs in example proxy config
|
- web/admin: fix invalid URLs in example proxy config
|
||||||
- web/admin: fix mismatched icons in overview and lists
|
- web/admin: fix mismatched icons in overview and lists
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -21,43 +21,43 @@ To simplify the release process we don't publish explicitly tagged release-candi
|
|||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- core: add initial app launch url (#2367)
|
- core: add initial app launch url (#2367)
|
||||||
- core: customisable user settings (#2397)
|
- core: customisable user settings (#2397)
|
||||||
- core/api: allow filtering users by uid, add uid to search
|
- core/api: allow filtering users by uid, add uid to search
|
||||||
- internal/ldap: fix panic when parsing lists with mixed types
|
- internal/ldap: fix panic when parsing lists with mixed types
|
||||||
- lib: fix default geoip path
|
- lib: fix default geoip path
|
||||||
- providers/oauth2: fix invalid launch URL being generated
|
- providers/oauth2: fix invalid launch URL being generated
|
||||||
- providers/oauth2: initial client_credentials grant support (#2437)
|
- providers/oauth2: initial client_credentials grant support (#2437)
|
||||||
- providers/proxy: always set rd param in addition to session to prevent wrong url in session
|
- providers/proxy: always set rd param in addition to session to prevent wrong url in session
|
||||||
- web: cleanup default footer links
|
- web: cleanup default footer links
|
||||||
- web: prioritise ?locale parameter over saved locale
|
- web: prioritise ?locale parameter over saved locale
|
||||||
- web/admin: improve user and group management by showing related objects
|
- web/admin: improve user and group management by showing related objects
|
||||||
- web/admin: use searchable select field for users and groups in policy binding form
|
- web/admin: use searchable select field for users and groups in policy binding form
|
||||||
- web/flows: fix rendering of help text on prompt stages
|
- web/flows: fix rendering of help text on prompt stages
|
||||||
|
|
||||||
## Fixed in 2022.3.2
|
## Fixed in 2022.3.2
|
||||||
|
|
||||||
- core: replace uid with uuid search
|
- core: replace uid with uuid search
|
||||||
- flows: revert default flow user change
|
- flows: revert default flow user change
|
||||||
- lib: lower default sample rate
|
- lib: lower default sample rate
|
||||||
- sources/ldap: fix parent_group not being applied
|
- sources/ldap: fix parent_group not being applied
|
||||||
- stages/authenticator_validate: fix passwordless flows not working
|
- stages/authenticator_validate: fix passwordless flows not working
|
||||||
- web/elements: fix error with blank SearchSelect elements in forms
|
- web/elements: fix error with blank SearchSelect elements in forms
|
||||||
- web/elements: fix search select background in dark mode
|
- web/elements: fix search select background in dark mode
|
||||||
- web/elements: fix search-select hover background
|
- web/elements: fix search-select hover background
|
||||||
- web/user: filter applications by launch URL lto show empty state
|
- web/user: filter applications by launch URL lto show empty state
|
||||||
- web/user: fix duplicate help text in prompts
|
- web/user: fix duplicate help text in prompts
|
||||||
|
|
||||||
## Fixed in 2022.3.3
|
## Fixed in 2022.3.3
|
||||||
|
|
||||||
- core: fix provider launch URL being prioritised over manually configured launch URL
|
- core: fix provider launch URL being prioritised over manually configured launch URL
|
||||||
- crypto: open files in read-only mode for importing (#2536)
|
- crypto: open files in read-only mode for importing (#2536)
|
||||||
- outposts/ldap: prevent operations error from nil dereference (#2447)
|
- outposts/ldap: prevent operations error from nil dereference (#2447)
|
||||||
- outposts/proxy: use Prefix in ingress for k8s
|
- outposts/proxy: use Prefix in ingress for k8s
|
||||||
- web: fix style for selected item in select in dark mode
|
- web: fix style for selected item in select in dark mode
|
||||||
- web/admin: default to not include current session in flow play, add option to start with current session
|
- web/admin: default to not include current session in flow play, add option to start with current session
|
||||||
- web/admin: fix user defaulting to 0 when not set in PolicyBindingForm
|
- web/admin: fix user defaulting to 0 when not set in PolicyBindingForm
|
||||||
- web/elements: make SearchSelect optionally blankable
|
- web/elements: make SearchSelect optionally blankable
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,50 +5,50 @@ slug: "/releases/2022.4"
|
|||||||
|
|
||||||
## Breaking changes
|
## Breaking changes
|
||||||
|
|
||||||
- Removal of HTTP Basic authentication for API requests
|
- Removal of HTTP Basic authentication for API requests
|
||||||
|
|
||||||
For legacy reasons, authentik used to support HTTP-Basic authenticated requests, using the token as a password. This has been removed.
|
For legacy reasons, authentik used to support HTTP-Basic authenticated requests, using the token as a password. This has been removed.
|
||||||
|
|
||||||
- Removal of deprecated context in Expression policies used in prompt stages
|
- Removal of deprecated context in Expression policies used in prompt stages
|
||||||
|
|
||||||
Before this version, you could use both `context['*field_name*']` and `context['prompt_data']['*field_name*']`. The former one has been removed as it could overwrite other data in the context if the field name is the same as another context value.
|
Before this version, you could use both `context['*field_name*']` and `context['prompt_data']['*field_name*']`. The former one has been removed as it could overwrite other data in the context if the field name is the same as another context value.
|
||||||
|
|
||||||
- Added name field for invitations
|
- Added name field for invitations
|
||||||
|
|
||||||
Invitations now require a name, used to better identify their purpose.
|
Invitations now require a name, used to better identify their purpose.
|
||||||
|
|
||||||
## New features
|
## New features
|
||||||
|
|
||||||
- Application Grouping
|
- Application Grouping
|
||||||
|
|
||||||
Applications can now be grouped together to better organise connected applications in the user dashboard.
|
Applications can now be grouped together to better organise connected applications in the user dashboard.
|
||||||
|
|
||||||
- JWT authentication for `client_credentials` grants
|
- JWT authentication for `client_credentials` grants
|
||||||
|
|
||||||
Providers can now be configured to accept JWTs signed by configured certificates, which makes it a lot easier to services access to authentik, when an existing machine/service identity is provided (for example, this can be used to let Kubernetes Pods authenticate themselves to authentik via their service account)
|
Providers can now be configured to accept JWTs signed by configured certificates, which makes it a lot easier to services access to authentik, when an existing machine/service identity is provided (for example, this can be used to let Kubernetes Pods authenticate themselves to authentik via their service account)
|
||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- core: add method to set key of token
|
- core: add method to set key of token
|
||||||
- core: add num_pk to group for applications that need a numerical group id
|
- core: add num_pk to group for applications that need a numerical group id
|
||||||
- internal: disable HTML encoding in go-generated log messages
|
- internal: disable HTML encoding in go-generated log messages
|
||||||
- lifecycle: fix password and hostname in redis URI not properly quoted
|
- lifecycle: fix password and hostname in redis URI not properly quoted
|
||||||
- outposts: check if docker ports should be mapped before comparing ports
|
- outposts: check if docker ports should be mapped before comparing ports
|
||||||
- policies: add policy log messages to test endpoints
|
- policies: add policy log messages to test endpoints
|
||||||
- providers/oauth2: map internal groups to GitHub teams in GHE OAuth emulation (#2497)
|
- providers/oauth2: map internal groups to GitHub teams in GHE OAuth emulation (#2497)
|
||||||
- providers/oauth2: pass scope and other parameters to access policy request context
|
- providers/oauth2: pass scope and other parameters to access policy request context
|
||||||
- stages/email: allow overriding of destination email in plan context
|
- stages/email: allow overriding of destination email in plan context
|
||||||
- stages/invitation: add invitation name
|
- stages/invitation: add invitation name
|
||||||
- stages/prompt: filter rest_framework.fields.empty when field is not required
|
- stages/prompt: filter rest_framework.fields.empty when field is not required
|
||||||
- stages/prompt: fix non-required fields not allowing blank values
|
- stages/prompt: fix non-required fields not allowing blank values
|
||||||
- stages/prompt: set field default based on placeholder
|
- stages/prompt: set field default based on placeholder
|
||||||
- tenants: add tenant-level attributes, applied to users based on request
|
- tenants: add tenant-level attributes, applied to users based on request
|
||||||
- web: live-convert to slug in fields where only slugs are allowed
|
- web: live-convert to slug in fields where only slugs are allowed
|
||||||
- web: migrate dropdowns to wizards (#2633)
|
- web: migrate dropdowns to wizards (#2633)
|
||||||
- web/admin: allow editing of invitations
|
- web/admin: allow editing of invitations
|
||||||
- web/admin: fix missing protocols on generated nginx config
|
- web/admin: fix missing protocols on generated nginx config
|
||||||
- web/admin: trigger update when provider wizard finishes
|
- web/admin: trigger update when provider wizard finishes
|
||||||
- web/user: add column layouts
|
- web/user: add column layouts
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,28 +5,28 @@ slug: "/releases/2022.5"
|
|||||||
|
|
||||||
## Breaking changes
|
## Breaking changes
|
||||||
|
|
||||||
- Twitter Source has been migrated to OAuth2
|
- Twitter Source has been migrated to OAuth2
|
||||||
|
|
||||||
This requires some reconfiguration on both Twitter's and authentik's side. Check out the new Twitter integration docs [here](../../users-sources/sources/social-logins/twitter/index.md).
|
This requires some reconfiguration on both Twitter's and authentik's side. Check out the new Twitter integration docs [here](../../users-sources/sources/social-logins/twitter/index.md).
|
||||||
|
|
||||||
- OAuth Provider: Redirect URIs are now checked using regular expressions
|
- OAuth Provider: Redirect URIs are now checked using regular expressions
|
||||||
|
|
||||||
Allowed Redirect URIs now accepts regular expressions to check redirect URIs to support wildcards. In most cases this will not change anything, however casing is also important now. Meaning if your redirect URI is "https://Foo.bar" and allowed is "https://foo.bar", authorization will not be allowed. Additionally, the special handling when _Redirect URIs/Origins_ is set to `*` has been removed. To get the same behaviour, set _Redirect URIs/Origins_ to `.+`.
|
Allowed Redirect URIs now accepts regular expressions to check redirect URIs to support wildcards. In most cases this will not change anything, however casing is also important now. Meaning if your redirect URI is "https://Foo.bar" and allowed is "https://foo.bar", authorization will not be allowed. Additionally, the special handling when _Redirect URIs/Origins_ is set to `*` has been removed. To get the same behaviour, set _Redirect URIs/Origins_ to `.+`.
|
||||||
|
|
||||||
## New features
|
## New features
|
||||||
|
|
||||||
- LDAP Outpost cached binding
|
- LDAP Outpost cached binding
|
||||||
|
|
||||||
Instead of always executing the configured flow when a new Bind request is received, the provider can now be configured to cache the session from the initial flow execution, and directly validate credentials in the outpost. This drastically improves the bind performance.
|
Instead of always executing the configured flow when a new Bind request is received, the provider can now be configured to cache the session from the initial flow execution, and directly validate credentials in the outpost. This drastically improves the bind performance.
|
||||||
|
|
||||||
See [LDAP provider](../../add-secure-apps/providers/ldap/index.md#cached-bind)
|
See [LDAP provider](../../add-secure-apps/providers/ldap/index.md#cached-bind)
|
||||||
|
|
||||||
- OAuth2: Add support for `form_post` response mode
|
- OAuth2: Add support for `form_post` response mode
|
||||||
- Don't prompt users for MFA when they've authenticated themselves within a time period
|
- Don't prompt users for MFA when they've authenticated themselves within a time period
|
||||||
|
|
||||||
You can now configure any [Authenticator Validation Stage](../../add-secure-apps/flows-stages/stages/authenticator_validate/index.md) stage to not ask for MFA validation if the user has previously authenticated themselves with an MFA device (of any of the selected classes) in the `Last validation threshold`.
|
You can now configure any [Authenticator Validation Stage](../../add-secure-apps/flows-stages/stages/authenticator_validate/index.md) stage to not ask for MFA validation if the user has previously authenticated themselves with an MFA device (of any of the selected classes) in the `Last validation threshold`.
|
||||||
|
|
||||||
- Optimise bundling of web assets
|
- Optimise bundling of web assets
|
||||||
|
|
||||||
Previous versions had the entire frontend bundled in a single file (per interface). This has been revamped to produce smaller bundle sizes for each interface to improve the loading times.
|
Previous versions had the entire frontend bundled in a single file (per interface). This has been revamped to produce smaller bundle sizes for each interface to improve the loading times.
|
||||||
|
|
||||||
@ -36,69 +36,69 @@ slug: "/releases/2022.5"
|
|||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- \*: decrease frequency of background tasks, smear tasks based on name and fqdn
|
- \*: decrease frequency of background tasks, smear tasks based on name and fqdn
|
||||||
- api: fix OwnerFilter filtering out objects for superusers
|
- api: fix OwnerFilter filtering out objects for superusers
|
||||||
- core: add custom shell command which imports all models and creates events for model events
|
- core: add custom shell command which imports all models and creates events for model events
|
||||||
- core: add flag to globally disable impersonation
|
- core: add flag to globally disable impersonation
|
||||||
- events: fix created events only being logged as debug level
|
- events: fix created events only being logged as debug level
|
||||||
- flows: handle flow title formatting error better, add user to flow title context
|
- flows: handle flow title formatting error better, add user to flow title context
|
||||||
- internal: add signal handler for SIGTERM
|
- internal: add signal handler for SIGTERM
|
||||||
- outposts/ldap: cached bind (#2824)
|
- outposts/ldap: cached bind (#2824)
|
||||||
- policies: fix current user not being set in server-side policy deny
|
- policies: fix current user not being set in server-side policy deny
|
||||||
- providers/oauth2: add support for form_post response mode (#2818)
|
- providers/oauth2: add support for form_post response mode (#2818)
|
||||||
- providers/oauth2: allow regex matches for allowed redirect_uri
|
- providers/oauth2: allow regex matches for allowed redirect_uri
|
||||||
- providers/oauth2: don't create events before client_id can be verified to prevent spam
|
- providers/oauth2: don't create events before client_id can be verified to prevent spam
|
||||||
- providers/saml: make SAML metadata generation consistent
|
- providers/saml: make SAML metadata generation consistent
|
||||||
- root: export poetry deps to requirements.txt so we don't need poetry … (#2823)
|
- root: export poetry deps to requirements.txt so we don't need poetry … (#2823)
|
||||||
- root: handle JSON error in metrics
|
- root: handle JSON error in metrics
|
||||||
- root: set SESSION_SAVE_EVERY_REQUEST to enable sliding sessions
|
- root: set SESSION_SAVE_EVERY_REQUEST to enable sliding sessions
|
||||||
- sources/oauth: Fix wording for OAuth source names (#2732)
|
- sources/oauth: Fix wording for OAuth source names (#2732)
|
||||||
- stages/authenticator_validate: remember (#2828)
|
- stages/authenticator_validate: remember (#2828)
|
||||||
- stages/identification: redirect with QS to keep next parameters (#2909)
|
- stages/identification: redirect with QS to keep next parameters (#2909)
|
||||||
- stages/user_delete: fix delete stage failing when pending user is not explicitly set
|
- stages/user_delete: fix delete stage failing when pending user is not explicitly set
|
||||||
- web: fix dateTimeLocal() dropping local timezone
|
- web: fix dateTimeLocal() dropping local timezone
|
||||||
- web: lazy load parts of interfaces (#2864)
|
- web: lazy load parts of interfaces (#2864)
|
||||||
- web/user: add missing checkbox element in user settings (#2762)
|
- web/user: add missing checkbox element in user settings (#2762)
|
||||||
|
|
||||||
## Fixed in 2022.5.2
|
## Fixed in 2022.5.2
|
||||||
|
|
||||||
- internal: fix nil pointer dereference in ldap outpost
|
- internal: fix nil pointer dereference in ldap outpost
|
||||||
- internal: revert cookie path on proxy causing redirect loops
|
- internal: revert cookie path on proxy causing redirect loops
|
||||||
- outposts: allow externally managed SSH Config for outposts (#2917)
|
- outposts: allow externally managed SSH Config for outposts (#2917)
|
||||||
- outposts: ensure the user and token are created on initial outpost save
|
- outposts: ensure the user and token are created on initial outpost save
|
||||||
- root: fix missing curl in dockerfile
|
- root: fix missing curl in dockerfile
|
||||||
- web/admin: improve error handling in TokenCopyButton
|
- web/admin: improve error handling in TokenCopyButton
|
||||||
- web/admin: make external host clickable
|
- web/admin: make external host clickable
|
||||||
- web/user: fix use sub-pages not redirecting back to the subpage
|
- web/user: fix use sub-pages not redirecting back to the subpage
|
||||||
|
|
||||||
## Fixed in 2022.5.3
|
## Fixed in 2022.5.3
|
||||||
|
|
||||||
- api: migrate to openapi generator v6 (#2968)
|
- api: migrate to openapi generator v6 (#2968)
|
||||||
- api: update API browser to match admin UI and auto-switch theme
|
- api: update API browser to match admin UI and auto-switch theme
|
||||||
- core: fix username validator not allowing changes that can be done via flows
|
- core: fix username validator not allowing changes that can be done via flows
|
||||||
- crypto: set SAN in default generated Certificate to semi-random domain
|
- crypto: set SAN in default generated Certificate to semi-random domain
|
||||||
- ensure all viewsets have filter and search and add tests (#2946)
|
- ensure all viewsets have filter and search and add tests (#2946)
|
||||||
- events: fix transport not allowing blank values
|
- events: fix transport not allowing blank values
|
||||||
- flows: fix re-imports of entries with identical PK re-creating objects (#2941)
|
- flows: fix re-imports of entries with identical PK re-creating objects (#2941)
|
||||||
- providers/oauth2: handle attribute errors when validation JWK contains private key
|
- providers/oauth2: handle attribute errors when validation JWK contains private key
|
||||||
- providers/oauth2: improve error handling for invalid regular expressions
|
- providers/oauth2: improve error handling for invalid regular expressions
|
||||||
- providers/oauth2: only set expiry on user when it was freshly created
|
- providers/oauth2: only set expiry on user when it was freshly created
|
||||||
- providers/oauth2: regex-escape URLs when set to blank
|
- providers/oauth2: regex-escape URLs when set to blank
|
||||||
- providers/oauth2: set related_name for many-to-many connections so used by detects the connection
|
- providers/oauth2: set related_name for many-to-many connections so used by detects the connection
|
||||||
- providers/saml: handle parse error
|
- providers/saml: handle parse error
|
||||||
- root: Add docker-compose postgresql and redis healthchecks (#2958)
|
- root: Add docker-compose postgresql and redis healthchecks (#2958)
|
||||||
- stages/user_write: fix typo in request context variable
|
- stages/user_write: fix typo in request context variable
|
||||||
- web: decrease elements that refresh on global refresh signal
|
- web: decrease elements that refresh on global refresh signal
|
||||||
- web/admin: add note that regex is used for redirect URIs
|
- web/admin: add note that regex is used for redirect URIs
|
||||||
- web/admin: add set password button to user view page
|
- web/admin: add set password button to user view page
|
||||||
- web/admin: fix broken flow execute link (#2940)
|
- web/admin: fix broken flow execute link (#2940)
|
||||||
- web/admin: fix display of LDAP bind mode
|
- web/admin: fix display of LDAP bind mode
|
||||||
- web/admin: fix flow diagram not updating on flow changes
|
- web/admin: fix flow diagram not updating on flow changes
|
||||||
- web/admin: fix phrasing on LDAP provider form for bind mode
|
- web/admin: fix phrasing on LDAP provider form for bind mode
|
||||||
- web/admin: refactor table refresh to preserve selected/expanded elements correctly
|
- web/admin: refactor table refresh to preserve selected/expanded elements correctly
|
||||||
- web/elements: fix missing click handler on wizard close button
|
- web/elements: fix missing click handler on wizard close button
|
||||||
- web/elements: fix used_by refreshing for all elements when using DeleteBulkForm
|
- web/elements: fix used_by refreshing for all elements when using DeleteBulkForm
|
||||||
- website/docs: Fix misconfiguration causing POST requests behind Nginx to timeout (#2967)
|
- website/docs: Fix misconfiguration causing POST requests behind Nginx to timeout (#2967)
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,80 +5,80 @@ slug: "/releases/2022.6"
|
|||||||
|
|
||||||
## New features
|
## New features
|
||||||
|
|
||||||
- Added OIDC well-known and JWKS URL in OAuth Source
|
- Added OIDC well-known and JWKS URL in OAuth Source
|
||||||
|
|
||||||
These fields can be used to automatically configure OAuth Sources based on the [OpenID Connect Discovery Spec](https://openid.net/specs/openid-connect-discovery-1_0.html). Additionally, you can manually define a JWKS URL or raw JWKS data, and this can be used for Machine-to-machine authentication for OAuth2 Providers.
|
These fields can be used to automatically configure OAuth Sources based on the [OpenID Connect Discovery Spec](https://openid.net/specs/openid-connect-discovery-1_0.html). Additionally, you can manually define a JWKS URL or raw JWKS data, and this can be used for Machine-to-machine authentication for OAuth2 Providers.
|
||||||
|
|
||||||
- Notifications are no longer created by default
|
- Notifications are no longer created by default
|
||||||
|
|
||||||
Instead of creating a Notification with each transport, there is now a new Transport mode called "Local", which locally creates the Notifications. This also adds the ability to customize the notification using a mapping.
|
Instead of creating a Notification with each transport, there is now a new Transport mode called "Local", which locally creates the Notifications. This also adds the ability to customize the notification using a mapping.
|
||||||
|
|
||||||
- MFA Validation threshold has been migrated to signed cookies
|
- MFA Validation threshold has been migrated to signed cookies
|
||||||
|
|
||||||
Last MFA validation is now saved in a signed cookie, which changes the behavior so that only the current browser is affected by MFA validation, and an attacker cannot exploit the fact that a user has recently authenticated with MFA.
|
Last MFA validation is now saved in a signed cookie, which changes the behavior so that only the current browser is affected by MFA validation, and an attacker cannot exploit the fact that a user has recently authenticated with MFA.
|
||||||
|
|
||||||
- Verification-only SMS Devices
|
- Verification-only SMS Devices
|
||||||
|
|
||||||
SMS authenticator stages can now be configured to hash the phone number. This is useful if you want to require your users to configure and confirm their phone numbers, without saving them in a readable-format.
|
SMS authenticator stages can now be configured to hash the phone number. This is useful if you want to require your users to configure and confirm their phone numbers, without saving them in a readable-format.
|
||||||
|
|
||||||
- The LDAP outpost would incorrectly return `groupOfUniqueNames` as a group class when the members where returned in a manner like `groupOfNames` requires. `groupOfNames` has been added as an objectClass for LDAP Groups, and `groupOfUniqueNames` will be removed in the next version.
|
- The LDAP outpost would incorrectly return `groupOfUniqueNames` as a group class when the members where returned in a manner like `groupOfNames` requires. `groupOfNames` has been added as an objectClass for LDAP Groups, and `groupOfUniqueNames` will be removed in the next version.
|
||||||
|
|
||||||
- Preview support for forward auth when using Envoy
|
- Preview support for forward auth when using Envoy
|
||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- api: migrate to openapi generator v6 (#2968)
|
- api: migrate to openapi generator v6 (#2968)
|
||||||
- api: update API browser to match admin UI and auto-switch theme
|
- api: update API browser to match admin UI and auto-switch theme
|
||||||
- core: improve loading speed of flow background
|
- core: improve loading speed of flow background
|
||||||
- ensure all viewsets have filter and search and add tests (#2946)
|
- ensure all viewsets have filter and search and add tests (#2946)
|
||||||
- flows: fix re-imports of entries with identical PK re-creating objects
|
- flows: fix re-imports of entries with identical PK re-creating objects
|
||||||
- lifecycle: cleanup prometheus metrics, remove PII (#2972)
|
- lifecycle: cleanup prometheus metrics, remove PII (#2972)
|
||||||
- policies: fix incorrect bound_to count
|
- policies: fix incorrect bound_to count
|
||||||
- providers/oauth2: add configuration error event when wrong redirect uri is used in token request
|
- providers/oauth2: add configuration error event when wrong redirect uri is used in token request
|
||||||
- providers/oauth2: handle attribute errors when validation JWK contains private key
|
- providers/oauth2: handle attribute errors when validation JWK contains private key
|
||||||
- providers/oauth2: only set expiry on user when it was freshly created
|
- providers/oauth2: only set expiry on user when it was freshly created
|
||||||
- providers/oauth2: regex-escape URLs when set to blank
|
- providers/oauth2: regex-escape URLs when set to blank
|
||||||
- root: Add docker-compose postgresql and redis healthchecks (#2958)
|
- root: Add docker-compose postgresql and redis healthchecks (#2958)
|
||||||
- root: disable session_save_every_request as it causes race conditions
|
- root: disable session_save_every_request as it causes race conditions
|
||||||
- web/elements: fix top-right dialog close button not resetting form
|
- web/elements: fix top-right dialog close button not resetting form
|
||||||
- web/elements: fix used_by refreshing for all elements when using DeleteBulkForm
|
- web/elements: fix used_by refreshing for all elements when using DeleteBulkForm
|
||||||
- web/user: fix static prompt fields being rendered with label
|
- web/user: fix static prompt fields being rendered with label
|
||||||
- web/user: improve ux for restarting user settings flow
|
- web/user: improve ux for restarting user settings flow
|
||||||
|
|
||||||
## Fixed in 2022.6.2
|
## Fixed in 2022.6.2
|
||||||
|
|
||||||
- \*: make user logging more consistent
|
- \*: make user logging more consistent
|
||||||
- core: add additional filters to source viewset
|
- core: add additional filters to source viewset
|
||||||
- core: add setting to open application launch URL in a new browser tab (#3037)
|
- core: add setting to open application launch URL in a new browser tab (#3037)
|
||||||
- core: add slug to built-in source
|
- core: add slug to built-in source
|
||||||
- events: fix error when attempting to create event with GeoIP City in context
|
- events: fix error when attempting to create event with GeoIP City in context
|
||||||
- providers/ldap: fix existing binder not being carried forward correctly
|
- providers/ldap: fix existing binder not being carried forward correctly
|
||||||
- providers/oauth2: add JWKS URL to OAuth2ProviderSetupURLs
|
- providers/oauth2: add JWKS URL to OAuth2ProviderSetupURLs
|
||||||
- providers/proxy: use same redirect-save code for all modes
|
- providers/proxy: use same redirect-save code for all modes
|
||||||
- sources/oauth: fix twitter client missing basic auth
|
- sources/oauth: fix twitter client missing basic auth
|
||||||
- stages/authenticator_validate: fix error in passwordless webauthn
|
- stages/authenticator_validate: fix error in passwordless webauthn
|
||||||
- web/elements: add error handler when table fails to fetch objects
|
- web/elements: add error handler when table fails to fetch objects
|
||||||
|
|
||||||
## Fixed in 2022.6.3
|
## Fixed in 2022.6.3
|
||||||
|
|
||||||
- core: fix migrations when creating bootstrap token
|
- core: fix migrations when creating bootstrap token
|
||||||
- internal: dont sample gunicorn proxied requests
|
- internal: dont sample gunicorn proxied requests
|
||||||
- internal: fix routing to embedded outpost
|
- internal: fix routing to embedded outpost
|
||||||
- internal: skip tracing for go healthcheck and metrics endpoints
|
- internal: skip tracing for go healthcheck and metrics endpoints
|
||||||
- lifecycle: run bootstrap tasks inline when using automated install
|
- lifecycle: run bootstrap tasks inline when using automated install
|
||||||
- policies: consolidate log user and application
|
- policies: consolidate log user and application
|
||||||
- providers/oauth2: add test to ensure capitalised redirect_uri isn't changed
|
- providers/oauth2: add test to ensure capitalised redirect_uri isn't changed
|
||||||
- providers/oauth2: dont lowercase URL for token requests (#3114)
|
- providers/oauth2: dont lowercase URL for token requests (#3114)
|
||||||
- providers/oauth2: if a redirect_uri cannot be parsed as regex, compare strict (#3070)
|
- providers/oauth2: if a redirect_uri cannot be parsed as regex, compare strict (#3070)
|
||||||
- providers/proxy: only send misconfiguration event once
|
- providers/proxy: only send misconfiguration event once
|
||||||
- root: ignore healthcheck routes in sentry tracing
|
- root: ignore healthcheck routes in sentry tracing
|
||||||
- stages/authenticator_validate: add webauthn tests (#3069)
|
- stages/authenticator_validate: add webauthn tests (#3069)
|
||||||
- web/admin: lint bound group under policies
|
- web/admin: lint bound group under policies
|
||||||
- web/admin: remove invalid requirement for usernames
|
- web/admin: remove invalid requirement for usernames
|
||||||
- web/elements: add spinner when loading dynamic routes
|
- web/elements: add spinner when loading dynamic routes
|
||||||
- web/flows: add divider to identification stage for security key
|
- web/flows: add divider to identification stage for security key
|
||||||
- web/flows: fix error when webauthn operations failed and user retries
|
- web/flows: fix error when webauthn operations failed and user retries
|
||||||
- web/flows: remove autofocus from password field of identifications stage
|
- web/flows: remove autofocus from password field of identifications stage
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,97 +5,97 @@ slug: "/releases/2022.7"
|
|||||||
|
|
||||||
## Breaking changes
|
## Breaking changes
|
||||||
|
|
||||||
- Removal of verification certificates for Machine-to-Machine authentication in OAuth 2 Provider
|
- Removal of verification certificates for Machine-to-Machine authentication in OAuth 2 Provider
|
||||||
|
|
||||||
Instead, create an OAuth Source with the certificate configured as JWKS Data, and enable the source in the provider.
|
Instead, create an OAuth Source with the certificate configured as JWKS Data, and enable the source in the provider.
|
||||||
|
|
||||||
- Maximum Limit of group recursion
|
- Maximum Limit of group recursion
|
||||||
|
|
||||||
In earlier versions, cyclic group relations can lead to a deadlock when one of groups in the relationship are bound to an application/flow/etc.
|
In earlier versions, cyclic group relations can lead to a deadlock when one of groups in the relationship are bound to an application/flow/etc.
|
||||||
This is now limited to 20 levels of recursion.
|
This is now limited to 20 levels of recursion.
|
||||||
|
|
||||||
- Change in context behaviour for policies executed within flows
|
- Change in context behaviour for policies executed within flows
|
||||||
|
|
||||||
In previous versions, the policy context would be set to a reference to the currently active flow plan context. This makes it so any changes to `context` wre directly reflected in the flow context. The context has been changed to only include the values, and as such updates like this won't be reflected in the flow. Instead, `context['flow_plan']` is now set, which contains a full reference to the flow Plan, allowing for more customisability than previously. Context changes can be mad by modifying `context['flow_plan'].context`.
|
In previous versions, the policy context would be set to a reference to the currently active flow plan context. This makes it so any changes to `context` wre directly reflected in the flow context. The context has been changed to only include the values, and as such updates like this won't be reflected in the flow. Instead, `context['flow_plan']` is now set, which contains a full reference to the flow Plan, allowing for more customisability than previously. Context changes can be mad by modifying `context['flow_plan'].context`.
|
||||||
|
|
||||||
## New features
|
## New features
|
||||||
|
|
||||||
- User paths
|
- User paths
|
||||||
|
|
||||||
To better organize users, they can now be assigned a path. This allows for organization of users based on sources they enrolled with/got imported from, organizational structure or any other structure.
|
To better organize users, they can now be assigned a path. This allows for organization of users based on sources they enrolled with/got imported from, organizational structure or any other structure.
|
||||||
|
|
||||||
Sources now have a path template to specify which path users created by it should be assigned. Additionally, you can set the path in the user_write stage in any flow, and it can be dynamically overwritten within a flow's context.
|
Sources now have a path template to specify which path users created by it should be assigned. Additionally, you can set the path in the user_write stage in any flow, and it can be dynamically overwritten within a flow's context.
|
||||||
|
|
||||||
- API Authentication using JWT
|
- API Authentication using JWT
|
||||||
|
|
||||||
OAuth Refresh tokens that have been issued with the scope `goauthentik.io/api` can now be used to authenticate to the API on behalf of the user the token belongs to.
|
OAuth Refresh tokens that have been issued with the scope `goauthentik.io/api` can now be used to authenticate to the API on behalf of the user the token belongs to.
|
||||||
|
|
||||||
- Version-family tagged Container images
|
- Version-family tagged Container images
|
||||||
|
|
||||||
Instead of having to choose between using the `:latest` tag and explicit versions like `:2022.7.1`, there are now also version-family tags (:2022.7). This allows for sticking with a single version but still getting bugfix updates.
|
Instead of having to choose between using the `:latest` tag and explicit versions like `:2022.7.1`, there are now also version-family tags (:2022.7). This allows for sticking with a single version but still getting bugfix updates.
|
||||||
|
|
||||||
- OAuth2 Provider default Scopes
|
- OAuth2 Provider default Scopes
|
||||||
|
|
||||||
Starting with authentik 2022.7, when an OAuth client doesn't specify any scopes, authentik will treat the request as if all the configured scopes of that provider had been requested. Normal consent is still required depending on the configured flow. No special scopes will be added, as those can't be selected in the configuration.
|
Starting with authentik 2022.7, when an OAuth client doesn't specify any scopes, authentik will treat the request as if all the configured scopes of that provider had been requested. Normal consent is still required depending on the configured flow. No special scopes will be added, as those can't be selected in the configuration.
|
||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- \*: define prometheus metrics in apps to prevent re-import
|
- \*: define prometheus metrics in apps to prevent re-import
|
||||||
- api: add basic jwt auth support with required scope (#2624)
|
- api: add basic jwt auth support with required scope (#2624)
|
||||||
- ci: add version family (#3059)
|
- ci: add version family (#3059)
|
||||||
- core: add limit of 20 to group recursion
|
- core: add limit of 20 to group recursion
|
||||||
- core: create FlowToken instead of regular token for generated recovery links (#3193)
|
- core: create FlowToken instead of regular token for generated recovery links (#3193)
|
||||||
- core: mark session as modified instead of saving it directly to bump expiry
|
- core: mark session as modified instead of saving it directly to bump expiry
|
||||||
- core: re-create anonymous user when repairing permissions
|
- core: re-create anonymous user when repairing permissions
|
||||||
- core: user paths (#3085)
|
- core: user paths (#3085)
|
||||||
- flows: add shortcut to redirect current flow (#3192)
|
- flows: add shortcut to redirect current flow (#3192)
|
||||||
- flows: denied action (#3194)
|
- flows: denied action (#3194)
|
||||||
- flows: show messages from ak_message when flow is denied
|
- flows: show messages from ak_message when flow is denied
|
||||||
- internal: failback with self-signed cert if cert for tenant fails to load
|
- internal: failback with self-signed cert if cert for tenant fails to load
|
||||||
- internal: fix nil pointer reference
|
- internal: fix nil pointer reference
|
||||||
- internal: skip tracing for go healthcheck and metrics endpoints
|
- internal: skip tracing for go healthcheck and metrics endpoints
|
||||||
- lifecycle: fix confusing success messages in startup healthiness check
|
- lifecycle: fix confusing success messages in startup healthiness check
|
||||||
- lifecycle: run bootstrap tasks inline when using automated install
|
- lifecycle: run bootstrap tasks inline when using automated install
|
||||||
- lifecycle: Update postgres healthcheck for compose with user information (#3143)
|
- lifecycle: Update postgres healthcheck for compose with user information (#3143)
|
||||||
- policies: consolidate log user and application
|
- policies: consolidate log user and application
|
||||||
- providers/oauth2: dont lowercase URL for token requests (#3114)
|
- providers/oauth2: dont lowercase URL for token requests (#3114)
|
||||||
- providers/oauth2: ensure refresh tokens are URL safe
|
- providers/oauth2: ensure refresh tokens are URL safe
|
||||||
- providers/oauth2: fix OAuth form_post response mode for code response_type
|
- providers/oauth2: fix OAuth form_post response mode for code response_type
|
||||||
- providers/oauth2: if a redirect_uri cannot be parsed as regex, compare strict (#3070)
|
- providers/oauth2: if a redirect_uri cannot be parsed as regex, compare strict (#3070)
|
||||||
- providers/oauth2: if no scopes are sent in authorize request, select all configured scopes
|
- providers/oauth2: if no scopes are sent in authorize request, select all configured scopes
|
||||||
- providers/oauth2: remove deprecated verification_keys (#3071)
|
- providers/oauth2: remove deprecated verification_keys (#3071)
|
||||||
- providers/oauth2: token revoke (#3077)
|
- providers/oauth2: token revoke (#3077)
|
||||||
- providers/proxy: only send misconfiguration event once
|
- providers/proxy: only send misconfiguration event once
|
||||||
- root: ignore healthcheck routes in sentry tracing
|
- root: ignore healthcheck routes in sentry tracing
|
||||||
- sources/ldap: add configuration for LDAP Source ciphers
|
- sources/ldap: add configuration for LDAP Source ciphers
|
||||||
- web: fix redirect when accessing authentik URLs authenticated
|
- web: fix redirect when accessing authentik URLs authenticated
|
||||||
- web: improve detection for locales
|
- web: improve detection for locales
|
||||||
- web/admin: default to users path in sidebar link
|
- web/admin: default to users path in sidebar link
|
||||||
- web/admin: link bound group under policies
|
- web/admin: link bound group under policies
|
||||||
- web/admin: only pre-select oauth2 provider key if creating a new instance
|
- web/admin: only pre-select oauth2 provider key if creating a new instance
|
||||||
- web/admin: remove invalid requirement for usernames
|
- web/admin: remove invalid requirement for usernames
|
||||||
- web/elements: add spinner when loading dynamic routes
|
- web/elements: add spinner when loading dynamic routes
|
||||||
- web/elements: auto-switch themes for codemirror
|
- web/elements: auto-switch themes for codemirror
|
||||||
- web/flows: add divider to identification stage for security key
|
- web/flows: add divider to identification stage for security key
|
||||||
- web/flows: fix error when webauthn operations failed and user retries
|
- web/flows: fix error when webauthn operations failed and user retries
|
||||||
- web/flows: remove autofocus from password field of identifications stage
|
- web/flows: remove autofocus from password field of identifications stage
|
||||||
- web/flows: statically import webauthn-related stages for safari issues
|
- web/flows: statically import webauthn-related stages for safari issues
|
||||||
|
|
||||||
## Fixed in 2022.7.2
|
## Fixed in 2022.7.2
|
||||||
|
|
||||||
- flows: fix OOB flow incorrectly setting pending user
|
- flows: fix OOB flow incorrectly setting pending user
|
||||||
- stages/prompt: add basic file field (#3156)
|
- stages/prompt: add basic file field (#3156)
|
||||||
- tenants: add default_locale read only field, pre-hydrate in flows and read in autodetect as first choice
|
- tenants: add default_locale read only field, pre-hydrate in flows and read in autodetect as first choice
|
||||||
|
|
||||||
## Fixed in 2022.7.3
|
## Fixed in 2022.7.3
|
||||||
|
|
||||||
- core: delete expired models when filtering instead of excluding them
|
- core: delete expired models when filtering instead of excluding them
|
||||||
- providers/oauth2: correctly log authenticated user for OAuth views using protected_resource_view
|
- providers/oauth2: correctly log authenticated user for OAuth views using protected_resource_view
|
||||||
- sources/oauth: use oidc preferred_username if set, otherwise nickname
|
- sources/oauth: use oidc preferred_username if set, otherwise nickname
|
||||||
- stages/consent: fix permissions for consent API (allow owner to delete)
|
- stages/consent: fix permissions for consent API (allow owner to delete)
|
||||||
- stages/prompt: force required to false when using readonlyfield
|
- stages/prompt: force required to false when using readonlyfield
|
||||||
- stages/prompt: try to base64 decode file, fallback to keeping value as-is
|
- stages/prompt: try to base64 decode file, fallback to keeping value as-is
|
||||||
- web/elements: improve contrast for codemirror backgrounds
|
- web/elements: improve contrast for codemirror backgrounds
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,71 +5,71 @@ slug: "/releases/2022.8"
|
|||||||
|
|
||||||
## Breaking changes
|
## Breaking changes
|
||||||
|
|
||||||
- Prompt fields with file type are now a full Base64 Data-URI
|
- Prompt fields with file type are now a full Base64 Data-URI
|
||||||
|
|
||||||
Previously the data was parsed into a string when possible, and when decoding failed, the raw base64 would be saved. Now, the entire URI is parsed, validated and kept in one piece, to make it possible to validate/save the MIME type.
|
Previously the data was parsed into a string when possible, and when decoding failed, the raw base64 would be saved. Now, the entire URI is parsed, validated and kept in one piece, to make it possible to validate/save the MIME type.
|
||||||
|
|
||||||
## New features
|
## New features
|
||||||
|
|
||||||
- Blueprints
|
- Blueprints
|
||||||
|
|
||||||
Blueprints allow for the configuration, automation and templating of authentik objects and configurations. They can be used to bootstrap new instances, configure them automatically without external tools, and to template configurations for sharing. See more [here](../../customize/blueprints/index.md).
|
Blueprints allow for the configuration, automation and templating of authentik objects and configurations. They can be used to bootstrap new instances, configure them automatically without external tools, and to template configurations for sharing. See more [here](../../customize/blueprints/index.md).
|
||||||
|
|
||||||
For installations upgrading to 2022.8, if a single flow exists, then the default blueprints will not be activated, to not overwrite user modifications.
|
For installations upgrading to 2022.8, if a single flow exists, then the default blueprints will not be activated, to not overwrite user modifications.
|
||||||
|
|
||||||
- Simplified forward auth
|
- Simplified forward auth
|
||||||
|
|
||||||
In previous releases, to use forward auth, the reverse proxy would have to be configured to both send auth requests to the outpost, but also allow access to URLs starting with `/outpost.goauthentik.io`. The second part is now no longer required, with the exception of nginx. Existing setups should continue to function as previously.
|
In previous releases, to use forward auth, the reverse proxy would have to be configured to both send auth requests to the outpost, but also allow access to URLs starting with `/outpost.goauthentik.io`. The second part is now no longer required, with the exception of nginx. Existing setups should continue to function as previously.
|
||||||
|
|
||||||
- Support for Caddy forward auth
|
- Support for Caddy forward auth
|
||||||
|
|
||||||
Based on the traefik support, there is now dedicated support for Caddy with configuration examples, see [here](../../add-secure-apps/providers/proxy/forward_auth.mdx).
|
Based on the traefik support, there is now dedicated support for Caddy with configuration examples, see [here](../../add-secure-apps/providers/proxy/forward_auth.mdx).
|
||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- \*: improve error handling for startup tasks
|
- \*: improve error handling for startup tasks
|
||||||
- core: add API Endpoint to get all MFA devices, add web ui to delete MFA devices of any user
|
- core: add API Endpoint to get all MFA devices, add web ui to delete MFA devices of any user
|
||||||
- core: add attributes. avatar method to allow custom uploaded avatars
|
- core: add attributes. avatar method to allow custom uploaded avatars
|
||||||
- core: pre-hydrate config into templates to directly load correct assets
|
- core: pre-hydrate config into templates to directly load correct assets
|
||||||
- flows: migrate flows to be yaml (#3335)
|
- flows: migrate flows to be yaml (#3335)
|
||||||
- internal: centralise config for listeners to use same config system everywhere (#3367)
|
- internal: centralise config for listeners to use same config system everywhere (#3367)
|
||||||
- internal: fix outposts not reacting to signals while starting
|
- internal: fix outposts not reacting to signals while starting
|
||||||
- internal: fix race conditions when accessing settings before bootstrap
|
- internal: fix race conditions when accessing settings before bootstrap
|
||||||
- internal: walk config in go, check, parse and load from scheme like in python
|
- internal: walk config in go, check, parse and load from scheme like in python
|
||||||
- lifecycle: optimise container lifecycle and process signals (#3332)
|
- lifecycle: optimise container lifecycle and process signals (#3332)
|
||||||
- providers/oauth2: don't separate scopes by comma-space in created events
|
- providers/oauth2: don't separate scopes by comma-space in created events
|
||||||
- providers/oauth2: fix scopes without descriptions not being saved in consent
|
- providers/oauth2: fix scopes without descriptions not being saved in consent
|
||||||
- providers/proxy: add caddy endpoint (#3330)
|
- providers/proxy: add caddy endpoint (#3330)
|
||||||
- providers/proxy: add is_superuser to ak_proxy object, only show full error when superuser
|
- providers/proxy: add is_superuser to ak_proxy object, only show full error when superuser
|
||||||
- providers/proxy: no exposed urls (#3151)
|
- providers/proxy: no exposed urls (#3151)
|
||||||
- root: fix dockerfile for blueprints
|
- root: fix dockerfile for blueprints
|
||||||
- sources/oauth: correctly concatenate URLs to allow custom parameters to be passed to authorization server
|
- sources/oauth: correctly concatenate URLs to allow custom parameters to be passed to authorization server
|
||||||
- sources/oauth: only send header authentication for OIDC source
|
- sources/oauth: only send header authentication for OIDC source
|
||||||
- sources/oauth: use mailcow full_name as username for mailcow source (#3299)
|
- sources/oauth: use mailcow full_name as username for mailcow source (#3299)
|
||||||
- stages/\*: use stage-bound logger when possible
|
- stages/\*: use stage-bound logger when possible
|
||||||
- stages/authenticator_validate: improve error handling for duo
|
- stages/authenticator_validate: improve error handling for duo
|
||||||
- stages/authenticator_duo: fix imported Duo Device not having a name
|
- stages/authenticator_duo: fix imported Duo Device not having a name
|
||||||
- stages/authenticator_sms: use twilio SDK, improve docs
|
- stages/authenticator_sms: use twilio SDK, improve docs
|
||||||
- stages/authenticator_totp: remove single device per user limit
|
- stages/authenticator_totp: remove single device per user limit
|
||||||
- stages/consent: fix error when requests with identical empty permissions
|
- stages/consent: fix error when requests with identical empty permissions
|
||||||
- stages/consent: fix for post requests (#3339)
|
- stages/consent: fix for post requests (#3339)
|
||||||
- stages/prompt: fix tests for file field
|
- stages/prompt: fix tests for file field
|
||||||
|
|
||||||
## Fixed in 2022.8.2
|
## Fixed in 2022.8.2
|
||||||
|
|
||||||
- blueprints: add generic export next to flow exporter (#3439)
|
- blueprints: add generic export next to flow exporter (#3439)
|
||||||
- blueprints: allow for adding remote blueprints (#3435)
|
- blueprints: allow for adding remote blueprints (#3435)
|
||||||
- blueprints: fix exporter not ignoring non-SerializerModel objects
|
- blueprints: fix exporter not ignoring non-SerializerModel objects
|
||||||
- blueprints: fix issue in prod setups with encoding dataclasses via json
|
- blueprints: fix issue in prod setups with encoding dataclasses via json
|
||||||
- blueprints: remove \_state from exporter blueprints
|
- blueprints: remove \_state from exporter blueprints
|
||||||
- core: fix pre-hydrated config not being escaped properly
|
- core: fix pre-hydrated config not being escaped properly
|
||||||
- events: correctly handle lists for cleaning/sanitization
|
- events: correctly handle lists for cleaning/sanitization
|
||||||
- internal: fix routing for requests with querystring signature to embedded outpost
|
- internal: fix routing for requests with querystring signature to embedded outpost
|
||||||
- lifecycle: add worker-status command to debug worker cpu usage issues
|
- lifecycle: add worker-status command to debug worker cpu usage issues
|
||||||
- providers/oauth2: fix oauth2 requests being logged as unauthenticated
|
- providers/oauth2: fix oauth2 requests being logged as unauthenticated
|
||||||
- sources/oauth: fix missing doseq param for updating URL query string
|
- sources/oauth: fix missing doseq param for updating URL query string
|
||||||
- web/elements: fix automatic slug not working on newly opened forms
|
- web/elements: fix automatic slug not working on newly opened forms
|
||||||
- web/flows: simplify consent's permission handling
|
- web/flows: simplify consent's permission handling
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
@ -5,15 +5,15 @@ slug: "/releases/2022.9"
|
|||||||
|
|
||||||
## Breaking changes
|
## Breaking changes
|
||||||
|
|
||||||
- `WORKERS` environment variable has been renamed to match other config options, see [Configuration](../../install-config/configuration/configuration.mdx#authentik_web__workers-authentik-20229)
|
- `WORKERS` environment variable has been renamed to match other config options, see [Configuration](../../install-config/configuration/configuration.mdx#authentik_web__workers-authentik-20229)
|
||||||
|
|
||||||
## New features
|
## New features
|
||||||
|
|
||||||
- UI for Duo device Import
|
- UI for Duo device Import
|
||||||
|
|
||||||
Instead of manually having to call an API endpoint, there's now a UI for importing Duo devices.
|
Instead of manually having to call an API endpoint, there's now a UI for importing Duo devices.
|
||||||
|
|
||||||
- Duo Admin API integration
|
- Duo Admin API integration
|
||||||
|
|
||||||
When using a Duo MFA, Duo Access or Duo Beyond plan, authentik can now automatically import devices from Duo into authentik. More info [here](../../add-secure-apps/flows-stages/stages/authenticator_duo/index.md).
|
When using a Duo MFA, Duo Access or Duo Beyond plan, authentik can now automatically import devices from Duo into authentik. More info [here](../../add-secure-apps/flows-stages/stages/authenticator_duo/index.md).
|
||||||
|
|
||||||
@ -43,9 +43,9 @@ slug: "/releases/2022.9"
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `admin_integration_key` (string)
|
- Added property `admin_integration_key` (string)
|
||||||
|
|
||||||
##### `PUT` /stages/authenticator/duo/{stage_uuid}/
|
##### `PUT` /stages/authenticator/duo/{stage_uuid}/
|
||||||
|
|
||||||
@ -53,17 +53,17 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `admin_integration_key` (string)
|
- Added property `admin_integration_key` (string)
|
||||||
|
|
||||||
- Added property `admin_secret_key` (string)
|
- Added property `admin_secret_key` (string)
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `admin_integration_key` (string)
|
- Added property `admin_integration_key` (string)
|
||||||
|
|
||||||
##### `PATCH` /stages/authenticator/duo/{stage_uuid}/
|
##### `PATCH` /stages/authenticator/duo/{stage_uuid}/
|
||||||
|
|
||||||
@ -71,17 +71,17 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `admin_integration_key` (string)
|
- Added property `admin_integration_key` (string)
|
||||||
|
|
||||||
- Added property `admin_secret_key` (string)
|
- Added property `admin_secret_key` (string)
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `admin_integration_key` (string)
|
- Added property `admin_integration_key` (string)
|
||||||
|
|
||||||
##### `GET` /flows/executor/{flow_slug}/
|
##### `GET` /flows/executor/{flow_slug}/
|
||||||
|
|
||||||
@ -89,51 +89,51 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
Added 'xak-flow-error' component:
|
Added 'xak-flow-error' component:
|
||||||
|
|
||||||
- Property `type` (string)
|
- Property `type` (string)
|
||||||
|
|
||||||
Enum values:
|
Enum values:
|
||||||
|
|
||||||
- `native`
|
- `native`
|
||||||
- `shell`
|
- `shell`
|
||||||
- `redirect`
|
- `redirect`
|
||||||
|
|
||||||
- Property `flow_info` (object)
|
- Property `flow_info` (object)
|
||||||
|
|
||||||
> Contextual flow information for a challenge
|
> Contextual flow information for a challenge
|
||||||
|
|
||||||
- Property `title` (string)
|
- Property `title` (string)
|
||||||
|
|
||||||
- Property `background` (string)
|
- Property `background` (string)
|
||||||
|
|
||||||
- Property `cancel_url` (string)
|
- Property `cancel_url` (string)
|
||||||
|
|
||||||
- Property `layout` (string)
|
- Property `layout` (string)
|
||||||
|
|
||||||
Enum values:
|
Enum values:
|
||||||
|
|
||||||
- `stacked`
|
- `stacked`
|
||||||
- `content_left`
|
- `content_left`
|
||||||
- `content_right`
|
- `content_right`
|
||||||
- `sidebar_left`
|
- `sidebar_left`
|
||||||
- `sidebar_right`
|
- `sidebar_right`
|
||||||
|
|
||||||
- Property `component` (string)
|
- Property `component` (string)
|
||||||
|
|
||||||
- Property `response_errors` (object)
|
- Property `response_errors` (object)
|
||||||
|
|
||||||
- Property `pending_user` (string)
|
- Property `pending_user` (string)
|
||||||
|
|
||||||
- Property `pending_user_avatar` (string)
|
- Property `pending_user_avatar` (string)
|
||||||
|
|
||||||
- Property `request_id` (string)
|
- Property `request_id` (string)
|
||||||
|
|
||||||
- Property `error` (string)
|
- Property `error` (string)
|
||||||
|
|
||||||
- Property `traceback` (string)
|
- Property `traceback` (string)
|
||||||
|
|
||||||
##### `POST` /flows/executor/{flow_slug}/
|
##### `POST` /flows/executor/{flow_slug}/
|
||||||
|
|
||||||
@ -141,51 +141,51 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
Added 'xak-flow-error' component:
|
Added 'xak-flow-error' component:
|
||||||
|
|
||||||
- Property `type` (string)
|
- Property `type` (string)
|
||||||
|
|
||||||
Enum values:
|
Enum values:
|
||||||
|
|
||||||
- `native`
|
- `native`
|
||||||
- `shell`
|
- `shell`
|
||||||
- `redirect`
|
- `redirect`
|
||||||
|
|
||||||
- Property `flow_info` (object)
|
- Property `flow_info` (object)
|
||||||
|
|
||||||
> Contextual flow information for a challenge
|
> Contextual flow information for a challenge
|
||||||
|
|
||||||
- Property `title` (string)
|
- Property `title` (string)
|
||||||
|
|
||||||
- Property `background` (string)
|
- Property `background` (string)
|
||||||
|
|
||||||
- Property `cancel_url` (string)
|
- Property `cancel_url` (string)
|
||||||
|
|
||||||
- Property `layout` (string)
|
- Property `layout` (string)
|
||||||
|
|
||||||
Enum values:
|
Enum values:
|
||||||
|
|
||||||
- `stacked`
|
- `stacked`
|
||||||
- `content_left`
|
- `content_left`
|
||||||
- `content_right`
|
- `content_right`
|
||||||
- `sidebar_left`
|
- `sidebar_left`
|
||||||
- `sidebar_right`
|
- `sidebar_right`
|
||||||
|
|
||||||
- Property `component` (string)
|
- Property `component` (string)
|
||||||
|
|
||||||
- Property `response_errors` (object)
|
- Property `response_errors` (object)
|
||||||
|
|
||||||
- Property `pending_user` (string)
|
- Property `pending_user` (string)
|
||||||
|
|
||||||
- Property `pending_user_avatar` (string)
|
- Property `pending_user_avatar` (string)
|
||||||
|
|
||||||
- Property `request_id` (string)
|
- Property `request_id` (string)
|
||||||
|
|
||||||
- Property `error` (string)
|
- Property `error` (string)
|
||||||
|
|
||||||
- Property `traceback` (string)
|
- Property `traceback` (string)
|
||||||
|
|
||||||
##### `POST` /stages/authenticator/duo/
|
##### `POST` /stages/authenticator/duo/
|
||||||
|
|
||||||
@ -193,17 +193,17 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `admin_integration_key` (string)
|
- Added property `admin_integration_key` (string)
|
||||||
|
|
||||||
- Added property `admin_secret_key` (string)
|
- Added property `admin_secret_key` (string)
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **201 Created**
|
Changed response : **201 Created**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `admin_integration_key` (string)
|
- Added property `admin_integration_key` (string)
|
||||||
|
|
||||||
##### `GET` /stages/authenticator/duo/
|
##### `GET` /stages/authenticator/duo/
|
||||||
|
|
||||||
@ -211,55 +211,55 @@ Changed response : **201 Created**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > AuthenticatorDuoStage Serializer
|
Changed items (object): > AuthenticatorDuoStage Serializer
|
||||||
|
|
||||||
- Added property `admin_integration_key` (string)
|
- Added property `admin_integration_key` (string)
|
||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- \*: cleanup stray print calls
|
- \*: cleanup stray print calls
|
||||||
- \*: remove remaining default creation code in squashed migrations
|
- \*: remove remaining default creation code in squashed migrations
|
||||||
- blueprint: fix EntryInvalidError not being handled in tasks
|
- blueprint: fix EntryInvalidError not being handled in tasks
|
||||||
- blueprints: add meta model to apply blueprint within blueprint for dependencies (#3486)
|
- blueprints: add meta model to apply blueprint within blueprint for dependencies (#3486)
|
||||||
- blueprints: don't export events by default and exclude anonymous user
|
- blueprints: don't export events by default and exclude anonymous user
|
||||||
- blueprints: OCI registry support (#3500)
|
- blueprints: OCI registry support (#3500)
|
||||||
- blueprints: use correct log level when re-logging import validation logs
|
- blueprints: use correct log level when re-logging import validation logs
|
||||||
- core: fix custom favicon not being set correctly on load
|
- core: fix custom favicon not being set correctly on load
|
||||||
- core: improve error template (#3521)
|
- core: improve error template (#3521)
|
||||||
- crypto: add command to import certificates
|
- crypto: add command to import certificates
|
||||||
- events: fix MonitoredTasks' save_on_success not behaving as expected
|
- events: fix MonitoredTasks' save_on_success not behaving as expected
|
||||||
- events: reset task info when not saving on success
|
- events: reset task info when not saving on success
|
||||||
- events: save event to test notification transport
|
- events: save event to test notification transport
|
||||||
- flows: fix incorrect diagram for policies bound to flows
|
- flows: fix incorrect diagram for policies bound to flows
|
||||||
- flows: migrate FlowExecutor error handler to native challenge instead of shell
|
- flows: migrate FlowExecutor error handler to native challenge instead of shell
|
||||||
- internal: fix outposts not logging flow execution errors correctly
|
- internal: fix outposts not logging flow execution errors correctly
|
||||||
- internal: optimise outpost's flow executor to use less requests
|
- internal: optimise outpost's flow executor to use less requests
|
||||||
- internal: use config system for workers/threads, document the settings (#3626)
|
- internal: use config system for workers/threads, document the settings (#3626)
|
||||||
- outposts: fix oauth state when using signature routing (#3616)
|
- outposts: fix oauth state when using signature routing (#3616)
|
||||||
- outposts/proxy: fix redirect path when external host is a subdirectory (#3628)
|
- outposts/proxy: fix redirect path when external host is a subdirectory (#3628)
|
||||||
- providers/oauth2: add x5c (#3556)
|
- providers/oauth2: add x5c (#3556)
|
||||||
- providers/proxy: fix routing based on signature in traefik and caddy
|
- providers/proxy: fix routing based on signature in traefik and caddy
|
||||||
- root: make redis persistent in docker-compose
|
- root: make redis persistent in docker-compose
|
||||||
- root: reuse custom log helper from config and cleanup duplicate functions
|
- root: reuse custom log helper from config and cleanup duplicate functions
|
||||||
- root: shorten outpost docker healthcheck intervals
|
- root: shorten outpost docker healthcheck intervals
|
||||||
- sources/ldap: start_tls before binding but without reading server info
|
- sources/ldap: start_tls before binding but without reading server info
|
||||||
- sources/oauth: use GitHub's dedicated email API when no public email address is configured
|
- sources/oauth: use GitHub's dedicated email API when no public email address is configured
|
||||||
- sources/oauth: use UPN for username with azure AD source
|
- sources/oauth: use UPN for username with azure AD source
|
||||||
- stages/authenticator_duo: fix 404 when current user does not have permissions to view stage
|
- stages/authenticator_duo: fix 404 when current user does not have permissions to view stage
|
||||||
- stages/authenticator_duo: improved import (#3601)
|
- stages/authenticator_duo: improved import (#3601)
|
||||||
- stages/consent: default to expiring consent instead of always_require
|
- stages/consent: default to expiring consent instead of always_require
|
||||||
- tenants: handle all errors in default_locale
|
- tenants: handle all errors in default_locale
|
||||||
- web: fix checkbox styling on applications form
|
- web: fix checkbox styling on applications form
|
||||||
- web: fix scrolling in modals in low-height views (#3596)
|
- web: fix scrolling in modals in low-height views (#3596)
|
||||||
- web: use mermaidjs (#3623)
|
- web: use mermaidjs (#3623)
|
||||||
- web/admin: enable blueprint instances by default
|
- web/admin: enable blueprint instances by default
|
||||||
- web/flows: fix ak-locale prompt being rendered without name attribute
|
- web/flows: fix ak-locale prompt being rendered without name attribute
|
||||||
- web/flows: update flow background
|
- web/flows: update flow background
|
||||||
- web/user: justify content on user settings page on desktop
|
- web/user: justify content on user settings page on desktop
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -5,21 +5,21 @@ slug: "/releases/2023.2"
|
|||||||
|
|
||||||
## New features
|
## New features
|
||||||
|
|
||||||
- Proxy provider logout improvements
|
- Proxy provider logout improvements
|
||||||
|
|
||||||
In previous versions, logging out of a single proxied application would only invalidate that application's session. Starting with this release, when logging out of a proxied application (via the _/outpost.goauthentik.io/sign_out_ URL), all the users session within the outpost are terminated. Sessions in other outposts and with other protocols are unaffected.
|
In previous versions, logging out of a single proxied application would only invalidate that application's session. Starting with this release, when logging out of a proxied application (via the _/outpost.goauthentik.io/sign_out_ URL), all the users session within the outpost are terminated. Sessions in other outposts and with other protocols are unaffected.
|
||||||
|
|
||||||
Additionally, different providers now have different cookies, instead of all using the same "authentik_proxy" token.
|
Additionally, different providers now have different cookies, instead of all using the same "authentik_proxy" token.
|
||||||
|
|
||||||
- UX Improvements
|
- UX Improvements
|
||||||
|
|
||||||
As with the previous improvements, we've made a lot of minor improvements to the general authentik UX to make your life easier.
|
As with the previous improvements, we've made a lot of minor improvements to the general authentik UX to make your life easier.
|
||||||
|
|
||||||
- OAuth2 Provider improvements
|
- OAuth2 Provider improvements
|
||||||
|
|
||||||
The OAuth2 provider has been reworked to be closer to OAuth specifications and better support refresh tokens and offline access. Additionally the expiry for access tokens and refresh tokens can be adjusted separately now.
|
The OAuth2 provider has been reworked to be closer to OAuth specifications and better support refresh tokens and offline access. Additionally the expiry for access tokens and refresh tokens can be adjusted separately now.
|
||||||
|
|
||||||
- Generated avatars, multiple avatar modes
|
- Generated avatars, multiple avatar modes
|
||||||
|
|
||||||
authentik now supports multiple avatar modes, and will use the next configured mode when a mode doesn't have an avatar. For example, the new default configuration attempts to use gravatar, but if the user's email does not have a gravatar setup, it will instead use the new generated avatars. See [Configuration](../../sys-mgmt/settings.md#avatars)
|
authentik now supports multiple avatar modes, and will use the next configured mode when a mode doesn't have an avatar. For example, the new default configuration attempts to use gravatar, but if the user's email does not have a gravatar setup, it will instead use the new generated avatars. See [Configuration](../../sys-mgmt/settings.md#avatars)
|
||||||
|
|
||||||
@ -43,73 +43,73 @@ image:
|
|||||||
|
|
||||||
## Minor changes/fixes
|
## Minor changes/fixes
|
||||||
|
|
||||||
- \*/saml: disable pretty_print, add signature tests
|
- \*/saml: disable pretty_print, add signature tests
|
||||||
- blueprints: don't update default tenant
|
- blueprints: don't update default tenant
|
||||||
- blueprints: handle error when blueprint entry identifier field does not exist
|
- blueprints: handle error when blueprint entry identifier field does not exist
|
||||||
- core: Add support for auto generating unique avatars based on the user's initials (#4663)
|
- core: Add support for auto generating unique avatars based on the user's initials (#4663)
|
||||||
- core: delete session when user is set to inactive
|
- core: delete session when user is set to inactive
|
||||||
- core: fix inconsistent branding in end_session view
|
- core: fix inconsistent branding in end_session view
|
||||||
- core: fix missing uniqueness validator on user api
|
- core: fix missing uniqueness validator on user api
|
||||||
- core: fix token's set_key accessing data incorrectly
|
- core: fix token's set_key accessing data incorrectly
|
||||||
- events: dont log oauth temporary model creation
|
- events: dont log oauth temporary model creation
|
||||||
- events: improve sanitising for tuples and sets
|
- events: improve sanitising for tuples and sets
|
||||||
- events: prevent error when request fails without response
|
- events: prevent error when request fails without response
|
||||||
- internal: better error message when outpost API controller couldn't fetch outposts
|
- internal: better error message when outpost API controller couldn't fetch outposts
|
||||||
- internal: fix cache-control header
|
- internal: fix cache-control header
|
||||||
- policies/event_matcher: fix empty app label not being allowed, require at least 1 criteria
|
- policies/event_matcher: fix empty app label not being allowed, require at least 1 criteria
|
||||||
- providers/ldap: add unbind flow execution (#4484)
|
- providers/ldap: add unbind flow execution (#4484)
|
||||||
- providers/ldap: fix error not being checked correctly when fetching users
|
- providers/ldap: fix error not being checked correctly when fetching users
|
||||||
- providers/oauth2: add user id as "sub" mode
|
- providers/oauth2: add user id as "sub" mode
|
||||||
- providers/oauth2: don't use policy cache for token requests
|
- providers/oauth2: don't use policy cache for token requests
|
||||||
- providers/oauth2: only set auth_time in ID token when a login event is stored in the session
|
- providers/oauth2: only set auth_time in ID token when a login event is stored in the session
|
||||||
- providers/oauth2: optimise client credentials JWT database lookup (#4606)
|
- providers/oauth2: optimise client credentials JWT database lookup (#4606)
|
||||||
- providers/oauth2: rework OAuth2 Provider (#4652)
|
- providers/oauth2: rework OAuth2 Provider (#4652)
|
||||||
- providers/proxy: add token support for basic auth
|
- providers/proxy: add token support for basic auth
|
||||||
- providers/proxy: different cookie name based on hashed client id (#4666)
|
- providers/proxy: different cookie name based on hashed client id (#4666)
|
||||||
- providers/proxy: outpost wide logout implementation (#4605)
|
- providers/proxy: outpost wide logout implementation (#4605)
|
||||||
- providers/saml: fix invalid SAML provider metadata, add schema tests
|
- providers/saml: fix invalid SAML provider metadata, add schema tests
|
||||||
- providers/saml: fix mismatched SAML SLO Urls (#4655)
|
- providers/saml: fix mismatched SAML SLO Urls (#4655)
|
||||||
- stages/authenticator_validate: fix error with passwordless webauthn login
|
- stages/authenticator_validate: fix error with passwordless webauthn login
|
||||||
- stages/prompt: field name (#4497)
|
- stages/prompt: field name (#4497)
|
||||||
- stages/user_write: fix migration setting wrong value, fix form
|
- stages/user_write: fix migration setting wrong value, fix form
|
||||||
- web: fix token delete form not showing token identifiers
|
- web: fix token delete form not showing token identifiers
|
||||||
- web/admin: add notice for user_login stage session cookie behaviour
|
- web/admin: add notice for user_login stage session cookie behaviour
|
||||||
- web/admin: clarify access code expiration
|
- web/admin: clarify access code expiration
|
||||||
- web/admin: default to disable policy execution logging
|
- web/admin: default to disable policy execution logging
|
||||||
- web/admin: fix certificate filtering for SAML verification certificate
|
- web/admin: fix certificate filtering for SAML verification certificate
|
||||||
- web/admin: rework event info page to show all event infos
|
- web/admin: rework event info page to show all event infos
|
||||||
- web/elements: add dropdown css to DOM directly instead of including
|
- web/elements: add dropdown css to DOM directly instead of including
|
||||||
- web/elements: fix ak-expand not using correct font
|
- web/elements: fix ak-expand not using correct font
|
||||||
- web/elements: fix clashing page url param
|
- web/elements: fix clashing page url param
|
||||||
- web/elements: improve codemirror contrast in dark theme
|
- web/elements: improve codemirror contrast in dark theme
|
||||||
- web/elements: make table rows clickable to select items
|
- web/elements: make table rows clickable to select items
|
||||||
- web/elements: persist table page in URL parameters
|
- web/elements: persist table page in URL parameters
|
||||||
- web/flows: fix flow background overlay on firefox
|
- web/flows: fix flow background overlay on firefox
|
||||||
- web/user: filter tokens by username
|
- web/user: filter tokens by username
|
||||||
- web/user: refactor loading of data in userinterface
|
- web/user: refactor loading of data in userinterface
|
||||||
|
|
||||||
## Fixed in 2023.2.1
|
## Fixed in 2023.2.1
|
||||||
|
|
||||||
- internal: fix scheme not being forwarded correctly for host intercepted requests
|
- internal: fix scheme not being forwarded correctly for host intercepted requests
|
||||||
- sources/ldap: add LDAP Debug endpoint
|
- sources/ldap: add LDAP Debug endpoint
|
||||||
- web/admin: improve action button spinner on ldap source page
|
- web/admin: improve action button spinner on ldap source page
|
||||||
- web/admin: remove groups and users from users and group form to prevent accidental removal when updating
|
- web/admin: remove groups and users from users and group form to prevent accidental removal when updating
|
||||||
- web/admin: use full page size for modals
|
- web/admin: use full page size for modals
|
||||||
|
|
||||||
## Fixed in 2023.2.2
|
## Fixed in 2023.2.2
|
||||||
|
|
||||||
- flows: include flow authentication requirement in diagram
|
- flows: include flow authentication requirement in diagram
|
||||||
- lib: don't try to cache generated avatar with full user, only cache with name
|
- lib: don't try to cache generated avatar with full user, only cache with name
|
||||||
- providers/ldap: check MFA password on password stage
|
- providers/ldap: check MFA password on password stage
|
||||||
- providers/proxy: fix client credential flows not using http interceptor
|
- providers/proxy: fix client credential flows not using http interceptor
|
||||||
- providers/proxy: fix value is too long with filesystem sessions
|
- providers/proxy: fix value is too long with filesystem sessions
|
||||||
- root: use channel send workaround for sync sending of websocket messages
|
- root: use channel send workaround for sync sending of websocket messages
|
||||||
- web/admin: fix error when creating new users
|
- web/admin: fix error when creating new users
|
||||||
- web/user: revert truncate behaviour for application description
|
- web/user: revert truncate behaviour for application description
|
||||||
|
|
||||||
## Fixed in 2023.2.3
|
## Fixed in 2023.2.3
|
||||||
|
|
||||||
- \*: fix [CVE-2023-26481.md](../../security/cves/CVE-2023-26481.md), Reported by [@fuomag9](https://github.com/fuomag9)
|
- \*: fix [CVE-2023-26481.md](../../security/cves/CVE-2023-26481.md), Reported by [@fuomag9](https://github.com/fuomag9)
|
||||||
|
|
||||||
## API Changes
|
## API Changes
|
||||||
|
|
||||||
@ -131,15 +131,15 @@ image:
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
##### `PUT` /providers/oauth2/{id}/
|
##### `PUT` /providers/oauth2/{id}/
|
||||||
|
|
||||||
@ -147,27 +147,27 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
##### `PATCH` /providers/oauth2/{id}/
|
##### `PATCH` /providers/oauth2/{id}/
|
||||||
|
|
||||||
@ -175,27 +175,27 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
##### `POST` /providers/oauth2/
|
##### `POST` /providers/oauth2/
|
||||||
|
|
||||||
@ -203,27 +203,27 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **201 Created**
|
Changed response : **201 Created**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
##### `GET` /providers/oauth2/
|
##### `GET` /providers/oauth2/
|
||||||
|
|
||||||
@ -237,19 +237,19 @@ Changed: `sub_mode` in `query`
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > OAuth2Provider Serializer
|
Changed items (object): > OAuth2Provider Serializer
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
##### `GET` /oauth2/authorization_codes/{id}/
|
##### `GET` /oauth2/authorization_codes/{id}/
|
||||||
|
|
||||||
@ -257,19 +257,19 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `provider` (object)
|
- Changed property `provider` (object)
|
||||||
|
|
||||||
> OAuth2Provider Serializer
|
> OAuth2Provider Serializer
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
##### `GET` /oauth2/refresh_tokens/{id}/
|
##### `GET` /oauth2/refresh_tokens/{id}/
|
||||||
|
|
||||||
@ -277,19 +277,19 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `provider` (object)
|
- Changed property `provider` (object)
|
||||||
|
|
||||||
> OAuth2Provider Serializer
|
> OAuth2Provider Serializer
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
##### `GET` /oauth2/authorization_codes/
|
##### `GET` /oauth2/authorization_codes/
|
||||||
|
|
||||||
@ -297,23 +297,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > Serializer for BaseGrantModel and ExpiringBaseGrant
|
Changed items (object): > Serializer for BaseGrantModel and ExpiringBaseGrant
|
||||||
|
|
||||||
- Changed property `provider` (object)
|
- Changed property `provider` (object)
|
||||||
|
|
||||||
> OAuth2Provider Serializer
|
> OAuth2Provider Serializer
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
##### `GET` /oauth2/refresh_tokens/
|
##### `GET` /oauth2/refresh_tokens/
|
||||||
|
|
||||||
@ -321,23 +321,23 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > Serializer for BaseGrantModel and RefreshToken
|
Changed items (object): > Serializer for BaseGrantModel and RefreshToken
|
||||||
|
|
||||||
- Changed property `provider` (object)
|
- Changed property `provider` (object)
|
||||||
|
|
||||||
> OAuth2Provider Serializer
|
> OAuth2Provider Serializer
|
||||||
|
|
||||||
- Changed property `sub_mode` (string)
|
- Changed property `sub_mode` (string)
|
||||||
|
|
||||||
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
> Configure what data should be used as unique User Identifier. For most cases, the default should be fine.
|
||||||
|
|
||||||
Added enum value:
|
Added enum value:
|
||||||
|
|
||||||
- `user_id`
|
- `user_id`
|
||||||
|
|
||||||
##### `GET` /stages/prompt/prompts/{prompt_uuid}/
|
##### `GET` /stages/prompt/prompts/{prompt_uuid}/
|
||||||
|
|
||||||
@ -345,13 +345,13 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
New required properties:
|
New required properties:
|
||||||
|
|
||||||
- `name`
|
- `name`
|
||||||
|
|
||||||
* Added property `name` (string)
|
* Added property `name` (string)
|
||||||
|
|
||||||
##### `PUT` /stages/prompt/prompts/{prompt_uuid}/
|
##### `PUT` /stages/prompt/prompts/{prompt_uuid}/
|
||||||
|
|
||||||
@ -361,21 +361,21 @@ Changed content type : `application/json`
|
|||||||
|
|
||||||
New required properties:
|
New required properties:
|
||||||
|
|
||||||
- `name`
|
- `name`
|
||||||
|
|
||||||
* Added property `name` (string)
|
* Added property `name` (string)
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
New required properties:
|
New required properties:
|
||||||
|
|
||||||
- `name`
|
- `name`
|
||||||
|
|
||||||
* Added property `name` (string)
|
* Added property `name` (string)
|
||||||
|
|
||||||
##### `PATCH` /stages/prompt/prompts/{prompt_uuid}/
|
##### `PATCH` /stages/prompt/prompts/{prompt_uuid}/
|
||||||
|
|
||||||
@ -383,19 +383,19 @@ Changed response : **200 OK**
|
|||||||
|
|
||||||
Changed content type : `application/json`
|
Changed content type : `application/json`
|
||||||
|
|
||||||
- Added property `name` (string)
|
- Added property `name` (string)
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
New required properties:
|
New required properties:
|
||||||
|
|
||||||
- `name`
|
- `name`
|
||||||
|
|
||||||
* Added property `name` (string)
|
* Added property `name` (string)
|
||||||
|
|
||||||
##### `POST` /stages/prompt/prompts/
|
##### `POST` /stages/prompt/prompts/
|
||||||
|
|
||||||
@ -405,21 +405,21 @@ Changed content type : `application/json`
|
|||||||
|
|
||||||
New required properties:
|
New required properties:
|
||||||
|
|
||||||
- `name`
|
- `name`
|
||||||
|
|
||||||
* Added property `name` (string)
|
* Added property `name` (string)
|
||||||
|
|
||||||
###### Return Type:
|
###### Return Type:
|
||||||
|
|
||||||
Changed response : **201 Created**
|
Changed response : **201 Created**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
New required properties:
|
New required properties:
|
||||||
|
|
||||||
- `name`
|
- `name`
|
||||||
|
|
||||||
* Added property `name` (string)
|
* Added property `name` (string)
|
||||||
|
|
||||||
##### `GET` /stages/prompt/prompts/
|
##### `GET` /stages/prompt/prompts/
|
||||||
|
|
||||||
@ -431,14 +431,14 @@ Added: `name` in `query`
|
|||||||
|
|
||||||
Changed response : **200 OK**
|
Changed response : **200 OK**
|
||||||
|
|
||||||
- Changed content type : `application/json`
|
- Changed content type : `application/json`
|
||||||
|
|
||||||
- Changed property `results` (array)
|
- Changed property `results` (array)
|
||||||
|
|
||||||
Changed items (object): > Prompt Serializer
|
Changed items (object): > Prompt Serializer
|
||||||
|
|
||||||
New required properties:
|
New required properties:
|
||||||
|
|
||||||
- `name`
|
- `name`
|
||||||
|
|
||||||
* Added property `name` (string)
|
* Added property `name` (string)
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user