authentik fork
This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Ken Sternberg 6228931305 This commit abstracts access to the object `rootInterface()?.config?` into a single accessor,
`authentikConfig`, that can be mixed into any AKElement object that requires access to it.

Since access to `rootInterface()?.config?` is _universally_ used for a single (and repetitive)
boolean check, a separate accessor has been provided that converts all calls of the form:

``` javascript
rootInterface()?.config?.capabilities.includes(CapabilitiesEnum.CanImpersonate)
```

into:

``` javascript
this.can(CapabilitiesEnum.CanImpersonate)
```

It does this via a Mixin, `WithCapabilitiesConfig`, which understands that these calls only make
sense in the context of a running, fully configured authentik instance, and that their purpose is to
inform authentik components of a user’s capabilities. The latter is why I don’t feel uncomfortable
turning a function call into a method; we should make it explicit that this is a relationship
between components.

The mixin has a single single field, `[WCC.capabilitiesConfig]`, where its association with the
upper-level configuration is made. If that syntax looks peculiar to you, good! I’ve used an explict
unique symbol as the field name; it is inaccessable an innumerable in the object list. The debugger
shows it only as:

    Symbol(): {
        cacheTimeout: 300
        cacheTimeoutFlows: 300
        cacheTimeoutPolicies: 300
        cacheTimeoutReputation: 300
        capabilities: (5) ['can_save_media', 'can_geo_ip', 'can_impersonate', 'can_debug', 'is_enterprise']
    }

Since you can’t reference it by identity, you can’t write to it. Until every browser supports actual
private fields, this is the best we can do; it does guarantee that field name collisions are
impossible, which is a win.

The mixin takes a second optional boolean; setting this to true will cause any web component using
the mixin to automatically schedule a re-render if the capabilities list changes.

The mixin is also generic; despite the "...into a Lit-Context" in the title, the internals of the
Mixin can be replaced with anything so long as the signature of `.can()` is preserved.

Because this work builds off the work I did to give the Sidebar access to the configuration without
ad-hoc retrieval or prop-drilling, it wasn’t necessary to create a new context for it. That will be
necessary for the following:

TODO:

``` javascript
rootInterface()?.uiConfig;
rootInterface()?.tenant;
me();
```
2023-11-29 14:32:54 -08:00
.github events: fix lint (#7700) 2023-11-23 23:59:42 +01:00
.vscode core: fix sources get icon naming (#7674) 2023-11-21 21:38:30 +01:00
authentik root: disable django-silk profiler (#7715) 2023-11-28 12:23:19 +02:00
blueprints stages/identification: add option to pretend user exists (#7610) 2023-11-18 01:55:48 +01:00
cmd web/flows: bottom-align about text on flows page (#7051) 2023-10-03 14:10:10 +02:00
internal release: 2023.10.4 2023-11-21 19:29:02 +01:00
lifecycle lifecycle: rework otp_merge migration (#7359) 2023-10-28 17:56:04 +02:00
locale core: compile backend translations (#7637) 2023-11-20 12:44:49 +01:00
schemas providers: SCIM (#4835) 2023-03-06 19:39:08 +01:00
scripts providers/oauth2: fix id_token being saved incorrectly leading to lost claims (#6645) 2023-08-28 00:51:48 +02:00
tests web: bump the eslint group in /tests/wdio with 2 updates (#7729) 2023-11-29 15:37:09 +02:00
web This commit abstracts access to the object `rootInterface()?.config?` into a single accessor, 2023-11-29 14:32:54 -08:00
website website/docs: add link to install video (#7728) 2023-11-28 19:46:52 -06:00
.bumpversion.cfg release: 2023.10.4 2023-11-21 19:29:02 +01:00
.dockerignore root: don't exclude enterprise from container image (#6956) 2023-09-22 16:22:16 +02:00
.editorconfig website: codespell with custom dictionary and CI (#5062) 2023-03-24 00:24:55 +01:00
.gitignore root: Ignore the vendor folder (#7094) 2023-10-06 17:50:46 +02:00
CODEOWNERS web: bump the eslint group in /web with 1 update (#7039) 2023-10-02 19:37:32 +02:00
CODE_OF_CONDUCT.md root: rework and expand security policy 2022-11-28 12:10:53 +01:00
CONTRIBUTING.md website/developer-docs: move contributing to dev docs index and link contributing file (#5554) 2023-05-09 20:26:55 +02:00
Dockerfile core: bump python from 3.11.5-bookworm to 3.12.0-bookworm (#7048) 2023-11-22 12:52:17 +01:00
LICENSE enterprise: initial license (#5293) 2023-04-19 16:13:45 +02:00
Makefile website: bump the docusaurus group in /website with 3 updates (#7400) 2023-11-06 15:12:23 +01:00
README.md root: remove outdated sponsorship section on readme (#6973) 2023-09-25 16:38:50 +02:00
SECURITY.md website: update 2023.8 release notes (#6666) 2023-08-29 19:57:14 +02:00
docker-compose.yml release: 2023.10.4 2023-11-21 19:29:02 +01:00
go.mod core: bump golang.org/x/oauth2 from 0.14.0 to 0.15.0 (#7719) 2023-11-29 00:43:26 +02:00
go.sum core: bump golang.org/x/oauth2 from 0.14.0 to 0.15.0 (#7719) 2023-11-29 00:43:26 +02:00
ldap.Dockerfile core: bump golang from 1.21.3-bookworm to 1.21.4-bookworm 2023-11-08 11:13:24 +01:00
manage.py root: update deprecation warnings 2022-11-25 11:47:28 +01:00
poetry.lock core: bump python from 3.11.5-bookworm to 3.12.0-bookworm (#7048) 2023-11-22 12:52:17 +01:00
proxy.Dockerfile core: bump golang from 1.21.3-bookworm to 1.21.4-bookworm 2023-11-08 11:13:24 +01:00
pyproject.toml core: bump python from 3.11.5-bookworm to 3.12.0-bookworm (#7048) 2023-11-22 12:52:17 +01:00
radius.Dockerfile core: bump golang from 1.21.3-bookworm to 1.21.4-bookworm 2023-11-08 11:13:24 +01:00
schema.yml release: 2023.10.4 2023-11-21 19:29:02 +01:00

README.md

authentik logo


Join Discord GitHub Workflow Status GitHub Workflow Status GitHub Workflow Status Code Coverage Docker pulls Latest version

What is authentik?

authentik is an open-source Identity Provider that emphasizes flexibility and versatility. It can be seamlessly integrated into existing environments to support new protocols. authentik is also a great solution for implementing sign-up, recovery, and other similar features in your application, saving you the hassle of dealing with them.

Installation

For small/test setups it is recommended to use Docker Compose; refer to the documentation.

For bigger setups, there is a Helm Chart here. This is documented here.

Screenshots

Light Dark

Development

See Developer Documentation

Security

See SECURITY.md

Adoption and Contributions

Your organization uses authentik? We'd love to add your logo to the readme and our website! Email us @ hello@goauthentik.io or open a GitHub Issue/PR! For more information on how to contribute to authentik, please refer to our CONTRIBUTING.md file.