{"repo":"goauthentik/authentik","free":true,"listed":false,"github":"https://github.com/goauthentik/authentik","clone":"git clone https://github.com/goauthentik/authentik.git","description":"The authentication glue you need.","language":"Python","stars":24864,"topics":["authentication","authentik","authorization","kubernetes","oauth2","oauth2-client","oauth2-server","oidc","oidc-client","oidc-provider","proxy","reverse-proxy","saml","saml-idp","saml-sp","security","sso"],"license":null,"category":"identity_provider","readme_excerpt":"<p align=\"center\">\n    <img src=\"https://goauthentik.io/img/icon_top_brand_colour.svg\" height=\"150\" alt=\"authentik logo\">\n</p>\n\n---\n\n[![Join Discord](https://img.shields.io/discord/809154715984199690?label=Discord&style=for-the-badge)](https://goauthentik.io/discord)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/goauthentik/authentik/ci-main.yml?branch=main&label=core%20build&style=for-the-badge)](https://github.com/goauthentik/authentik/actions/workflows/ci-main.yml)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/goauthentik/authentik/ci-outpost.yml?branch=main&label=outpost%20build&style=for-the-badge)](https://github.com/goauthentik/authentik/actions/workflows/ci-outpost.yml)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/goauthentik/authentik/ci-web.yml?branch=main&label=web%20build&style=for-the-badge)](https://github.com/goauthentik/authentik/actions/workflows/ci-web.yml)\n[![Code Coverage](https://img.shields.io/codecov/c/gh/goauthentik/authentik?style=for-the-badge)](https://codecov.io/gh/goauthentik/authentik)\n![Latest version](https://img.shields.io/docker/v/authentik/server?sort=semver&style=for-the-badge)\n[![](https://img.shields.io/badge/Help%20translate-transifex-blue?style=for-the-badge)](https://explore.transifex.com/authentik/authentik/)\n\n## What is authentik?\n\nauthentik is an open-source Identity Provider (IdP) for modern SSO. It supports SAML, OAuth2/OIDC, LDAP, RADIUS, and more, designed for self-hosting from small labs to large production clusters.\n\nOur [enterprise offering](https://goauthentik.io/pricing) is available for organizations to securely replace existing IdPs such as Okta, Auth0, Entra ID, and Ping Identity for robust, large-scale identity management.\n\n## Installation\n\n- Docker Compose: recommended for small/test setups. See the [documentation](https://docs.goauthentik.io/docs/install-config/install/docker-compose/).\n- Kubernetes (Helm Chart): recommended for larger setups. See the [documentation](https://docs.goauthentik.io/docs/install-config/install/kubernetes/) and the Helm chart [repository](https://github.com/goauthentik/helm).\n- AWS CloudFormation: deploy on AWS using our official templates. See the [documentation](https://docs.goauthentik.io/docs/install-config/install/aws/).\n- DigitalOcean Marketplace: one-click deployment via the official Marketplace app. See the [app listing](https://marketplace.digitalocean.com/apps/authentik).\n\n## Screenshots\n\n| Light                                                       | Dark                                                       |\n| ----------------------------------------------------------- | ---------------------------------------------------------- |\n| ![](https://docs.goauthentik.io/img/screen_apps_light.jpg)  | ![](https://docs.goauthentik.io/img/screen_apps_dark.jpg)  |\n| ![](https://docs.goauthentik.io/img/screen_admin_light.jpg) | ![](https://docs.goauthentik.io/img/screen_admin_dark.jpg) |\n\n## Development and contributions\n\nSee the [Developer Documentation](https://docs.goauthentik.io/docs/developer-docs/) for information about setting up local build environments, testing your contributions, and our contribution process.\n\nWhen you contribute documentation, either to accompany a code change or as a standalone contribution, please be sure to follow our documentation [Style Guide](website/docs/developer-docs/docs/style-guide.mdx).\n\n## Security\n\nPlease see [SECURITY.md](SECURITY.md).\n\n## Adoption\n\nUsing authentik? We'd love to hear your story and feature your logo. Email us at [hello@goauthentik.io](mailto:hello@goauthentik.io) or open a GitHub Issue/PR!\n\n## License\n\n[![MIT License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](LICENSE)\n[![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey?style=for-the-badge)](website/LICENSE)\n[![authentik EE License](https://img.shields.io/badge/License-EE-orange?style=for-the-badge)](authentik/enterprise/LICENSE)\n","default_branch":"main","files":6395,"tree":[".cargo/config.toml",".cargo/deny.toml",".cargo/rustfmt.toml",".dockerignore",".editorconfig",".gitattributes",".github/FUNDING.yml",".github/ISSUE_TEMPLATE/1-bug-report.yml",".github/ISSUE_TEMPLATE/2-docs-issue.yml",".github/ISSUE_TEMPLATE/3-feature-request.yml",".github/ISSUE_TEMPLATE/config.yml",".github/actions/comment-pr-instructions/action.yml",".github/actions/compute-container-tags/action.yml",".github/actions/setup/action.yml",".github/actions/setup/compose.yml",".github/actions/test-results/action.yml",".github/codecov.yml",".github/dependabot.yml",".github/pull_request_template.md",".github/transifex.yml",".github/workflows/_reusable-container-build-single.yml",".github/workflows/_reusable-container-build.yml",".github/workflows/ci-api-docs.yml",".github/workflows/ci-aws-cfn.yml",".github/workflows/ci-docs-source.yml",".github/workflows/ci-docs.yml",".github/workflows/ci-main-daily.yml",".github/workflows/ci-main.yml",".github/workflows/ci-outpost.yml",".github/workflows/ci-web.yml",".github/workflows/gen-image-compress.yml",".github/workflows/gen-update-webauthn-mds.yml",".github/workflows/gh-gha-cache-cleanup.yml",".github/workflows/gh-ghcr-retention.yml",".github/workflows/packages-npm-publish.yml",".github/workflows/qa-codeql.yml",".github/workflows/qa-dependency-review.yml",".github/workflows/qa-semgrep.yml",".github/workflows/release-branch-off.yml",".github/workflows/release-next-branch.yml",".github/workflows/release-publish.yml",".github/workflows/release-tag.yml",".github/workflows/repo-stale.yml",".github/workflows/translation-advice.yml",".github/workflows/translation-extract-compile.yml",".gitignore",".npmrc",".nvmrc",".prettierignore",".vscode/extensions.json",".vscode/launch.json",".vscode/settings.json",".vscode/tasks.json","AGENTS.md","AI_POLICY.md","CLAUDE.md","CODEOWNERS","CODE_OF_CONDUCT.md","CONTRIBUTING.md","Cargo.lock","Cargo.toml","LICENSE","Makefile","README.md","SECURITY.md","authentik/__init__.py","authentik/admin/__init__.py","authentik/admin/api/__init__.py","authentik/admin/api/meta.py","authentik/admin/api/system.py","authentik/admin/api/version.py","authentik/admin/api/version_history.py","authentik/admin/apps.py","authentik/admin/files/__init__.py","authentik/admin/files/api.py","authentik/admin/files/apps.py","authentik/admin/files/backends/__init__.py","authentik/admin/files/backends/base.py","authentik/admin/files/backends/file.py","authentik/admin/files/backends/passthrough.py","authentik/admin/files/backends/s3.py","authentik/admin/files/backends/static.py","authentik/admin/files/backends/tests/__init__.py","authentik/admin/files/backends/tests/test_file_backend.py","authentik/admin/files/backends/tests/test_passthrough_backend.py","authentik/admin/files/backends/tests/test_s3_backend.py","authentik/admin/files/backends/tests/test_static_backend.py","authentik/admin/files/fields.py","authentik/admin/files/manager.py","authentik/admin/files/tests/__init__.py","authentik/admin/files/tests/test_api.py","authentik/admin/files/tests/test_manager.py","authentik/admin/files/tests/test_validation.py","authentik/admin/files/tests/utils.py","authentik/admin/files/urls.py","authentik/admin/files/usage.py","authentik/admin/files/validation.py","authentik/admin/models.py","authentik/admin/signals.py","authentik/admin/tasks.py","authentik/admin/tests/__init__.py","authentik/admin/tests/test_api.py","authentik/admin/tests/test_tasks.py","authentik/admin/urls.py","authentik/api/__init__.py","authentik/api/apps.py","authentik/api/authentication.py","authentik/api/management/__init__.py","authentik/api/management/commands/__init__.py","authentik/api/management/commands/build_schema.py","authentik/api/ordering.py","authentik/api/pagination.py","authentik/api/parsers.py","authentik/api/renderers.py","authentik/api/search/__init__.py","authentik/api/search/fields.py","authentik/api/search/ql.py","authentik/api/search/schema.py","authentik/api/templates/api/browser.html","authentik/api/tests/__init__.py","authentik/api/tests/test_auth.py","authentik/api/tests/test_config.py","authentik/api/tests/test_ordering.py","authentik/api/tests/test_schema.py","authentik/api/tests/test_search.py","authentik/api/tests/test_throttle.py","authentik/api/tests/test_view_authn_authz.py","authentik/api/tests/test_viewsets.py","authentik/api/throttle.py","authentik/api/urls.py","authentik/api/v3/__init__.py","authentik/api/v3/config.py","authentik/api/v3/schema/__init__.py","authentik/api/v3/schema/cleanup.py","authentik/api/v3/schema/enum.py","authentik/api/v3/schema/pagination.py","authentik/api/v3/schema/query.py","authentik/api/v3/schema/response.py","authentik/api/v3/schema/search.py","authentik/api/v3/urls.py","authentik/api/validation.py","authentik/api/views.py","authentik/blueprints/__init__.py","authentik/blueprints/api.py","authentik/blueprints/apps.py","authentik/blueprints/management/__init__.py","authentik/blueprints/management/commands/__init__.py","authentik/blueprints/management/commands/apply_blueprint.py","authentik/blueprints/management/commands/blueprint_shell.py","authentik/blueprints/management/commands/export_blueprint.py","authentik/blueprints/migrations/0001_initial.py","authentik/blueprints/migrations/0002_blueprintinstance_content.py","authentik/blueprints/migrations/0003_alter_blueprintinstance_name.py","authentik/blueprints/migrations/__init__.py","authentik/blueprints/models.py","authentik/blueprints/tasks.py","authentik/blueprints/tests/__init__.py","authentik/blueprints/tests/fixtures/conditional_fields.yaml","authentik/blueprints/tests/fixtures/conditions_fulfilled.yaml","authentik/blueprints/tests/fixtures/conditions_not_fulfilled.yaml","authentik/blueprints/tests/fixtures/rbac_object.yaml","authentik/blueprints/tests/fixtures/rbac_role.yaml","authentik/blueprints/tests/fixtures/rbac_user.yaml","authentik/blueprints/tests/fixtures/state_absent.yaml","authentik/blueprints/tests/fixtures/state_created.yaml","authentik/blueprints/tests/fixtures/state_present.yaml","authentik/blueprints/tests/fixtures/static_prompt_export.yaml","authentik/blueprints/tests/fixtures/tags.yaml","authentik/blueprints/tests/test_managed_app_config.py","authentik/blueprints/tests/test_models.py","authentik/blueprints/tests/test_oci.py","authentik/blueprints/tests/test_packaged.py","authentik/blueprints/tests/test_schema.py","authentik/blueprints/tests/test_serializer_models.py","authentik/blueprints/tests/test_v1.py","authentik/blueprints/tests/test_v1_api.py","authentik/blueprints/tests/test_v1_conditional_fields.py","authentik/blueprints/tests/test_v1_conditions.py","authentik/blueprints/tests/test_v1_rbac.py","authentik/blueprints/tests/test_v1_state.py","authentik/blueprints/tests/test_v1_tasks.py","authentik/blueprints/urls.py","authentik/blueprints/v1/__init__.py","authentik/blueprints/v1/common.py","authentik/blueprints/v1/exporter.py","authentik/blueprints/v1/importer.py","authentik/blueprints/v1/labels.py","authentik/blueprints/v1/meta/__init__.py","authentik/blueprints/v1/meta/apply_blueprint.py","authentik/blueprints/v1/meta/registry.py","authentik/blueprints/v1/oci.py","authentik/blueprints/v1/schema.py","authentik/blueprints/v1/tasks.py","authentik/brands/__init__.py","authentik/brands/api.py","authentik/brands/apps.py","authentik/brands/middleware.py","authentik/brands/migrations/0001_squashed_0005_tenant_web_certificate.py","authentik/brands/migrations/0002_tenant_flow_user_settings.py","authentik/brands/migrations/0003_tenant_attributes.py","authentik/brands/migrations/0004_tenant_flow_device_code.py","authentik/brands/migrations/0005_tenantuuid_to_branduuid.py","authentik/brands/migrations/0006_brand_authentik_b_domain_b9b24a_idx_and_more.py","authentik/brands/migrations/0007_brand_default_application.py","authentik/brands/migrations/0008_brand_branding_custom_css.py","authentik/brands/migrations/0009_brand_branding_default_flow_background.py","authentik/brands/migrations/0010_brand_client_certificates_and_more.py","authentik/brands/migrations/0011_alter_brand_branding_default_flow_background_and_more.py","authentik/brands/migrations/0012_brand_flow_lockdown.py","authentik/brands/migrations/0013_brandclientcertificate_and_more.py","authentik/brands/migrations/0014_brand_flow_request.py","authentik/brands/migrations/0015_brand_flow_user_switch.py","authentik/brands/migrations/0016_brand_branding_map_tiles.py","authentik/brands/migrations/__init__.py","authentik/brands/models.py","authentik/brands/tests/__init__.py","authentik/brands/tests/test_brands.py","authentik/brands/tests/test_current_queries.py","authentik/brands/urls.py","authentik/brands/urls_root.py","authentik/brands/utils.py","authentik/brands/views/__init__.py","authentik/brands/views/webfinger.py","authentik/commands/__init__.py","authentik/commands/apps.py","authentik/commands/management/__init__.py","authentik/commands/management/commands/__init__.py","authentik/commands/management/commands/makemigrations.py","authentik/commands/management/commands/migrate.py","authentik/commands/management/commands/migrate_schemas.py","authentik/common/__init__.py","authentik/common/oauth/__init__.py","authentik/common/oauth/constants.py","authentik/common/saml/__init__.py","authentik/common/saml/constants.py","authentik/common/saml/utils.py","authentik/core/__init__.py","authentik/core/api/__init__.py","authentik/core/api/application_entitlements.py","authentik/core/api/applications.py","authentik/core/api/authenticated_sessions.py","authentik/core/api/devices.py","authentik/core/api/groups.py","authentik/core/api/object_attributes.py","authentik/core/api/object_types.py","authentik/core/api/property_mappings.py","authentik/core/api/providers.py","authentik/core/api/sources.py","authentik/core/api/tokens.py","authentik/core/api/transactional_applications.py","authentik/core/api/used_by.py","authentik/core/api/users.py","authentik/core/api/utils.py","authentik/core/apps.py","authentik/core/auth.py","authentik/core/expression/__init__.py","authentik/core/expression/evaluator.py","authentik/core/expression/exceptions.py","authentik/core/management/__init__.py","authentik/core/management/commands/__init__.py","authentik/core/management/commands/build_source_docs.py","authentik/core/management/commands/change_user_type.py","authentik/core/management/commands/clearsessions.py","authentik/core/management/commands/dev_server.py","authentik/core/management/commands/hash_password.py","authentik/core/management/commands/repair_permissions.py","authentik/core/management/commands/shell.py","authentik/core/middleware.py","authentik/core/migrations/0001_initial.py","authentik/core/migrations/0002_auto_20200523_1133_squashed_0011_provider_name_temp.py","authentik/core/migrations/0012_auto_20201003_1737_squashed_0016_auto_20201202_2234.py","authentik/core/migrations/0017_managed.py","authentik/core/migrations/0018_auto_20210330_1345_squashed_0028_alter_token_intent.py","authentik/core/migrations/0019_application_group.py","authentik/core/migrations/0020_application_open_in_new_tab.py","authentik/core/migrations/0021_source_user_path_user_path.py","authentik/core/migrations/0022_alter_group_parent.py","authentik/core/migrations/0023_source_authentik_c_slug_ccb2e5_idx_and_more.py","authentik/core/migrations/0024_source_icon.py","authentik/core/migrations/0025_alter_provider_authorization_flow.py","authentik/core/migrations/0026_alter_propertymapping_name_alter_provider_name.py","authentik/core/migrations/0027_alter_user_uuid.py","authentik/core/migrations/0028_provider_authentication_flow.py","authentik/core/migrations/0029_provider_backchannel_applications_and_more.py","authentik/core/migrations/0030_user_type.py","authentik/core/migrations/0031_alter_user_type.py","authentik/core/migrations/0032_group_roles.py","authentik/core/migrations/0033_alter_user_options.py","authentik/core/migrations/0034_alter_authenticatedsession_expires_and_more.py","authentik/core/migrations/0035_alter_group_options_and_more.py","authentik/core/migrations/0036_source_group_property_mappings_and_more.py","authentik/core/migrations/0037_remove_source_property_mappings.py","authentik/core/migrations/0038_source_authentik_c_enabled_d72365_idx.py","authentik/core/migrations/0039_source_group_matching_mode_alter_group_name_and_more.py","authentik/core/migrations/0040_provider_invalidation_flow.py","authentik/core/migrations/0041_applicationentitlement.py","authentik/core/migrations/0042_authenticatedsession_authentik_c_expires_08251d_idx_and_more.py","authentik/core/migrations/0043_alter_group_options.py","authentik/core/migrations/0044_usersourceconnection_new_identifier.py","authentik/core/migrations/0045_rename_new_identifier_usersourceconnection_identifier_and_more.py","authentik/core/migrations/0046_session_and_more.py","authentik/core/migrations/0047_delete_oldauthenticatedsession.py","authentik/core/migrations/0048_delete_oldauthenticatedsession_content_type.py","authentik/core/migrations/0049_alter_token_options.py","authentik/core/migrations/0050_user_last_updated_and_more.py","authentik/core/migrations/0051_group_authentik_c_is_supe_1e5a97_idx.py","authentik/core/migrations/0052_source_promoted.py","authentik/core/migrations/0053_alter_application_slug_alter_source_slug.py","authentik/core/migrations/0054_alter_application_meta_icon_alter_source_icon.py","authentik/core/migrations/0055_groupancestor_groupparentagenode_group_parents.py","authentik/core/migrations/0056_user_roles.py","authentik/core/migrations/0057_remove_user_groups_remove_user_user_permissions_and_more.py","authentik/core/migrations/0058_setup.py","authentik/core/migrations/0059_add_application_meta_hide.py","authentik/core/migrations/0060_sourcegrouppropertymapping_and_more.py","authentik/core/migrations/0061_objectattribute.py","authentik/core/migrations/0062_userswitchingsession_and_more.py","authentik/core/migrations/0063_actor.py","authentik/core/migrations/__init__.py","authentik/core/models.py","authentik/core/sessions.py","authentik/core/setup/__init__.py","authentik/core/setup/signals.py","authentik/core/setup/views.py","authentik/core/signals.py","authentik/core/sources/__init__.py","authentik/core/sources/flow_manager.py","authentik/core/sources/mapper.py","authentik/core/sources/matcher.py","authentik/core/sources/stage.py","authentik/core/tasks.py","authentik/core/templates/base/header_js.html","authentik/core/templates/base/placeholder.html","authentik/core/templates/base/skeleton.html","authentik/core/templates/base/theme.html","authentik/core/templates/if/admin.html","authentik/core/templates/if/error.html","authentik/core/templates/if/user.html","authentik/core/templates/login/base_full.html","authentik/core/templatetags/__init__.py","authentik/core/templatetags/authentik_core.py","authentik/core/tests/__init__.py","authentik/core/tests/test_api_utils.py","authentik/core/tests/test_application_entitlements.py","authentik/core/tests/test_applications_api.py","authentik/core/tests/test_applications_views.py","authentik/core/tests/test_authenticated_sessions_api.py","authentik/core/tests/test_devices_api.py","authentik/core/tests/test_error_views.py","authentik/core/tests/test_groups.py","authentik/core/tests/test_groups_api.py","authentik/core/tests/test_hash_password_command.py","authentik/core/tests/test_impersonation.py","authentik/core/tests/test_interface_views.py","authentik/core/tests/test_models.py","authentik/core/tests/test_object_attributes.py","authentik/core/tests/test_property_mapping.py","authentik/core/tests/test_property_mapping_api.py","authentik/core/tests/test_providers_api.py","authentik/core/tests/test_session_concurrency.py","authentik/core/tests/test_sessions.py","authentik/core/tests/test_setup.py","authentik/core/tests/test_signals.py","authentik/core/tests/test_source_api.py","authentik/core/tests/test_source_flow_manager.py","authentik/core/tests/test_source_flow_manager_group_update_stage.py","authentik/core/tests/test_source_property_mappings.py","authentik/core/tests/test_tasks.py","authentik/core/tests/test_token_api.py","authentik/core/tests/test_token_auth.py","authentik/core/tests/test_transactional_applications_api.py","authentik/core/tests/test_user_switch.py","authentik/core/tests/test_users.py","authentik/core/tests/test_users_api.py","authentik/core/tests/test_users_avatars.py","authentik/core/tests/utils.py","authentik/core/types.py","authentik/core/urls.py","authentik/core/user_switching.py","authentik/core/views/__init__.py","authentik/core/views/apps.py","authentik/core/views/debug.py","authentik/core/views/error.py","authentik/core/views/interface.py","authentik/core/views/user_switch.py","authentik/crypto/__init__.py","authentik/crypto/api.py","authentik/crypto/apps.py","authentik/crypto/builder.py","authentik/crypto/management/commands/import_certificate.py","authentik/crypto/migrations/0001_initial.py","authentik/crypto/migrations/0002_create_self_signed_kp.py","authentik/crypto/migrations/0003_certificatekeypair_managed.py","authentik/crypto/migrations/0004_alter_certificatekeypair_name.py","authentik/crypto/migrations/0005_alter_certificatekeypair_options.py","authentik/crypto/migrations/0006_certificatekeypair_cert_expiry_and_more.py","authentik/crypto/migrations/__init__.py","authentik/crypto/models.py","authentik/crypto/signals.py","authentik/crypto/tasks.py"],"storefront":"/r/goauthentik","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/goauthentik/authentik/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}