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 afdf269869 web: funnel an API down to a single module
**Summary:**

Calls to _retrieve_, _create_, and _update_ Authenticators have been isolated into a module
functions and code accessing those features have been revised to use those functions.

**This commit**

Isolates the Authenticators APIs for `authenticatorsAllList`, `authenticatorsAdminAllList`,
`authenticators<Type>Destroy` and `authenticators<Type>Update` into a connector module, and updates
client code to use them. This eliminates the duplication of `deleteAuthenticatorDevice`, the code
for which was in both *Admin* and *User*, and creates a single source of truth for the DeviceType
strings that identify Device subtypes.

**Details**

One thing that's bothered me a lot is the way our APIs, starting on the Django side, start with a
base model and then "spread out" to incorporate many different inheritance models: different kinds
of Providers, different kinds of Outposts, and different kinds of authentication devices.

In a proper object-oriented system, we'd be granted access to the base class and have the power to
use it effectively as a generic, switchboarding on some RTTI or value type to handle the differences
between the concrete child types. The code generator we use does not provide that base model to UI
clients; "funnelling down" to create a sort of artificial base class on the client and then fanning
back out is an impractical and error-prone exercise.

But we still do a lot of switchboarding, which has three problems:

- Adding subtypes touches a lot of different code
- Distant implementations can miss a specific instance of a subtype
- Repeated use of strings as type handles can introduce spelling errors
- The [last line effect](https://link.springer.com/article/10.1007/s10664-016-9489-6) can introduce
  new and subtle bugs when cut-and-pasting prior examples
- Instances of the *same code* in multiple locations make for maintenance headaches

This patch introduces the concept of **connectors**, modules that provide CRUD functions for common
operations performed on objects of a specific subtype. It is *not* meant to replace concrete class
displays or manipulations, such as (using providers as an example) `ProxyProviderViewPage` or HTML
that is customized for a specific concrete type of provider.

For retrieving lists, deleting instances that can be addressed from the base class, or updating
objects — any place where which call among a collection of isomorphic APIs must be specifieda using
`switch/case` statements — the connector provides a single source of truth for how to recognize the
child types, which `switch/case` statements provide the utility, and what must be done to update
them.
2023-12-22 13:33:23 -08:00
.github root: make test database name configurable (#7591) 2023-12-18 23:00:24 +01:00
.vscode core: fix sources get icon naming (#7674) 2023-11-21 21:38:30 +01:00
authentik fix API 2023-12-21 19:49:38 +01:00
blueprints fix web to support string for device uuid 2023-12-19 14:20:25 +01:00
cmd root: bump python deps (django 5) (#7862) 2023-12-18 22:07:59 +01:00
internal root: fix static templates (#7925) 2023-12-19 13:59:53 +01:00
lifecycle scripts: postgres, redis: only listen on localhost (#7849) 2023-12-11 11:08:48 +00:00
locale translate: Updates for file locale/en/LC_MESSAGES/django.po in fr (#7850) 2023-12-11 10:35:19 +00:00
schemas fix web to support string for device uuid 2023-12-19 14:20:25 +01:00
scripts scripts: postgres, redis: only listen on localhost (#7849) 2023-12-11 11:08:48 +00:00
tests web: bump the wdio group in /tests/wdio with 4 updates (#7917) 2023-12-19 11:21:38 +01:00
web web: funnel an API down to a single module 2023-12-22 13:33:23 -08:00
website website/integrations: update azure AD integration (#7922) 2023-12-19 13:27:39 +01: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.12.0-slim-bookworm to 3.12.1-slim-bookworm 2023-12-11 08:04:48 +01:00
LICENSE enterprise: initial license (#5293) 2023-04-19 16:13:45 +02:00
Makefile have schema in a more general place 2023-12-19 14:19:36 +01:00
README.md root: remove outdated sponsorship section on readme (#6973) 2023-09-25 16:38:50 +02:00
SECURITY.md root: update security policy to include link to cure53 report (#7853) 2023-12-11 15:26:36 -06:00
docker-compose.yml release: 2023.10.4 2023-11-21 19:29:02 +01:00
go.mod core: bump goauthentik.io/api/v3 from 3.2023104.2 to 3.2023104.3 (#7912) 2023-12-19 11:20:44 +01:00
go.sum core: bump goauthentik.io/api/v3 from 3.2023104.2 to 3.2023104.3 (#7912) 2023-12-19 11:20:44 +01:00
ldap.Dockerfile Fix cache related image build issues 2023-12-09 06:07:21 +01:00
manage.py root: update deprecation warnings 2022-11-25 11:47:28 +01:00
poetry.lock use main pypi 2023-12-19 14:28:35 +01:00
proxy.Dockerfile Fix cache related image build issues 2023-12-09 06:07:21 +01:00
pyproject.toml use main pypi 2023-12-19 14:28:35 +01:00
radius.Dockerfile Fix cache related image build issues 2023-12-09 06:07:21 +01:00
schema.yml use uuid for mobile token 2023-12-19 14:20:25 +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.