From 34b01d9785607c0634ae1834be147c09c24a5c5b Mon Sep 17 00:00:00 2001 From: Tana M Berry Date: Tue, 6 Aug 2024 07:56:23 -0500 Subject: [PATCH] website/docs: add more content about flows (#10527) * first pass * reordered config options to match UI, added more * tweaks * add content for creating flows, add links to policies, update Style Guide * tweaks * procedurals, info about bindings * stages stub file * messy * reorg procedurals * tweak titles * tweaks * images * images, remove old images * tweak * tweaks and fixes * smaller image * tweak * had to rollback * starting over after VS Code branch war * fix links * more tweaks * Optimised images with calibre/image-actions * fighting build break * remove dupe image * replace image with diagram code * add image of UI, and reformat to look more like field names, not headings in the document * Optimised images with calibre/image-actions * new image * rest of Jens' edits * Optimised images with calibre/image-actions * fix order of stages in example * fixed arrows in image --------- Signed-off-by: Tana M Berry Co-authored-by: Tana M Berry Co-authored-by: authentik-automation[bot] <135050075+authentik-automation[bot]@users.noreply.github.com> Co-authored-by: Jens Langhammer --- website/developer-docs/docs/style-guide.mdx | 84 +++++++++++++-- .../developer-docs/docs/templates/combo.md | 2 +- .../docs/templates/conceptual.md | 2 +- .../docs/templates/procedural.md | 2 +- .../docs/templates/reference.md | 2 +- .../docs/writing-documentation.md | 30 +++--- website/docs/flow/create-flow.png | Bin 0 -> 115318 bytes website/docs/flow/index.md | 99 +++++++++++------- website/docs/flow/simple_stages.png | Bin 0 -> 46450 bytes website/docs/flow/stages/index.md | 56 ++++++++++ website/docs/policies/expression.mdx | 19 +++- website/docs/policies/index.md | 43 +++++--- .../working_with_policies.md | 48 +++++++++ website/sidebars.js | 12 +-- 14 files changed, 310 insertions(+), 89 deletions(-) create mode 100644 website/docs/flow/create-flow.png create mode 100644 website/docs/flow/simple_stages.png create mode 100644 website/docs/flow/stages/index.md create mode 100644 website/docs/policies/working_with_policies/working_with_policies.md diff --git a/website/developer-docs/docs/style-guide.mdx b/website/developer-docs/docs/style-guide.mdx index 33c01ff2bb61..25100509692b 100644 --- a/website/developer-docs/docs/style-guide.mdx +++ b/website/developer-docs/docs/style-guide.mdx @@ -2,19 +2,19 @@ title: Style Guide --- -Here are a few guidelines to ensure that the documentation is easy to read and uses similar phrasing. Remember to use our [docs templates](./templates/index.md) when possible; they are already set up to follow may of the style guidelines below. +The Style Guide provides guidelines to ensure that the authentik documentation is easy to read and uses similar phrasing, formatting, and tone. + +We appreciate contributions to our documentation; everything from fixing a typo to adding additional content to writing a completely new topic. To make the review and merging of your contributions faster and easier, please follow the [writing documentation](./writing-documentation.md) guidelines. If you find any documentation that doesn't match these guidelines, feel free to either open an [Issue](https://github.com/goauthentik/authentik/issues) or a [PR](https://github.com/goauthentik/authentik/pulls) so they can be fixed. -To test how the documentation renders use the Netlify Deploy Preview, especially when using Docusaurus-specific features. Or [build it locally and test](./writing-documentation.md#set-up-your-local-build), using the `make website-watch` command. +## General style guidelines -:::info -Make sure to add any new pages to the appropriate `sidebar` file. Otherwise, the new page will not appear in the table of contents to the left. -::: +- 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. -## General guidelines +- Use headings (sub-titles) to break up long documents, and make it easier to find a specific section. -- 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. +- 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. @@ -40,7 +40,7 @@ Make sure to add any new pages to the appropriate `sidebar` file. Otherwise, the - Our documentation uses American English ("z" not "s"). -- Phrasing should almost always be in present tense and active voice: +- Use the present tense and active voice in almost all cases: - DON'T: "The Applications page will be loaded." @@ -56,12 +56,17 @@ Make sure to add any new pages to the appropriate `sidebar` file. Otherwise, the Formatting in documentation is important; it improves comprehension and readability, and allows the brain to more quickly determine what is a command or a configuration setting, what is a field name, or what is a variable. +### 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 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: - commands - file paths + - file names - directory names - code snippets (single line or a block of code) @@ -77,5 +82,68 @@ Formatting in documentation is important; it improves comprehension and readabil - 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: + - Configure your 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". + +- Use the imperative verb form (not the gerund form) for procedural topics. For example, use "Configure your instance" instead of "Configuring your instance". + +### Examples + +When you want to show an example (say, a code snippet), use a new line, bold text, and a semi-colon, like this: + + **Example**: + This expression policy uses an expression based on the user's name. + ``` + if request.context["pending_user"].username == "marie": + return True + return False + ``` + +### Notes and warnings + +Use the following convention for a note: + +``` +:::info +Write your note here. +::: +``` + +:::info +Write your note here. +::: + +For a warning, use this: + +``` +:::warning +Write your note here. +::: +``` + +:::warning +Write your warning here. +::: + +``` + +``` + +## Word choices + +- **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. + + - DON'T: "You may 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."" + +- **Login**, **log in**, and **log in to** + 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 with the proposition "to", use "log in to". (Log in to the application.) diff --git a/website/developer-docs/docs/templates/combo.md b/website/developer-docs/docs/templates/combo.md index f6d683b71ab8..8de8392a3557 100644 --- a/website/developer-docs/docs/templates/combo.md +++ b/website/developer-docs/docs/templates/combo.md @@ -9,7 +9,7 @@ title: "Combination topic" wget https://raw.githubusercontent.com/goauthentik/authentik/main/website/developer-docs/docs/templates/combo.tmpl.md ``` -Edit your markdown file as you work, reading this page for the descriptions of each section. You can build out a "stub file" with just headers, then gradually add content to each section. Use screenshots sparingly, only for complex UIs where it is difficult to describe a UI element with words. Refer to our [General Guidelines](../writing-documentation#writing-guidelines) for writing tips and authentik-specific rules. +Edit your markdown file as you work, reading this page for the descriptions of each section. You can build out a "stub file" with just headers, then gradually add content to each section. Use screenshots sparingly, only for complex UIs where it is difficult to describe a UI element with words. Refer to our [Style Guide](../style-guide.mdx) for writing tips and authentik-specific rules. ::: For a combo topic, the title is typically the name of the feature ("Branding" or "Remote Access Control"). diff --git a/website/developer-docs/docs/templates/conceptual.md b/website/developer-docs/docs/templates/conceptual.md index 55a500947a1b..410fe020588c 100644 --- a/website/developer-docs/docs/templates/conceptual.md +++ b/website/developer-docs/docs/templates/conceptual.md @@ -9,7 +9,7 @@ title: "Conceptual topic" wget https://raw.githubusercontent.com/goauthentik/authentik/main/website/developer-docs/docs/templates/conceptual.tmpl.md ``` -Edit your markdown file as you work, reading this page for the descriptions of each section. You can build out a "stub file" with just headers, then gradually add content to each section. Use screenshots sparingly, only for complex UIs where it is difficult to describe a UI element with words. Refer to our [General Guidelines](../writing-documentation#writing-guidelines) for writing tips and authentik-specific rules. +Edit your markdown file as you work, reading this page for the descriptions of each section. You can build out a "stub file" with just headers, then gradually add content to each section. Use screenshots sparingly, only for complex UIs where it is difficult to describe a UI element with words. Refer to our [Style Guide](../style-guide.mdx) for writing tips and authentik-specific rules. ::: Use a title that focuses on the feature, component, or technology you are writing about... for example, "About authentik polices" or "Understanding outposts". For conceptual docs, the verb in the title should indicate a concept, such as "About" or "Overview" or "Understanding", followed by the noun (the component or object you are writing about). diff --git a/website/developer-docs/docs/templates/procedural.md b/website/developer-docs/docs/templates/procedural.md index ccc7ae6bf0aa..aa34afb75eb2 100644 --- a/website/developer-docs/docs/templates/procedural.md +++ b/website/developer-docs/docs/templates/procedural.md @@ -9,7 +9,7 @@ title: "Procedural topic" wget https://raw.githubusercontent.com/goauthentik/authentik/main/website/developer-docs/docs/templates/procedural.tmpl.md ``` -Edit your markdown file as you work, reading this page for the descriptions of each section. You can build out a "stub file" with just headers, then gradually add content to each section. Use screenshots sparingly, only for complex UIs where it is difficult to describe a UI element with words. Refer to our [General Guidelines](../writing-documentation#writing-guidelines) for writing tips and authentik-specific rules. +Edit your markdown file as you work, reading this page for the descriptions of each section. You can build out a "stub file" with just headers, then gradually add content to each section. Use screenshots sparingly, only for complex UIs where it is difficult to describe a UI element with words. Refer to our [Style Guide](../style-guide.mdx) for writing tips and authentik-specific rules. ::: For a procedural topic, use a title that focuses on the task you are writing about. For example, "Add a new Group" or "Edit user profiles". For procedural docs, there should be a verb in the title, and usually the noun (the component or object you are working on). For the title (and all headings) use the infinitive form of the verb (i.e. "add") not the gerund form (i.e. "adding"). diff --git a/website/developer-docs/docs/templates/reference.md b/website/developer-docs/docs/templates/reference.md index a920d4118a8b..540758fb9601 100644 --- a/website/developer-docs/docs/templates/reference.md +++ b/website/developer-docs/docs/templates/reference.md @@ -9,7 +9,7 @@ title: "Reference topic" wget https://raw.githubusercontent.com/goauthentik/authentik/main/website/developer-docs/docs/templates/reference.tmpl.md ``` -Edit your markdown file as you work, reading this page for the descriptions of each section. You can build out a "stub file" with just headers, then gradually add content to each section. Use screenshots sparingly, only for complex UIs where it is difficult to describe a UI element with words. Refer to our [General Guidelines](../writing-documentation#writing-guidelines) for writing tips and authentik-specific rules. +Edit your markdown file as you work, reading this page for the descriptions of each section. You can build out a "stub file" with just headers, then gradually add content to each section. Use screenshots sparingly, only for complex UIs where it is difficult to describe a UI element with words. Refer to our [Style Guide](../style-guide.mdx) for writing tips and authentik-specific rules. ::: Create a title that specifies the component you are documenting. For example, "Group attributes". diff --git a/website/developer-docs/docs/writing-documentation.md b/website/developer-docs/docs/writing-documentation.md index afb8c343d2d3..7527697c88f0 100644 --- a/website/developer-docs/docs/writing-documentation.md +++ b/website/developer-docs/docs/writing-documentation.md @@ -2,7 +2,21 @@ title: Writing documentation --- -Writing documentation for authentik is a great way for both new and experienced users to improve and contribute to the project. +Writing documentation for authentik is a great way for both new and experienced users to improve and contribute to the project. We appreciate contributions to our documentation; everything from fixing a typo to adding additional content to writing a completely new topic. + +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. + +- 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. + +- 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. + +- 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 @@ -12,7 +26,7 @@ Requirements: 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. -You can do local builds of the documentation to test your changes or review your new content, and to run the required `prettier` and linters before pushing your PR. +You can do local builds of the documentation to test your changes or review your new content, and to run the required `make website` command (which runs `prettier` and other linters) before pushing your PR. The documentation site is situated in the `/website` folder of the repo. @@ -28,22 +42,12 @@ The site is built using npm, below are some useful make commands: - **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. :::info Be sure to run a formatting command before committing changes. ::: -## Writing guidelines - -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. - -Whenever possible, use one of our [doc templates](./templates/index.md). This makes it a lot easier for you (no blank page frights!) and keeps the documentation consistent. - -Make sure to add the new pages to the appropriate place in `/website/sidebars.js`. Otherwise, the content will not appear in the table of contents to the left. - -Following the guidelines will make getting your PRs merged much easier and faster, with fewer edits needed. We appreciate our community contributors helping us keep the Docs consistent, easy-to-use, and high quality. - ## Documentation for Integrations In addition to following the [Style Guide](./style-guide.mdx) please review the following guidelines. diff --git a/website/docs/flow/create-flow.png b/website/docs/flow/create-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..8415128c95efc3200f3d09da65caf6a79495a882 GIT binary patch literal 115318 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∋rwV; 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 HQ!e}qQMH&S literal 0 HcmV?d00001 diff --git a/website/docs/flow/index.md b/website/docs/flow/index.md index 8b8f1dd610e9..d36a87dbb889 100644 --- a/website/docs/flow/index.md +++ b/website/docs/flow/index.md @@ -1,80 +1,103 @@ --- -title: Overview +title: Flows --- -Flows are a method of describing a sequence of stages. A stage represents a single verification or logic step. They are used to authenticate users, enroll them, and more. +Flows are a major component in authentik. In conjunction with stages and [policies](../policies/index.md), flows are at the heart of our system of building blocks, used to define and execute the workflows of authentication, authorization, enrollment, and user settings. + +There are over a dozen default, out-of-the box flows available in authentik. Users can decide if they already have everything they need with the default flows or if they want to [create](#create-a-custom-flow) their own custom flow, using the Admin interface. + +A flow is a method of describing a sequence of stages. A stage represents a single verification or logic step. By connecting a series of stages within a flow (and optionally attaching policies as needed) you can build a highly flexible process for authenticating users, enrolling them, and more. For example, a standard login flow would consist of the following stages: -- Identification, user identifies themselves via a username or email address -- Password, the user's password is checked against the hash in the database -- Log the user in +- **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 +- **Login stage**: this stage attaches a currently pending user to the current session + +When these stages are successfully completed, authentik logs in the user. + +![](./simple_stages.png) + +By default, policies are evaluated dynamically, right before the stage (to which a policy is bound) is presented to the user. This flexibility allows the login process to continue, change, or stop, based on the success or failure of each policy. -Upon flow execution, a plan containing all stages is generated. This means that all attached policies are evaluated upon execution. This behaviour can be altered by enabling the **Evaluate when stage is run** option on the binding. +This default behaviour can be altered by enabling the **Evaluate when flow is planned** option on the stage binding. With this setting a _flow plan_ containing all stages is generated upon flow execution. This means that all attached policies are evaluated upon execution. For more information about flow plans, read our [flow context documentation](../flow/context/index.md). To determine which flow should be used, authentik will first check which default authentication flow is configured in the active [**Brand**](../core/brands.md). If no default is configured there, the policies in all flows with the matching designation are checked, and the first flow with matching policies sorted by `slug` will be used. ## Permissions -Flows can have policies assigned to them. These policies determine if the current user is allowed to see and use this flow. +Flows can have [policies](../flow/stages/index.md) assigned to them. These policies determine if the current user is allowed to see and use this flow. Keep in mind that in certain circumstances, policies cannot match against users and groups as there is no authenticated user yet. -### Denied action +## Import & Export + +Flows can be imported and exported to share with other people, the community, and for troubleshooting. Flows can be imported to apply new functionality and apply existing workflows. + +Download our [Example flows](./examples/flows.md) and then import them into your authentik instance. + +Starting with authentik 2022.8, flows will be exported as YAML, but JSON-based flows can still be imported. -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. +## Create a custom flow -- `MESSAGE_CONTINUE`: Show a message if no `?next` parameter is set, otherwise redirect. -- `MESSAGE`: Always show error message. -- `CONTINUE`: Always redirect, either to `?next` if set, otherwise to the default interface. +To create a flow, follow these steps: -## Designation +1. Log in as an admin to authentik, and go to the Admin interface. +2. In the Admin interface, navigate to **Flows and Stages -> Flows**. +3. Click **Create**, define the flow using the [configuration settings](#flow-configuration-options) described below, and then click **Finish**. -Flows are designated for a single purpose. This designation changes when a flow is used. The following designations are available: +After creating the flow, you can then [bind specific stages](../flow/stages/index.md#bind-a-stage-to-a-flow) to the flow and [bind policies](../policies/working_with_policies/working_with_policies.md) to the flow to further customize the user's log in and authentication process. -#### Authentication +To determine which flow should be used, authentik will first check which default authentication flow is configured in the active [**Brand**](../core/brands.md). If no default is configured there, the policies in all flows with the matching designation are checked, and the first flow with matching policies sorted by `slug` will be used. -This is designates a flow to be used for authentication. +## Flow configuration options -The authentication flow should always contain a [**User Login**](stages/user_login/index.md) stage, which attaches the staged user to the current session. +When creating or editing a flow in the UI of the Admin interface, you can set the following configuration options. -#### Invalidation +![](./create-flow.png) -This designates a flow to be used to invalidate a session. +**Name**: Enter a descriptive name. This is the name that will appear on the list of flows in the Admin interface. -This flow should always contain a [**User Logout**](stages/user_logout.md) stage, which resets the current session. +**Title**: This is the title that will appear on the flow as the end-user logs in and encounters the flow. -#### Enrollment +**Slug**: The slug will be used, and appear, in the URL when the flow is in use. -This designates a flow for enrollment. This flow can contain any amount of verification stages, such as [**email**](stages/email/) or [**captcha**](stages/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. +**Designation**: Flows are designated for a single purpose. This designation changes when a flow is used. The following designations are available: -#### Unenrollment +- **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. -This designates a flow for unenrollment. This flow can contain any amount of verification stages, such as [**email**](stages/email/) or [**captcha**](stages/captcha/). As a final stage, to delete the account, use the [**user_delete**](stages/user_delete.md) stage. +- **Authorization**: designates a flow to be used for authorization. The authorization flow `default-provider-authorization-explicit-consent` should always contain a consent stage. -#### Recovery +- **Invalidation**: designates a flow to be used to invalidate a session. This flow should always contain a [**User Logout**](stages/user_logout.md) stage, which resets the current session. -This designates a flow for recovery. This flow normally contains an [**identification**](stages/identification/) stage to find the user. It can also contain any amount of verification stages, such as [**email**](stages/email/) or [**captcha**](stages/captcha/). -Afterwards, use the [**prompt**](stages/prompt/) stage to ask the user for a new password and the [**user_write**](stages/user_write.md) stage to update the password. +- **Enrollment**: designates a flow for enrollment. This flow can contain any amount of verification stages, such as [**email**](stages/email/) or [**captcha**](stages/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. -#### Stage configuration +- **Unenrollment**: designates a flow for unenrollment. This flow can contain any amount of verification stages, such as [**email**](stages/email/) or [**captcha**](stages/captcha/). As a final stage, to delete the account, use the [**user_delete**](stages/user_delete.md) stage. -This 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 Factors, like change a password and setup TOTP. +- **Recovery**: designates a flow for recovery. This flow normally contains an [**identification**](stages/identification/) stage to find the user. It can also contain any amount of verification stages, such as [**email**](stages/email/) or [**captcha**](stages/captcha/). Afterwards, use the [**prompt**](stages/prompt/) stage to ask the user for a new password and the [**user_write**](stages/user_write.md) stage to update the password. -## Import & Export +- **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 Factors, like change a password and setup TOTP. -Flows can be imported and exported to share with other people, the community and for troubleshooting. Flows can be imported to apply new functionality and apply existing workflows. +**Authentication**: Using this option, you can configure whether the the flow requires initial authentication or not, whether the user must be a superuser, or if the flow requires an outpost. -Download our [Example flows](./examples/flows.md) and then import them into your authentik instance. +**Behavior settings**: -Starting with authentik 2022.8, flows will be exported as YAML, but JSON-based flows can still be imported. +- **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. + + 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. -## Behavior settings + - `MESSAGE_CONTINUE`: Show a message if no `?next` parameter is set, otherwise redirect. + - `MESSAGE`: Always show error message. + - `CONTINUE`: Always redirect, either to `?next` if set, otherwise to the default interface. -### Compatibility mode +- **Policy engine mode**: Configure the flow to succeed in _any_ policy passes, or only if _all_ policies pass. -The compatibility mode increases compatibility with password managers. 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. +**Appearance Settings**: -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. +- **Layout**: select how the UI displays the flow when it is executed; with stacked elements, content left or right, and sidebar left or right. -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. +- **Background**: optionally, select a background image for the UI presentation of the flow. diff --git a/website/docs/flow/simple_stages.png b/website/docs/flow/simple_stages.png new file mode 100644 index 0000000000000000000000000000000000000000..1d5c4d08aea20bd89d9489fc3a4be32d95e58759 GIT binary patch literal 46450 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

OZx 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 flow_policy_0{{"Policy (Event Matcher Policy) +default-match-update"}} +flow_policy_0 --Policy denied--> done[["End of the flow"]] +flow_policy_0 --> flow_start[["Flow +Welcome to authentik!"]] +stage_0_policy_0 --Policy passed--> stage_0(["Stage (Identification Stage) +default-authentication-identification"]) +stage_1_policy_0 --Policy passed--> stage_1(["Stage (Password Stage) +default-authentication-password"]) +--> stage_2(["Stage (Authenticator Validation Stage) +default-authentication-mfa-validation"]) +--> stage_3(["Stage (User Login Stage) +default-authentication-login"]) +flow_start --> stage_0_policy_0{{"Policy (Event Matcher Policy) +default-match-configuration-error"}} +stage_0 --> stage_1_policy_0{{"Policy (Expression Policy) +default-authentication-flow-password-stage"}} +stage_0_policy_0 --Policy denied--> stage_1(["Stage (Password Stage) +default-authentication-password"]) +stage_1_policy_0 --Policy denied--> stage_2(["Stage (Authenticator Validation Stage) +default-authentication-mfa-validation"]) +stage_3 --> done[["End of the flow"]] +``` + +## Create a Stage + +To create a stage, follow these steps: + +1. Log in as an admin to authentik, and go to the Admin interface. +2. In the Admin interface, navigate to **Flows and Stages -> Stages**. +3. Click **Create**, define the flow using the configuration settings, and then click **Finish**. + +After creating the stage, you can then [bind the stage to a flow](#bind-a-stage-to-a-flow) or [bind a policy to the stage](../../policies/working_with_policies/working_with_policies.md) (the policy determines whether or not the stage will be implemented in the flow). + +## Bind a stage to a flow + +To bind a stage to a flow, follow these steps: + +1. Log in as an admin to authentik, and go to the Admin interface. +2. In the Admin interface, navigate to **Flows and Stages -> Flows**. +3. In the list of flows, click the name of the flow to which you want to bind one or more stages. +4. On the Flow page, click the **Stage Bindings** tab at the top. +5. Here, you can decide if you want to create a new stage and bind it to the flow (**Create and bind Stage**), or if you want to select an existing stage and bind it to the flow (**Bind existing stage**). diff --git a/website/docs/policies/expression.mdx b/website/docs/policies/expression.mdx index f8f682c6ca84..246ff56a58d3 100644 --- a/website/docs/policies/expression.mdx +++ b/website/docs/policies/expression.mdx @@ -2,19 +2,32 @@ title: Expression Policies --- -The passing of the policy is determined by the return value of the code. Use +Expression policies are perhaps the most flexible way to define specific implementations of flows and stages. With Expression polices, you can provide Python code to enforce custom checks and validation. + +The passing of the policy is determined by the return value of the code. + +To pass a policy, use: ```python return True ``` -to pass a policy and +To fail a policy use: ```python return False ``` -to fail it. +**Example**: +Here's a simple policy that you could bind to a MFA validation stage if you want to specify that only certain users should be prompted for MFA validation: + +``` +if request.context["pending_user"].username == "marie": + return True +return False +``` + +If the return is `True` that means Yes, use this stage (i.e. the user will get the MFA prompt). A return of `False` means remove this stage from the plan. ## Available Functions diff --git a/website/docs/policies/index.md b/website/docs/policies/index.md index d1da93acc0c3..de22d087474a 100644 --- a/website/docs/policies/index.md +++ b/website/docs/policies/index.md @@ -2,30 +2,35 @@ title: Policies --- -## Event-matcher policy +Policies provide customization and flexibility when defining your users' login and authentication experience. -This policy is used by the events subsystem. You can use this policy to match events by multiple different criteria, to choose when you get notified. +In effect, policies determine whether or not a specific stage is applied to a flow, or whether certain users can even access the flow. -## Expression policy +For example, you can create a policy that, for certain users, skips over a stage that prompts for MFA input. Or, you can define a policy that allows users to access a login flow only if the policy criteria are met. See below for other policies, including the reputation policy and an events-driven policy to manage notifications. -See [Expression policy](expression.mdx). +For instructions about creating and binding policies to flows and stages, refer to ["Working with policies](docs/policies/working_with_policies/working_with_policies.md)". -## GeoIP policy +## Standard policies -Use this policy for simple GeoIP lookups, such as country or ASN matching. (For a more advanced GeoIP lookup, use an [Expression policy](expression.mdx).) +The following policies are our standard, out-of-the box policies. -## Have I Been Pwned policy +### Event-matcher policy -:::info -This policy is deprecated since authentik 2022.11.0, as this can be done with the password policy now. -::: -This policy checks the hashed password against the [Have I Been Pwned](https://haveibeenpwned.com/) API. This only sends the first 5 characters of the hashed password. The remaining comparison is done within authentik. +This policy is used by the events subsystem. You can use this policy to match events by multiple different criteria, to choose when you get notified. + +### Expression Policy -## Password-Expiry policy +See [Expression Policy](expression.mdx). + +### GeoIP policy + +Use this policy for simple GeoIP lookups, such as country or ASN matching. (For a more advanced GeoIP lookup, use an [Expression policy](expression.mdx).) + +### Password-Expiry Policy This policy can enforce regular password rotation by expiring set passwords after a finite amount of time. This forces users to set a new password. -## Password policy +### Password Policy This policy allows you to specify password rules, such as length and required characters. The following rules can be set: @@ -41,10 +46,18 @@ Starting with authentik 2022.11.0, the following checks can also be done with th - 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. -## Reputation policy +### Reputation Policy authentik keeps track of failed login attempts by source IP and attempted username. These values are saved as scores. Each failed login decreases the score for the client IP as well as the targeted username by 1 (one). -This policy can be used, for example, to prompt clients with a low score to pass a captcha before they can continue. +This policy can be used, for example, to prompt clients with a low score to pass a CAPTCHA test before they can continue. To make sure this policy is executed correctly, set _Evaluate when stage is run_ when using it with a flow. + +### Have I Been Pwned Policy + +:::info +This policy is deprecated since authentik 2022.11.0, as this can be done with the password policy now. +::: + +This policy checks the hashed password against the [Have I Been Pwned](https://haveibeenpwned.com/) API. This only sends the first 5 characters of the hashed password. The remaining comparison is done within authentik. diff --git a/website/docs/policies/working_with_policies/working_with_policies.md b/website/docs/policies/working_with_policies/working_with_policies.md new file mode 100644 index 000000000000..1d33f4bf26b4 --- /dev/null +++ b/website/docs/policies/working_with_policies/working_with_policies.md @@ -0,0 +1,48 @@ +--- +title: Working with policies +--- + +For an overview of policies, refer to our documentation on [Policies](../index.md). + +authentik provides several [standard policy types](../index.md#standard-policies), which can be configured for your specific needs. + +We also document how to use a policy to [whitelist email domains](../working_with_policies/whitelist_email.md) and to [ensure unique email addresses](../working_with_policies/unique_email.md). + +## Create a policy + +To create a new policy, follow these steps: + +1. Log in as an admin to authentik, and go to the Admin interface. +2. In the Admin interface, navigate to **Customization -> Policies**. +3. Click **Create**, and select the type of policy. +4. Define the policy and click **Finish**. + +## Bind a policy to a flow or stage + +After creating the policy, you can bind it to either a [flow](../../flow/index.md) or to a [stage](../../flow/stages/index.md). + +:::info +Bindings are instantiated objects themselves, and conceptually can be considered as the "connector" between the policy and the stage or flow. This is why you might read about "binding a binding", because technically, a binding is "spliced" into another binding, in order to intercept and enforce the criteria defined in the policy. You can edit bindings on a flow's **Stage Bindings** tab. +::: + +### Bind a policy to a flow + +These bindings control which users can access a flow. + +1. Log in as an admin to authentik, and open the Admin interface. +2. In the Admin interface, navigate to **Flows and Stages -> Flows**. +3. In the list of flows, click on the name of the flow to which you want to bind a policy. +4. Click on the **Policy/Group/User Bindings** tab at the top of the page. +5. Here, you can decide if you want to create a new policy and bind it to the flow (**Create and bind Policy**), or if you want to select an existing policy and bind it to the flow (**Bind existing policy/group/user**). + +### Bind a policy to a stage + +These bindings control which stages are applied to a flow. + +1. Log in as an admin to authentik, and open the Admin interface. +2. In the Admin interface, navigate to **Flows and Stages -> Flows**. +3. In the list of flows, click on the name of the flow to which you want to bind a policy. +4. Click on the **Stage Bindings** tab at the top of the page. +5. Click the arrow (**>**) beside the name of the stage to which you want to bind a policy. + The details for that stage displays. +6. Here, you can decide if you want to create a new policy and bind it to the stage (**Create and bind Policy**), or if you want to select an existing policy and bind it to the stage (**Bind existing policy/group/user**). diff --git a/website/sidebars.js b/website/sidebars.js index 363b10f5890f..58c03437bc39 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -264,10 +264,8 @@ const docsSidebar = { type: "category", label: "Stages", link: { - type: "generated-index", - title: "Stages", - slug: "flow/stages", - description: "Overview of all available stages", + type: "doc", + id: "flow/stages/index", }, items: [ "flow/stages/authenticator_duo/index", @@ -302,10 +300,8 @@ const docsSidebar = { type: "category", label: "Working with policies", link: { - type: "generated-index", - title: "Working with policies", - slug: "policies/working_with_policies", - description: "Overview of policies configuration", + type: "doc", + id: "policies/working_with_policies/working_with_policies", }, items: [ "policies/working_with_policies/whitelist_email",