Merge branch 'main' into celery-2-dramatiq

This commit is contained in:
Marc 'risson' Schmitt
2025-06-11 18:10:37 +02:00
97 changed files with 885 additions and 724 deletions

View File

@ -148,3 +148,14 @@ class TestBrands(APITestCase):
"default_locale": "", "default_locale": "",
}, },
) )
def test_custom_css(self):
"""Test custom_css"""
brand = create_test_brand()
brand.branding_custom_css = """* {
font-family: "Foo bar";
}"""
brand.save()
res = self.client.get(reverse("authentik_core:if-user"))
self.assertEqual(res.status_code, 200)
self.assertIn(brand.branding_custom_css, res.content.decode())

View File

@ -5,6 +5,8 @@ from typing import Any
from django.db.models import F, Q from django.db.models import F, Q
from django.db.models import Value as V from django.db.models import Value as V
from django.http.request import HttpRequest from django.http.request import HttpRequest
from django.utils.html import _json_script_escapes
from django.utils.safestring import mark_safe
from authentik import get_full_version from authentik import get_full_version
from authentik.brands.models import Brand from authentik.brands.models import Brand
@ -32,8 +34,13 @@ def context_processor(request: HttpRequest) -> dict[str, Any]:
"""Context Processor that injects brand object into every template""" """Context Processor that injects brand object into every template"""
brand = getattr(request, "brand", DEFAULT_BRAND) brand = getattr(request, "brand", DEFAULT_BRAND)
tenant = getattr(request, "tenant", Tenant()) tenant = getattr(request, "tenant", Tenant())
# similarly to `json_script` we escape everything HTML-related, however django
# only directly exposes this as a function that also wraps it in a <script> tag
# which we dont want for CSS
brand_css = mark_safe(str(brand.branding_custom_css).translate(_json_script_escapes)) # nosec
return { return {
"brand": brand, "brand": brand,
"brand_css": brand_css,
"footer_links": tenant.footer_links, "footer_links": tenant.footer_links,
"html_meta": {**get_http_meta()}, "html_meta": {**get_http_meta()},
"version": get_full_version(), "version": get_full_version(),

View File

@ -16,7 +16,7 @@
{% block head_before %} {% block head_before %}
{% endblock %} {% endblock %}
<link rel="stylesheet" type="text/css" href="{% static 'dist/authentik.css' %}"> <link rel="stylesheet" type="text/css" href="{% static 'dist/authentik.css' %}">
<style>{{ brand.branding_custom_css }}</style> <style>{{ brand_css }}</style>
<script src="{% versioned_script 'dist/poly-%v.js' %}" type="module"></script> <script src="{% versioned_script 'dist/poly-%v.js' %}" type="module"></script>
<script src="{% versioned_script 'dist/standalone/loading/index-%v.js' %}" type="module"></script> <script src="{% versioned_script 'dist/standalone/loading/index-%v.js' %}" type="module"></script>
{% block head %} {% block head %}

2
go.mod
View File

@ -29,7 +29,7 @@ require (
github.com/spf13/cobra v1.9.1 github.com/spf13/cobra v1.9.1
github.com/stretchr/testify v1.10.0 github.com/stretchr/testify v1.10.0
github.com/wwt/guac v1.3.2 github.com/wwt/guac v1.3.2
goauthentik.io/api/v3 v3.2025061.1 goauthentik.io/api/v3 v3.2025061.2
golang.org/x/exp v0.0.0-20230210204819-062eb4c674ab golang.org/x/exp v0.0.0-20230210204819-062eb4c674ab
golang.org/x/oauth2 v0.30.0 golang.org/x/oauth2 v0.30.0
golang.org/x/sync v0.15.0 golang.org/x/sync v0.15.0

4
go.sum
View File

@ -298,8 +298,8 @@ go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
goauthentik.io/api/v3 v3.2025061.1 h1:njT00q3YrYnOPbRkG4yfWuA6+EDzi+3p4wKnq7YLAu8= goauthentik.io/api/v3 v3.2025061.2 h1:bKmrl82Gz6J8lz3f+QIH9g+MEkl3MvkMXF34GktesA0=
goauthentik.io/api/v3 v3.2025061.1/go.mod h1:zz+mEZg8rY/7eEjkMGWJ2DnGqk+zqxuybGCGrR2O4Kw= goauthentik.io/api/v3 v3.2025061.2/go.mod h1:zz+mEZg8rY/7eEjkMGWJ2DnGqk+zqxuybGCGrR2O4Kw=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=

View File

@ -576,17 +576,17 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@typescript-eslint/eslint-plugin": { "node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz",
"integrity": "sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==", "integrity": "sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/regexpp": "^4.10.0", "@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.33.1", "@typescript-eslint/scope-manager": "8.34.0",
"@typescript-eslint/type-utils": "8.33.1", "@typescript-eslint/type-utils": "8.34.0",
"@typescript-eslint/utils": "8.33.1", "@typescript-eslint/utils": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1", "@typescript-eslint/visitor-keys": "8.34.0",
"graphemer": "^1.4.0", "graphemer": "^1.4.0",
"ignore": "^7.0.0", "ignore": "^7.0.0",
"natural-compare": "^1.4.0", "natural-compare": "^1.4.0",
@ -600,7 +600,7 @@
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
}, },
"peerDependencies": { "peerDependencies": {
"@typescript-eslint/parser": "^8.33.1", "@typescript-eslint/parser": "^8.34.0",
"eslint": "^8.57.0 || ^9.0.0", "eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <5.9.0" "typescript": ">=4.8.4 <5.9.0"
} }
@ -616,16 +616,16 @@
} }
}, },
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.0.tgz",
"integrity": "sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==", "integrity": "sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "8.33.1", "@typescript-eslint/scope-manager": "8.34.0",
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/typescript-estree": "8.33.1", "@typescript-eslint/typescript-estree": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1", "@typescript-eslint/visitor-keys": "8.34.0",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@ -641,14 +641,14 @@
} }
}, },
"node_modules/@typescript-eslint/project-service": { "node_modules/@typescript-eslint/project-service": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.0.tgz",
"integrity": "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==", "integrity": "sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.33.1", "@typescript-eslint/tsconfig-utils": "^8.34.0",
"@typescript-eslint/types": "^8.33.1", "@typescript-eslint/types": "^8.34.0",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@ -663,14 +663,14 @@
} }
}, },
"node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/scope-manager": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.0.tgz",
"integrity": "sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==", "integrity": "sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1" "@typescript-eslint/visitor-keys": "8.34.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -681,9 +681,9 @@
} }
}, },
"node_modules/@typescript-eslint/tsconfig-utils": { "node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz",
"integrity": "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==", "integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -698,14 +698,14 @@
} }
}, },
"node_modules/@typescript-eslint/type-utils": { "node_modules/@typescript-eslint/type-utils": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.0.tgz",
"integrity": "sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==", "integrity": "sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/typescript-estree": "8.33.1", "@typescript-eslint/typescript-estree": "8.34.0",
"@typescript-eslint/utils": "8.33.1", "@typescript-eslint/utils": "8.34.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"ts-api-utils": "^2.1.0" "ts-api-utils": "^2.1.0"
}, },
@ -722,9 +722,9 @@
} }
}, },
"node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/types": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.0.tgz",
"integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==", "integrity": "sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -736,16 +736,16 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/typescript-estree": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz",
"integrity": "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==", "integrity": "sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/project-service": "8.33.1", "@typescript-eslint/project-service": "8.34.0",
"@typescript-eslint/tsconfig-utils": "8.33.1", "@typescript-eslint/tsconfig-utils": "8.34.0",
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1", "@typescript-eslint/visitor-keys": "8.34.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"fast-glob": "^3.3.2", "fast-glob": "^3.3.2",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
@ -804,16 +804,16 @@
} }
}, },
"node_modules/@typescript-eslint/utils": { "node_modules/@typescript-eslint/utils": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.0.tgz",
"integrity": "sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==", "integrity": "sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.7.0", "@eslint-community/eslint-utils": "^4.7.0",
"@typescript-eslint/scope-manager": "8.33.1", "@typescript-eslint/scope-manager": "8.34.0",
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/typescript-estree": "8.33.1" "@typescript-eslint/typescript-estree": "8.34.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -828,13 +828,13 @@
} }
}, },
"node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/visitor-keys": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz",
"integrity": "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==", "integrity": "sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"eslint-visitor-keys": "^4.2.0" "eslint-visitor-keys": "^4.2.0"
}, },
"engines": { "engines": {
@ -4035,15 +4035,15 @@
} }
}, },
"node_modules/typescript-eslint": { "node_modules/typescript-eslint": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.1.tgz", "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.0.tgz",
"integrity": "sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==", "integrity": "sha512-MRpfN7uYjTrTGigFCt8sRyNqJFhjN0WwZecldaqhWm+wy0gaRt8Edb/3cuUy0zdq2opJWT6iXINKAtewnDOltQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/eslint-plugin": "8.33.1", "@typescript-eslint/eslint-plugin": "8.34.0",
"@typescript-eslint/parser": "8.33.1", "@typescript-eslint/parser": "8.34.0",
"@typescript-eslint/utils": "8.33.1" "@typescript-eslint/utils": "8.34.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"

View File

@ -13,7 +13,7 @@ dependencies = [
"dacite==1.9.2", "dacite==1.9.2",
"deepmerge==2.0", "deepmerge==2.0",
"defusedxml==0.7.1", "defusedxml==0.7.1",
"django==5.1.10", "django==5.1.11",
"django-countries==7.6.1", "django-countries==7.6.1",
"django-cte==1.3.3", "django-cte==1.3.3",
"django-filter==25.1", "django-filter==25.1",
@ -36,7 +36,7 @@ dependencies = [
"fido2==2.0.0", "fido2==2.0.0",
"geoip2==5.1.0", "geoip2==5.1.0",
"geopy==2.4.1", "geopy==2.4.1",
"google-api-python-client==2.171.0", "google-api-python-client==2.172.0",
"gssapi==1.9.0", "gssapi==1.9.0",
"gunicorn==23.0.0", "gunicorn==23.0.0",
"jsonpatch==1.33", "jsonpatch==1.33",
@ -44,7 +44,7 @@ dependencies = [
"kubernetes==32.0.1", "kubernetes==32.0.1",
"ldap3==2.9.1", "ldap3==2.9.1",
"lxml==5.4.0", "lxml==5.4.0",
"msgraph-sdk==1.32.0", "msgraph-sdk==1.33.0",
"opencontainers==0.0.14", "opencontainers==0.0.14",
"packaging==25.0", "packaging==25.0",
"paramiko==3.5.1", "paramiko==3.5.1",

24
uv.lock generated
View File

@ -263,7 +263,7 @@ requires-dist = [
{ name = "dacite", specifier = "==1.9.2" }, { name = "dacite", specifier = "==1.9.2" },
{ name = "deepmerge", specifier = "==2.0" }, { name = "deepmerge", specifier = "==2.0" },
{ name = "defusedxml", specifier = "==0.7.1" }, { name = "defusedxml", specifier = "==0.7.1" },
{ name = "django", specifier = "==5.1.10" }, { name = "django", specifier = "==5.1.11" },
{ name = "django-countries", specifier = "==7.6.1" }, { name = "django-countries", specifier = "==7.6.1" },
{ name = "django-cte", specifier = "==1.3.3" }, { name = "django-cte", specifier = "==1.3.3" },
{ name = "django-filter", specifier = "==25.1" }, { name = "django-filter", specifier = "==25.1" },
@ -286,7 +286,7 @@ requires-dist = [
{ name = "fido2", specifier = "==2.0.0" }, { name = "fido2", specifier = "==2.0.0" },
{ name = "geoip2", specifier = "==5.1.0" }, { name = "geoip2", specifier = "==5.1.0" },
{ name = "geopy", specifier = "==2.4.1" }, { name = "geopy", specifier = "==2.4.1" },
{ name = "google-api-python-client", specifier = "==2.171.0" }, { name = "google-api-python-client", specifier = "==2.172.0" },
{ name = "gssapi", specifier = "==1.9.0" }, { name = "gssapi", specifier = "==1.9.0" },
{ name = "gunicorn", specifier = "==23.0.0" }, { name = "gunicorn", specifier = "==23.0.0" },
{ name = "jsonpatch", specifier = "==1.33" }, { name = "jsonpatch", specifier = "==1.33" },
@ -294,7 +294,7 @@ requires-dist = [
{ name = "kubernetes", specifier = "==32.0.1" }, { name = "kubernetes", specifier = "==32.0.1" },
{ name = "ldap3", specifier = "==2.9.1" }, { name = "ldap3", specifier = "==2.9.1" },
{ name = "lxml", specifier = "==5.4.0" }, { name = "lxml", specifier = "==5.4.0" },
{ name = "msgraph-sdk", specifier = "==1.32.0" }, { name = "msgraph-sdk", specifier = "==1.33.0" },
{ name = "opencontainers", git = "https://github.com/vsoch/oci-python?rev=ceb4fcc090851717a3069d78e85ceb1e86c2740c" }, { name = "opencontainers", git = "https://github.com/vsoch/oci-python?rev=ceb4fcc090851717a3069d78e85ceb1e86c2740c" },
{ name = "packaging", specifier = "==25.0" }, { name = "packaging", specifier = "==25.0" },
{ name = "paramiko", specifier = "==3.5.1" }, { name = "paramiko", specifier = "==3.5.1" },
@ -905,16 +905,16 @@ wheels = [
[[package]] [[package]]
name = "django" name = "django"
version = "5.1.10" version = "5.1.11"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "asgiref" }, { name = "asgiref" },
{ name = "sqlparse" }, { name = "sqlparse" },
{ name = "tzdata", marker = "sys_platform == 'win32'" }, { name = "tzdata", marker = "sys_platform == 'win32'" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/73/ca/1c724be89e603eb8b5587ea24c63a8c30094c8ff4d990780b5033ee15c40/django-5.1.10.tar.gz", hash = "sha256:73e5d191421d177803dbd5495d94bc7d06d156df9561f4eea9e11b4994c07137", size = 10714538, upload-time = "2025-06-04T13:53:18.805Z" } sdist = { url = "https://files.pythonhosted.org/packages/83/80/bf0f9b0aa434fca2b46fc6a31c39b08ea714b87a0a72a16566f053fb05a8/django-5.1.11.tar.gz", hash = "sha256:3bcdbd40e4d4623b5e04f59c28834323f3086df583058e65ebce99f9982385ce", size = 10734926, upload-time = "2025-06-10T10:12:48.229Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/9e/fc/80dc741ba0acb3241aac1213d7272c573d52d8a62ec2c69e9b3bef1547f2/django-5.1.10-py3-none-any.whl", hash = "sha256:19c9b771e9cf4de91101861aadd2daaa159bcf10698ca909c5755c88e70ccb84", size = 8277457, upload-time = "2025-06-04T13:53:07.676Z" }, { url = "https://files.pythonhosted.org/packages/59/91/2972ce330c6c0bd5b3200d4c2ad5cbf47eecff5243220c5a56444d3267a0/django-5.1.11-py3-none-any.whl", hash = "sha256:e48091f364007068728aca938e7450fbfe3f2217079bfd2b8af45122585acf64", size = 8277453, upload-time = "2025-06-10T10:12:42.236Z" },
] ]
[[package]] [[package]]
@ -1359,7 +1359,7 @@ wheels = [
[[package]] [[package]]
name = "google-api-python-client" name = "google-api-python-client"
version = "2.171.0" version = "2.172.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "google-api-core" }, { name = "google-api-core" },
@ -1368,9 +1368,9 @@ dependencies = [
{ name = "httplib2" }, { name = "httplib2" },
{ name = "uritemplate" }, { name = "uritemplate" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/35/99/237cd2510aecca9fabb54007e58553274cc43cb3c18512ee1ea574d11b87/google_api_python_client-2.171.0.tar.gz", hash = "sha256:057a5c08d28463c6b9eb89746355de5f14b7ed27a65c11fdbf1d06c66bb66b23", size = 13028937, upload-time = "2025-06-03T18:57:38.732Z" } sdist = { url = "https://files.pythonhosted.org/packages/02/69/c0cec6be5878d4de161f64096edb3d4a2d1a838f036b8425ea8358d0dfb3/google_api_python_client-2.172.0.tar.gz", hash = "sha256:dcb3b7e067154b2aa41f1776cf86584a5739c0ac74e6ff46fc665790dca0e6a6", size = 13074841, upload-time = "2025-06-10T16:58:41.181Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/79/db/c397e3eb3ea18f423855479d0a5852bdc9c3f644e3d4194931fa664a70b4/google_api_python_client-2.171.0-py3-none-any.whl", hash = "sha256:c9c9b76f561e9d9ac14e54a9e2c0842876201d5b96e69e48f967373f0784cbe9", size = 13547393, upload-time = "2025-06-10T02:14:38.225Z" }, { url = "https://files.pythonhosted.org/packages/15/fc/8850ccf21c5df43faeaf8bba8c4149ee880b41b8dc7066e3259bcfd921ca/google_api_python_client-2.172.0-py3-none-any.whl", hash = "sha256:9f1b9a268d5dc1228207d246c673d3a09ee211b41a11521d38d9212aeaa43af7", size = 13595800, upload-time = "2025-06-10T16:58:38.143Z" },
] ]
[[package]] [[package]]
@ -2029,7 +2029,7 @@ wheels = [
[[package]] [[package]]
name = "msgraph-sdk" name = "msgraph-sdk"
version = "1.32.0" version = "1.33.0"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "azure-identity" }, { name = "azure-identity" },
@ -2039,9 +2039,9 @@ dependencies = [
{ name = "microsoft-kiota-serialization-text" }, { name = "microsoft-kiota-serialization-text" },
{ name = "msgraph-core" }, { name = "msgraph-core" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/e0/2a/a5d67f631f8a0a9daa9059eed0f6703002efdf75f1d7575a289e23aceb5e/msgraph_sdk-1.32.0.tar.gz", hash = "sha256:485b25420ec4b3bf9c9d7abea166f9c51da99d9aad1bd57c191f84569af35143", size = 6628831, upload-time = "2025-06-03T18:22:21.526Z" } sdist = { url = "https://files.pythonhosted.org/packages/61/2b/41ae74a4277210a0f7b102f8c34c6304f8a2aeb3ccc94c7c4cb14542ebba/msgraph_sdk-1.33.0.tar.gz", hash = "sha256:3f92d55eee4816e554831d1f6d8db6842ce1717f6f6d92bbb8ba98c4802821df", size = 6628201, upload-time = "2025-06-10T18:43:18.811Z" }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/b9/59/7e0f170611eb1a213940816703522ecca47ddffc149ef8e001e4789ddf13/msgraph_sdk-1.32.0-py3-none-any.whl", hash = "sha256:d1256f1669706c2703963ef0103470ce7a1b8a06f555506fc6b5f1069847877b", size = 27190465, upload-time = "2025-06-03T18:22:18.944Z" }, { url = "https://files.pythonhosted.org/packages/fd/b3/6eca02d93c4b47b7a3b4388b65c4390eba5962379b2a9e27685b052dc428/msgraph_sdk-1.33.0-py3-none-any.whl", hash = "sha256:d42b8c39e2cdc386243d1d80df9481e9bc660db0803307a17fb3783085b19a42", size = 27215918, upload-time = "2025-06-10T18:43:15.155Z" },
] ]
[[package]] [[package]]

186
web/package-lock.json generated
View File

@ -31,7 +31,7 @@
"@open-wc/lit-helpers": "^0.7.0", "@open-wc/lit-helpers": "^0.7.0",
"@patternfly/elements": "^4.1.0", "@patternfly/elements": "^4.1.0",
"@patternfly/patternfly": "^4.224.2", "@patternfly/patternfly": "^4.224.2",
"@sentry/browser": "^9.27.0", "@sentry/browser": "^9.28.0",
"@spotlightjs/spotlight": "^2.13.3", "@spotlightjs/spotlight": "^2.13.3",
"@webcomponents/webcomponentsjs": "^2.8.0", "@webcomponents/webcomponentsjs": "^2.8.0",
"base64-js": "^1.5.1", "base64-js": "^1.5.1",
@ -123,7 +123,7 @@
"storybook-addon-mock": "^5.0.0", "storybook-addon-mock": "^5.0.0",
"turnstile-types": "^1.2.3", "turnstile-types": "^1.2.3",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"typescript-eslint": "^8.33.1", "typescript-eslint": "^8.34.0",
"vite-plugin-lit-css": "^2.0.0", "vite-plugin-lit-css": "^2.0.0",
"vite-tsconfig-paths": "^5.0.1", "vite-tsconfig-paths": "^5.0.1",
"wireit": "^0.14.12" "wireit": "^0.14.12"
@ -4478,75 +4478,75 @@
"dev": true "dev": true
}, },
"node_modules/@sentry-internal/browser-utils": { "node_modules/@sentry-internal/browser-utils": {
"version": "9.27.0", "version": "9.28.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-9.27.0.tgz", "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-9.28.0.tgz",
"integrity": "sha512-SJa7f6Ct1BzP8rWEomnshSGN1CmT+axNKvT+StrbFPD6AyHnYfFLJpKgc2iToIJHB/pmeuOI9dUwqtzVx+5nSw==", "integrity": "sha512-SqntPnIXudP3FoKj4mQ1BVPC1RNzo4CGtAxJnLpbIUpdT/khJVM6Q59zrGl2MgZ7URZCI986L5jXihQeferf6g==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@sentry/core": "9.27.0" "@sentry/core": "9.28.0"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@sentry-internal/feedback": { "node_modules/@sentry-internal/feedback": {
"version": "9.27.0", "version": "9.28.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-9.27.0.tgz", "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-9.28.0.tgz",
"integrity": "sha512-e7L8eG0y63RulN352lmafoCCfQGg4jLVT8YLx6096eWu/YKLkgmVpgi8livsT5WREnH+HB+iFSrejOwK7cRkhw==", "integrity": "sha512-z2jShmVENsesmDnShEOv841Saw0zXe1tX6GHNgkK9f6NrUMbL970JvGKByBFTffhQH6uQ0WeNPnXJ5L/YKnfDg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@sentry/core": "9.27.0" "@sentry/core": "9.28.0"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@sentry-internal/replay": { "node_modules/@sentry-internal/replay": {
"version": "9.27.0", "version": "9.28.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-9.27.0.tgz", "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-9.28.0.tgz",
"integrity": "sha512-n2kO1wOfCG7GxkMAqbYYkpgTqJM5tuVLdp0JuNCqTOLTXWvw6svWGaYKlYpKUgsK9X/GDzJYSXZmfe+Dbg+FJQ==", "integrity": "sha512-BVGVBlmcpJdT55d/vywjfK1u6zMC5ycjJBxU1wUCNgCU3cSKRDBnvmYgk/+Ay23bFryT28Q4hM1p5qBBAOfxjQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@sentry-internal/browser-utils": "9.27.0", "@sentry-internal/browser-utils": "9.28.0",
"@sentry/core": "9.27.0" "@sentry/core": "9.28.0"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@sentry-internal/replay-canvas": { "node_modules/@sentry-internal/replay-canvas": {
"version": "9.27.0", "version": "9.28.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-9.27.0.tgz", "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-9.28.0.tgz",
"integrity": "sha512-44rVSt3LCH6qePYRQrl4WUBwnkOk9dzinmnKmuwRksEdDOkVq5KBRhi/IDr7omwSpX8C+KrX5alfKhOx1cP0gQ==", "integrity": "sha512-Bv4mbtUrRV3p6PpFQPseLv3+Uaen+3AlfX02Z6QHY1sMa4lpt+U8OHfRGLprnzb6Rarw6fK2LNVL5rnV9LNMwA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@sentry-internal/replay": "9.27.0", "@sentry-internal/replay": "9.28.0",
"@sentry/core": "9.27.0" "@sentry/core": "9.28.0"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@sentry/browser": { "node_modules/@sentry/browser": {
"version": "9.27.0", "version": "9.28.0",
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-9.27.0.tgz", "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-9.28.0.tgz",
"integrity": "sha512-geR3lhRJOmUQqi1WgovLSYcD/f66zYnctdnDEa7j1BW2XIB1nlTJn0mpYyAHghXKkUN/pBpp1Z+Jk0XlVwFYVg==", "integrity": "sha512-ttqiv3D9sIB43nZnJTTln1nXw1p4C5BDSh+sHmGUOiqdCH6ND3HByDITYMYIOz1lACSISTT4V+MEpqx0V25Tlw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@sentry-internal/browser-utils": "9.27.0", "@sentry-internal/browser-utils": "9.28.0",
"@sentry-internal/feedback": "9.27.0", "@sentry-internal/feedback": "9.28.0",
"@sentry-internal/replay": "9.27.0", "@sentry-internal/replay": "9.28.0",
"@sentry-internal/replay-canvas": "9.27.0", "@sentry-internal/replay-canvas": "9.28.0",
"@sentry/core": "9.27.0" "@sentry/core": "9.28.0"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/@sentry/core": { "node_modules/@sentry/core": {
"version": "9.27.0", "version": "9.28.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.27.0.tgz", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.28.0.tgz",
"integrity": "sha512-Zb2SSAdWXQjTem+sVWrrAq9L6YYfxyoTwtapaE6C6qZBR5C8Uak0wcYww8StaCFH7dDA/PSW+VxOwjNXocrQHQ==", "integrity": "sha512-vzD9xhg9S864jxfCpq77feCE4y7iP2cZYsNMoTupl1vTUlmXlhp7XgF832fEMjEZq4vrPhaqCNsde7Sc3PAbaQ==",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=18" "node": ">=18"
@ -7337,17 +7337,17 @@
} }
}, },
"node_modules/@typescript-eslint/eslint-plugin": { "node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz",
"integrity": "sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==", "integrity": "sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/regexpp": "^4.10.0", "@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.33.1", "@typescript-eslint/scope-manager": "8.34.0",
"@typescript-eslint/type-utils": "8.33.1", "@typescript-eslint/type-utils": "8.34.0",
"@typescript-eslint/utils": "8.33.1", "@typescript-eslint/utils": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1", "@typescript-eslint/visitor-keys": "8.34.0",
"graphemer": "^1.4.0", "graphemer": "^1.4.0",
"ignore": "^7.0.0", "ignore": "^7.0.0",
"natural-compare": "^1.4.0", "natural-compare": "^1.4.0",
@ -7361,7 +7361,7 @@
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
}, },
"peerDependencies": { "peerDependencies": {
"@typescript-eslint/parser": "^8.33.1", "@typescript-eslint/parser": "^8.34.0",
"eslint": "^8.57.0 || ^9.0.0", "eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <5.9.0" "typescript": ">=4.8.4 <5.9.0"
} }
@ -7377,16 +7377,16 @@
} }
}, },
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.0.tgz",
"integrity": "sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==", "integrity": "sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "8.33.1", "@typescript-eslint/scope-manager": "8.34.0",
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/typescript-estree": "8.33.1", "@typescript-eslint/typescript-estree": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1", "@typescript-eslint/visitor-keys": "8.34.0",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@ -7402,14 +7402,14 @@
} }
}, },
"node_modules/@typescript-eslint/project-service": { "node_modules/@typescript-eslint/project-service": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.0.tgz",
"integrity": "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==", "integrity": "sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.33.1", "@typescript-eslint/tsconfig-utils": "^8.34.0",
"@typescript-eslint/types": "^8.33.1", "@typescript-eslint/types": "^8.34.0",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@ -7424,14 +7424,14 @@
} }
}, },
"node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/scope-manager": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.0.tgz",
"integrity": "sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==", "integrity": "sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1" "@typescript-eslint/visitor-keys": "8.34.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -7442,9 +7442,9 @@
} }
}, },
"node_modules/@typescript-eslint/tsconfig-utils": { "node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz",
"integrity": "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==", "integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -7459,14 +7459,14 @@
} }
}, },
"node_modules/@typescript-eslint/type-utils": { "node_modules/@typescript-eslint/type-utils": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.0.tgz",
"integrity": "sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==", "integrity": "sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/typescript-estree": "8.33.1", "@typescript-eslint/typescript-estree": "8.34.0",
"@typescript-eslint/utils": "8.33.1", "@typescript-eslint/utils": "8.34.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"ts-api-utils": "^2.1.0" "ts-api-utils": "^2.1.0"
}, },
@ -7483,9 +7483,9 @@
} }
}, },
"node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/types": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.0.tgz",
"integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==", "integrity": "sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -7497,16 +7497,16 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/typescript-estree": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz",
"integrity": "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==", "integrity": "sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/project-service": "8.33.1", "@typescript-eslint/project-service": "8.34.0",
"@typescript-eslint/tsconfig-utils": "8.33.1", "@typescript-eslint/tsconfig-utils": "8.34.0",
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1", "@typescript-eslint/visitor-keys": "8.34.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"fast-glob": "^3.3.2", "fast-glob": "^3.3.2",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
@ -7526,16 +7526,16 @@
} }
}, },
"node_modules/@typescript-eslint/utils": { "node_modules/@typescript-eslint/utils": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.0.tgz",
"integrity": "sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==", "integrity": "sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.7.0", "@eslint-community/eslint-utils": "^4.7.0",
"@typescript-eslint/scope-manager": "8.33.1", "@typescript-eslint/scope-manager": "8.34.0",
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/typescript-estree": "8.33.1" "@typescript-eslint/typescript-estree": "8.34.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -7550,13 +7550,13 @@
} }
}, },
"node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/visitor-keys": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz",
"integrity": "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==", "integrity": "sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"eslint-visitor-keys": "^4.2.0" "eslint-visitor-keys": "^4.2.0"
}, },
"engines": { "engines": {
@ -7568,9 +7568,9 @@
} }
}, },
"node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
"version": "4.2.0", "version": "4.2.1",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
"integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"engines": { "engines": {
@ -27085,15 +27085,15 @@
} }
}, },
"node_modules/typescript-eslint": { "node_modules/typescript-eslint": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.1.tgz", "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.0.tgz",
"integrity": "sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==", "integrity": "sha512-MRpfN7uYjTrTGigFCt8sRyNqJFhjN0WwZecldaqhWm+wy0gaRt8Edb/3cuUy0zdq2opJWT6iXINKAtewnDOltQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/eslint-plugin": "8.33.1", "@typescript-eslint/eslint-plugin": "8.34.0",
"@typescript-eslint/parser": "8.33.1", "@typescript-eslint/parser": "8.34.0",
"@typescript-eslint/utils": "8.33.1" "@typescript-eslint/utils": "8.34.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"

View File

@ -102,7 +102,7 @@
"@open-wc/lit-helpers": "^0.7.0", "@open-wc/lit-helpers": "^0.7.0",
"@patternfly/elements": "^4.1.0", "@patternfly/elements": "^4.1.0",
"@patternfly/patternfly": "^4.224.2", "@patternfly/patternfly": "^4.224.2",
"@sentry/browser": "^9.27.0", "@sentry/browser": "^9.28.0",
"@spotlightjs/spotlight": "^2.13.3", "@spotlightjs/spotlight": "^2.13.3",
"@webcomponents/webcomponentsjs": "^2.8.0", "@webcomponents/webcomponentsjs": "^2.8.0",
"base64-js": "^1.5.1", "base64-js": "^1.5.1",
@ -194,7 +194,7 @@
"storybook-addon-mock": "^5.0.0", "storybook-addon-mock": "^5.0.0",
"turnstile-types": "^1.2.3", "turnstile-types": "^1.2.3",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"typescript-eslint": "^8.33.1", "typescript-eslint": "^8.34.0",
"vite-plugin-lit-css": "^2.0.0", "vite-plugin-lit-css": "^2.0.0",
"vite-tsconfig-paths": "^5.0.1", "vite-tsconfig-paths": "^5.0.1",
"wireit": "^0.14.12" "wireit": "^0.14.12"

View File

@ -1,6 +1,7 @@
import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities"; import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities";
import "@goauthentik/admin/applications/ProviderSelectModal"; import "@goauthentik/admin/applications/ProviderSelectModal";
import { iconHelperText } from "@goauthentik/admin/helperText"; import { iconHelperText } from "@goauthentik/admin/helperText";
import { policyEngineModes } from "@goauthentik/admin/policies/PolicyEngineModes";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import "@goauthentik/components/ak-file-input"; import "@goauthentik/components/ak-file-input";
import "@goauthentik/components/ak-radio-input"; import "@goauthentik/components/ak-radio-input";
@ -24,7 +25,6 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { Application, CoreApi, Provider } from "@goauthentik/api"; import { Application, CoreApi, Provider } from "@goauthentik/api";
import { policyOptions } from "./PolicyOptions.js";
import "./components/ak-backchannel-input"; import "./components/ak-backchannel-input";
import "./components/ak-provider-search-input"; import "./components/ak-provider-search-input";
@ -173,7 +173,7 @@ export class ApplicationForm extends WithCapabilitiesConfig(ModelForm<Applicatio
label=${msg("Policy engine mode")} label=${msg("Policy engine mode")}
required required
name="policyEngineMode" name="policyEngineMode"
.options=${policyOptions} .options=${policyEngineModes}
.value=${this.instance?.policyEngineMode} .value=${this.instance?.policyEngineMode}
></ak-radio-input> ></ak-radio-input>
<ak-form-group> <ak-form-group>

View File

@ -331,7 +331,10 @@ export class ApplicationViewPage extends AKElement {
<div class="pf-c-card__title"> <div class="pf-c-card__title">
${msg("These policies control which users can access this application.")} ${msg("These policies control which users can access this application.")}
</div> </div>
<ak-bound-policies-list .target=${this.application.pk}> <ak-bound-policies-list
.target=${this.application.pk}
.policyEngineMode=${this.application.policyEngineMode}
>
</ak-bound-policies-list> </ak-bound-policies-list>
</div> </div>
</section> </section>

View File

@ -1,6 +1,6 @@
import { policyOptions } from "@goauthentik/admin/applications/PolicyOptions.js";
import { ApplicationWizardStep } from "@goauthentik/admin/applications/wizard/ApplicationWizardStep.js"; import { ApplicationWizardStep } from "@goauthentik/admin/applications/wizard/ApplicationWizardStep.js";
import "@goauthentik/admin/applications/wizard/ak-wizard-title.js"; import "@goauthentik/admin/applications/wizard/ak-wizard-title.js";
import { policyEngineModes } from "@goauthentik/admin/policies/PolicyEngineModes";
import { camelToSnake } from "@goauthentik/common/utils.js"; import { camelToSnake } from "@goauthentik/common/utils.js";
import "@goauthentik/components/ak-radio-input"; import "@goauthentik/components/ak-radio-input";
import "@goauthentik/components/ak-slug-input"; import "@goauthentik/components/ak-slug-input";
@ -144,7 +144,7 @@ export class ApplicationWizardApplicationStep extends ApplicationWizardStep {
label=${msg("Policy engine mode")} label=${msg("Policy engine mode")}
required required
name="policyEngineMode" name="policyEngineMode"
.options=${policyOptions} .options=${policyEngineModes}
.value=${app.policyEngineMode} .value=${app.policyEngineMode}
.errorMessages=${errors.policyEngineMode ?? []} .errorMessages=${errors.policyEngineMode ?? []}
></ak-radio-input> ></ak-radio-input>

View File

@ -214,14 +214,14 @@ export class CertificateKeyPairListPage extends TablePage<CertificateKeyPair> {
renderObjectCreate(): TemplateResult { renderObjectCreate(): TemplateResult {
return html` return html`
<ak-forms-modal> <ak-forms-modal>
<span slot="submit"> ${msg("Create")} </span> <span slot="submit"> ${msg("Import")} </span>
<span slot="header"> ${msg("Create Certificate-Key Pair")} </span> <span slot="header"> ${msg("Import Existing Certificate-Key Pair")} </span>
<ak-crypto-certificate-form slot="form"> </ak-crypto-certificate-form> <ak-crypto-certificate-form slot="form"> </ak-crypto-certificate-form>
<button slot="trigger" class="pf-c-button pf-m-primary">${msg("Create")}</button> <button slot="trigger" class="pf-c-button pf-m-primary">${msg("Import")}</button>
</ak-forms-modal> </ak-forms-modal>
<ak-forms-modal> <ak-forms-modal>
<span slot="submit"> ${msg("Generate")} </span> <span slot="submit"> ${msg("Generate")} </span>
<span slot="header"> ${msg("Generate Certificate-Key Pair")} </span> <span slot="header"> ${msg("Generate New Certificate-Key Pair")} </span>
<ak-crypto-certificate-generate-form slot="form"> <ak-crypto-certificate-generate-form slot="form">
</ak-crypto-certificate-generate-form> </ak-crypto-certificate-generate-form>
<button slot="trigger" class="pf-c-button pf-m-secondary"> <button slot="trigger" class="pf-c-button pf-m-secondary">

View File

@ -123,7 +123,10 @@ export class BoundStagesList extends Table<FlowStageBinding> {
"These bindings control if this stage will be applied to the flow.", "These bindings control if this stage will be applied to the flow.",
)} )}
</p> </p>
<ak-bound-policies-list .target=${item.policybindingmodelPtrId}> <ak-bound-policies-list
.target=${item.policybindingmodelPtrId}
.policyEngineMode=${item.policyEngineMode}
>
</ak-bound-policies-list> </ak-bound-policies-list>
</div> </div>
</div> </div>

View File

@ -1,5 +1,6 @@
import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities"; import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities";
import { DesignationToLabel, LayoutToLabel } from "@goauthentik/admin/flows/utils"; import { DesignationToLabel, LayoutToLabel } from "@goauthentik/admin/flows/utils";
import { policyEngineModes } from "@goauthentik/admin/policies/PolicyEngineModes";
import { AuthenticationEnum } from "@goauthentik/api/dist/models/AuthenticationEnum"; import { AuthenticationEnum } from "@goauthentik/api/dist/models/AuthenticationEnum";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import "@goauthentik/elements/forms/FormGroup"; import "@goauthentik/elements/forms/FormGroup";
@ -18,7 +19,6 @@ import {
FlowDesignationEnum, FlowDesignationEnum,
FlowLayoutEnum, FlowLayoutEnum,
FlowsApi, FlowsApi,
PolicyEngineMode,
} from "@goauthentik/api"; } from "@goauthentik/api";
@customElement("ak-flow-form") @customElement("ak-flow-form")
@ -279,23 +279,7 @@ export class FlowForm extends WithCapabilitiesConfig(ModelForm<Flow, string>) {
name="policyEngineMode" name="policyEngineMode"
> >
<ak-radio <ak-radio
.options=${[ .options=${policyEngineModes}
{
label: "any",
value: PolicyEngineMode.Any,
default: true,
description: html`${msg(
"Any policy must match to grant access",
)}`,
},
{
label: "all",
value: PolicyEngineMode.All,
description: html`${msg(
"All policies must match to grant access",
)}`,
},
]}
.value=${this.instance?.policyEngineMode} .value=${this.instance?.policyEngineMode}
> >
</ak-radio> </ak-radio>

View File

@ -270,7 +270,10 @@ export class FlowViewPage extends AKElement {
${msg("These bindings control which users can access this flow.")} ${msg("These bindings control which users can access this flow.")}
</div> </div>
<div class="pf-c-card__body"> <div class="pf-c-card__body">
<ak-bound-policies-list .target=${this.flow.policybindingmodelPtrId}> <ak-bound-policies-list
.target=${this.flow.policybindingmodelPtrId}
.policyEngineMode=${this.flow.policyEngineMode}
>
</ak-bound-policies-list> </ak-bound-policies-list>
</div> </div>
</div> </div>

View File

@ -1,6 +1,7 @@
import "@goauthentik/admin/groups/GroupForm"; import "@goauthentik/admin/groups/GroupForm";
import "@goauthentik/admin/policies/PolicyBindingForm"; import "@goauthentik/admin/policies/PolicyBindingForm";
import { PolicyBindingNotice } from "@goauthentik/admin/policies/PolicyBindingForm"; import { PolicyBindingNotice } from "@goauthentik/admin/policies/PolicyBindingForm";
import { policyEngineModes } from "@goauthentik/admin/policies/PolicyEngineModes";
import "@goauthentik/admin/policies/PolicyWizard"; import "@goauthentik/admin/policies/PolicyWizard";
import { import {
PolicyBindingCheckTarget, PolicyBindingCheckTarget,
@ -34,6 +35,9 @@ export class BoundPoliciesList extends Table<PolicyBinding> {
@property() @property()
target?: string; target?: string;
@property()
policyEngineMode: string = "";
@property({ type: Array }) @property({ type: Array })
allowedTypes: PolicyBindingCheckTarget[] = [ allowedTypes: PolicyBindingCheckTarget[] = [
PolicyBindingCheckTarget.policy, PolicyBindingCheckTarget.policy,
@ -244,6 +248,23 @@ export class BoundPoliciesList extends Table<PolicyBinding> {
</button> </button>
</ak-forms-modal> `; </ak-forms-modal> `;
} }
renderPolicyEngineMode() {
const policyEngineMode = policyEngineModes.find(
(pem) => pem.value === this.policyEngineMode,
);
if (policyEngineMode === undefined) {
return nothing;
}
return html`<p>
${msg(str`The currently selected policy engine mode is ${policyEngineMode.label}:`)}
${policyEngineMode.description}
</p>`;
}
renderToolbarContainer(): TemplateResult {
return html`${this.renderPolicyEngineMode()} ${super.renderToolbarContainer()}`;
}
} }
declare global { declare global {

View File

@ -3,7 +3,7 @@ import { html } from "lit";
import { PolicyEngineMode } from "@goauthentik/api"; import { PolicyEngineMode } from "@goauthentik/api";
export const policyOptions = [ export const policyEngineModes = [
{ {
label: "any", label: "any",
value: PolicyEngineMode.Any, value: PolicyEngineMode.Any,

View File

@ -1,6 +1,7 @@
import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities"; import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities";
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search"; import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText"; import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
import { policyEngineModes } from "@goauthentik/admin/policies/PolicyEngineModes";
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm"; import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
import { import {
GroupMatchingModeToLabel, GroupMatchingModeToLabel,
@ -534,6 +535,22 @@ export class OAuthSourceForm extends WithCapabilitiesConfig(BaseSourceForm<OAuth
</p> </p>
</ak-form-element-horizontal> </ak-form-element-horizontal>
</div> </div>
</ak-form-group>
<ak-form-group>
<span slot="header"> ${msg("Advanced settings")} </span>
<div slot="body" class="pf-c-form">
<ak-form-element-horizontal
label=${msg("Policy engine mode")}
required
name="policyEngineMode"
>
<ak-radio
.options=${policyEngineModes}
.value=${this.instance?.policyEngineMode}
>
</ak-radio>
</ak-form-element-horizontal>
</div>
</ak-form-group>`; </ak-form-group>`;
} }
} }

View File

@ -244,6 +244,7 @@ export class OAuthSourceViewPage extends AKElement {
<ak-bound-policies-list <ak-bound-policies-list
.target=${this.source.pk} .target=${this.source.pk}
.typeNotices=${sourceBindingTypeNotices()} .typeNotices=${sourceBindingTypeNotices()}
.policyEngineMode=${this.source.policyEngineMode}
> >
</ak-bound-policies-list> </ak-bound-policies-list>
</div> </div>

View File

@ -1,6 +1,7 @@
import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities"; import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capabilities";
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search"; import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText"; import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
import { policyEngineModes } from "@goauthentik/admin/policies/PolicyEngineModes";
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm"; import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
import { import {
GroupMatchingModeToLabel, GroupMatchingModeToLabel,
@ -414,6 +415,22 @@ export class PlexSourceForm extends WithCapabilitiesConfig(BaseSourceForm<PlexSo
</p> </p>
</ak-form-element-horizontal> </ak-form-element-horizontal>
</div> </div>
</ak-form-group>
<ak-form-group>
<span slot="header"> ${msg("Advanced settings")} </span>
<div slot="body" class="pf-c-form">
<ak-form-element-horizontal
label=${msg("Policy engine mode")}
required
name="policyEngineMode"
>
<ak-radio
.options=${policyEngineModes}
.value=${this.instance?.policyEngineMode}
>
</ak-radio>
</ak-form-element-horizontal>
</div>
</ak-form-group>`; </ak-form-group>`;
} }
} }

View File

@ -134,6 +134,7 @@ export class PlexSourceViewPage extends AKElement {
<ak-bound-policies-list <ak-bound-policies-list
.target=${this.source.pk} .target=${this.source.pk}
.typeNotices=${sourceBindingTypeNotices()} .typeNotices=${sourceBindingTypeNotices()}
.policyEngineMode=${this.source.policyEngineMode}
> >
</ak-bound-policies-list> </ak-bound-policies-list>
</div> </div>

View File

@ -2,6 +2,7 @@ import { CapabilitiesEnum, WithCapabilitiesConfig } from "#elements/mixins/capab
import "@goauthentik/admin/common/ak-crypto-certificate-search"; import "@goauthentik/admin/common/ak-crypto-certificate-search";
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search"; import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText"; import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
import { policyEngineModes } from "@goauthentik/admin/policies/PolicyEngineModes";
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm"; import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
import { import {
GroupMatchingModeToLabel, GroupMatchingModeToLabel,
@ -574,6 +575,22 @@ export class SAMLSourceForm extends WithCapabilitiesConfig(BaseSourceForm<SAMLSo
</p> </p>
</ak-form-element-horizontal> </ak-form-element-horizontal>
</div> </div>
</ak-form-group>
<ak-form-group>
<span slot="header"> ${msg("Advanced settings")} </span>
<div slot="body" class="pf-c-form">
<ak-form-element-horizontal
label=${msg("Policy engine mode")}
required
name="policyEngineMode"
>
<ak-radio
.options=${policyEngineModes}
.value=${this.instance?.policyEngineMode}
>
</ak-radio>
</ak-form-element-horizontal>
</div>
</ak-form-group>`; </ak-form-group>`;
} }
} }

View File

@ -211,6 +211,7 @@ export class SAMLSourceViewPage extends AKElement {
<ak-bound-policies-list <ak-bound-policies-list
.target=${this.source.pk} .target=${this.source.pk}
.typeNotices=${sourceBindingTypeNotices()} .typeNotices=${sourceBindingTypeNotices()}
.policyEngineMode=${this.source.policyEngineMode}
> >
</ak-bound-policies-list> </ak-bound-policies-list>
</div> </div>

View File

@ -123,6 +123,9 @@ export class AKElement extends LitElement {
applyUITheme(nextStyleRoot, UiThemeEnum.Dark, this.#customCSSStyleSheet); applyUITheme(nextStyleRoot, UiThemeEnum.Dark, this.#customCSSStyleSheet);
this.activeTheme = UiThemeEnum.Dark; this.activeTheme = UiThemeEnum.Dark;
} else if (this.preferredColorScheme === "light") {
applyUITheme(nextStyleRoot, UiThemeEnum.Light, this.#customCSSStyleSheet);
this.activeTheme = UiThemeEnum.Light;
} else if (this.preferredColorScheme === "auto") { } else if (this.preferredColorScheme === "auto") {
createUIThemeEffect( createUIThemeEffect(
(nextUITheme) => { (nextUITheme) => {

View File

@ -661,12 +661,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>Meistgenutzte Apps</target> <target>Meistgenutzte Apps</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target>vor
<x id="0" equiv-text="${ago}"/>Tagen</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6007,21 +6001,11 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Download Private key</source> <source>Download Private key</source>
<target>Privaten Schlüssel herunterladen</target> <target>Privaten Schlüssel herunterladen</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>Zertifikat-Schlüsselpaar generieren</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>Generiere</target> <target>Generiere</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>Zertifikat-Schlüsselpaar generieren</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7351,9 +7335,6 @@ Bindings to groups/users are checked against the user of the event.</source>
<trans-unit id="s7ccce0ec8d228db6"> <trans-unit id="s7ccce0ec8d228db6">
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
</trans-unit> </trans-unit>
@ -9251,6 +9232,15 @@ Bindings to groups/users are checked against the user of the event.</source>
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -533,11 +533,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>Apps with most usage</target> <target>Apps with most usage</target>
</trans-unit> </trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target>
<x id="0" equiv-text="${ago}"/>days ago</target>
</trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
<target>Objects created</target> <target>Objects created</target>
@ -4894,18 +4889,10 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Download Private key</source> <source>Download Private key</source>
<target>Download Private key</target> <target>Download Private key</target>
</trans-unit> </trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>Create Certificate-Key Pair</target>
</trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>Generate</target> <target>Generate</target>
</trans-unit> </trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>Generate Certificate-Key Pair</target>
</trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
<target>Successfully updated instance.</target> <target>Successfully updated instance.</target>
@ -5993,9 +5980,6 @@ Bindings to groups/users are checked against the user of the event.</source>
<trans-unit id="s7ccce0ec8d228db6"> <trans-unit id="s7ccce0ec8d228db6">
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
</trans-unit> </trans-unit>
@ -7755,6 +7739,15 @@ Bindings to groups/users are checked against the user of the event.</source>
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -661,12 +661,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>Aplicaciones con mayor uso</target> <target>Aplicaciones con mayor uso</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target>
<x id="0" equiv-text="${ago}"/>días atrás</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6029,21 +6023,11 @@ Las vinculaciones a grupos o usuarios se comparan con el usuario del evento.</ta
<source>Download Private key</source> <source>Download Private key</source>
<target>Descargar clave privada</target> <target>Descargar clave privada</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>Crear un Par de Claves y Certificado</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>Generar</target> <target>Generar</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>Generar par de claves de certificado</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7375,10 +7359,6 @@ Las vinculaciones a grupos o usuarios se comparan con el usuario del evento.</ta
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
<target>Configura el Proveedor de SCIM</target> <target>Configura el Proveedor de SCIM</target>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
<target>Volumen de evento</target>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
<target>Ajustes de conexión.</target> <target>Ajustes de conexión.</target>
@ -9312,6 +9292,15 @@ Las vinculaciones a grupos o usuarios se comparan con el usuario del evento.</ta
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -661,12 +661,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>Apps les plus utilisées</target> <target>Apps les plus utilisées</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target>
il y a <x id="0" equiv-text="${ago}"/>jours</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6117,21 +6111,11 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti
<source>Download Private key</source> <source>Download Private key</source>
<target>Télécharger la clé privée</target> <target>Télécharger la clé privée</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>Créer une paire clé/certificat</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>Générer</target> <target>Générer</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>Générer une paire clé/certificat</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7532,10 +7516,6 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
<target>Configurer le fournisseur SCIM</target> <target>Configurer le fournisseur SCIM</target>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
<target>Volume d'événements</target>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
<target>Paramètres de connexion.</target> <target>Paramètres de connexion.</target>
@ -9881,6 +9861,15 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -661,12 +661,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>App con maggior utilizzo</target> <target>App con maggior utilizzo</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target>
<x id="0" equiv-text="${ago}"/>giorni fa</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6118,21 +6112,11 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Download Private key</source> <source>Download Private key</source>
<target>Scarica chiave privata</target> <target>Scarica chiave privata</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>Creare coppia certificato-chiave</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>Genera</target> <target>Genera</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>Genera coppia certificato-chiave</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7533,10 +7517,6 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
<target>Configurare il provider SCIM</target> <target>Configurare il provider SCIM</target>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
<target>Volume degli eventi</target>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
<target>Impostazioni connessione.</target> <target>Impostazioni connessione.</target>
@ -9864,6 +9844,15 @@ Bindings to groups/users are checked against the user of the event.</source>
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -644,12 +644,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>사용량이 가장 많은 앱</target> <target>사용량이 가장 많은 앱</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target>
<x id="0" equiv-text="${ago}"/> 일 전</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6052,21 +6046,11 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Download Private key</source> <source>Download Private key</source>
<target>개인 키 다운로드</target> <target>개인 키 다운로드</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>인증서-키 쌍 만들기</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>발행</target> <target>발행</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>인증서-키 쌍 발행</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7456,10 +7440,6 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
<target>SCIM 공급자 구성</target> <target>SCIM 공급자 구성</target>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
<target>이력 규모</target>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
</trans-unit> </trans-unit>
@ -9220,6 +9200,15 @@ Bindings to groups/users are checked against the user of the event.</source>
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -654,11 +654,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>Apps met meeste gebruik</target> <target>Apps met meeste gebruik</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target><x id="0" equiv-text="${ago}"/> dagen geleden</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6061,21 +6056,11 @@ Bindingen naar groepen/gebruikers worden gecontroleerd tegen de gebruiker van de
<source>Download Private key</source> <source>Download Private key</source>
<target>Privésleutel downloaden</target> <target>Privésleutel downloaden</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>Certificaat-sleutelpaar aanmaken</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>Genereren</target> <target>Genereren</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>Genereren Certificaat-sleutelpaar</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7359,9 +7344,6 @@ Bindingen naar groepen/gebruikers worden gecontroleerd tegen de gebruiker van de
<trans-unit id="s7ccce0ec8d228db6"> <trans-unit id="s7ccce0ec8d228db6">
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
</trans-unit> </trans-unit>
@ -9122,6 +9104,15 @@ Bindingen naar groepen/gebruikers worden gecontroleerd tegen de gebruiker van de
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -661,12 +661,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>Najczęściej używane aplikacje</target> <target>Najczęściej używane aplikacje</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target>
<x id="0" equiv-text="${ago}"/>dni temu</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6119,21 +6113,11 @@ Powiązania z grupami/użytkownikami są sprawdzane względem użytkownika zdarz
<source>Download Private key</source> <source>Download Private key</source>
<target>Pobierz klucz prywatny</target> <target>Pobierz klucz prywatny</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>Utwórz parę certyfikat-klucz</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>Generuj</target> <target>Generuj</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>Wygeneruj parę certyfikat-klucz</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7534,10 +7518,6 @@ Powiązania z grupami/użytkownikami są sprawdzane względem użytkownika zdarz
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
<target>Skonfiguruj dostawcę SCIM</target> <target>Skonfiguruj dostawcę SCIM</target>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
<target>Wolumen zdarzeń</target>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
<target>Ustawienia połączenia.</target> <target>Ustawienia połączenia.</target>
@ -9547,6 +9527,15 @@ Powiązania z grupami/użytkownikami są sprawdzane względem użytkownika zdarz
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -651,11 +651,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>Àƥƥś ŵĩţĥ ḿōśţ ũśàĝē</target> <target>Àƥƥś ŵĩţĥ ḿōśţ ũśàĝē</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target><x id="0" equiv-text="${ago}"/> ďàŷś àĝō</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6080,21 +6075,11 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Download Private key</source> <source>Download Private key</source>
<target>Ďōŵńĺōàď Ƥŕĩvàţē ķēŷ</target> <target>Ďōŵńĺōàď Ƥŕĩvàţē ķēŷ</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>Ćŕēàţē Ćēŕţĩƒĩćàţē-Ķēŷ Ƥàĩŕ</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>Ĝēńēŕàţē</target> <target>Ĝēńēŕàţē</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>Ĝēńēŕàţē Ćēŕţĩƒĩćàţē-Ķēŷ Ƥàĩŕ</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7479,10 +7464,6 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
<target>Ćōńƒĩĝũŕē ŚĆĨḾ Ƥŕōvĩďēŕ</target> <target>Ćōńƒĩĝũŕē ŚĆĨḾ Ƥŕōvĩďēŕ</target>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
<target>Ēvēńţ vōĺũḿē</target>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
<target>Ćōńńēćţĩōń śēţţĩńĝś.</target> <target>Ćōńńēćţĩōń śēţţĩńĝś.</target>
@ -9555,4 +9536,13 @@ Bindings to groups/users are checked against the user of the event.</source>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit> </trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit>
</body></file></xliff> </body></file></xliff>

View File

@ -661,12 +661,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>Приложения, которые используются чаще всего</target> <target>Приложения, которые используются чаще всего</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target>
<x id="0" equiv-text="${ago}"/>дней назад</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6118,21 +6112,11 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Download Private key</source> <source>Download Private key</source>
<target>Скачать закрытый ключ</target> <target>Скачать закрытый ключ</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>Создание пары сертификат-ключ</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>Сгенерировать</target> <target>Сгенерировать</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>Сгенерировать пару сертификат-ключ</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7533,10 +7517,6 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
<target>Настроить SCIM Провайдера</target> <target>Настроить SCIM Провайдера</target>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
<target>Объем событий</target>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
<target>Настройки подключения</target> <target>Настройки подключения</target>
@ -9639,6 +9619,15 @@ Bindings to groups/users are checked against the user of the event.</source>
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -650,11 +650,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>En çok kullanıma sahip uygulamalar</target> <target>En çok kullanıma sahip uygulamalar</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target><x id="0" equiv-text="${ago}"/> gün önce</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6081,21 +6076,11 @@ Gruplara/kullanıcılara yapılan bağlamalar, etkinliğin kullanıcısına kar
<source>Download Private key</source> <source>Download Private key</source>
<target>Indir Özel anahtar</target> <target>Indir Özel anahtar</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>Sertifika Anahtarı Çifti Oluştur</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>Oluştur</target> <target>Oluştur</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>Sertifika Anahtarı Çifti Oluştur</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7490,10 +7475,6 @@ Gruplara/kullanıcılara yapılan bağlamalar, etkinliğin kullanıcısına kar
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
<target>SCIM Sağlayıcısını Yapılandırma</target> <target>SCIM Sağlayıcısını Yapılandırma</target>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
<target>Olay hacmi</target>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
<target>Bağlantı ayarları'nı tıklayın.</target> <target>Bağlantı ayarları'nı tıklayın.</target>
@ -9610,6 +9591,15 @@ Gruplara/kullanıcılara yapılan bağlamalar, etkinliğin kullanıcısına kar
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -431,9 +431,6 @@
<trans-unit id="s6e09a19aa3952509"> <trans-unit id="s6e09a19aa3952509">
<source>Apps with most usage</source> <source>Apps with most usage</source>
</trans-unit> </trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
</trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
</trans-unit> </trans-unit>
@ -3986,9 +3983,6 @@ doesn't pass when either or both of the selected options are equal or above the
<trans-unit id="s78c08391ffbfb8c0"> <trans-unit id="s78c08391ffbfb8c0">
<source>These bindings control which users can access this flow.</source> <source>These bindings control which users can access this flow.</source>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
</trans-unit>
<trans-unit id="sc1a1ff47c058bb09"> <trans-unit id="sc1a1ff47c058bb09">
<source>Event Log</source> <source>Event Log</source>
</trans-unit> </trans-unit>
@ -4281,15 +4275,9 @@ Bindings to groups/users are checked against the user of the event.</source>
<trans-unit id="s47bd537a3bcebf19"> <trans-unit id="s47bd537a3bcebf19">
<source>Download Private key</source> <source>Download Private key</source>
</trans-unit> </trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
</trans-unit> </trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
</trans-unit> </trans-unit>
@ -6365,6 +6353,15 @@ Bindings to groups/users are checked against the user of the event.</source>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit> </trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View File

@ -661,12 +661,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>使用率最高的应用</target> <target>使用率最高的应用</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target>
<x id="0" equiv-text="${ago}"/>天前</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6118,21 +6112,11 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Download Private key</source> <source>Download Private key</source>
<target>下载私钥</target> <target>下载私钥</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>创建证书密钥对</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>生成</target> <target>生成</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>生成证书密钥对</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7533,10 +7517,6 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
<target>配置 SCIM 提供程序</target> <target>配置 SCIM 提供程序</target>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
<target>事件容量</target>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
<target>连接设置。</target> <target>连接设置。</target>
@ -9882,6 +9862,15 @@ Bindings to groups/users are checked against the user of the event.</source>
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -523,11 +523,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>使用率最高的应用</target> <target>使用率最高的应用</target>
</trans-unit> </trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target>
<x id="0" equiv-text="${ago}"/>天前</target>
</trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
<target>已创建对象</target> <target>已创建对象</target>
@ -4633,18 +4628,10 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Download Private key</source> <source>Download Private key</source>
<target>下载私钥</target> <target>下载私钥</target>
</trans-unit> </trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>创建证书密钥对</target>
</trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>生成</target> <target>生成</target>
</trans-unit> </trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>生成证书密钥对</target>
</trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
</trans-unit> </trans-unit>
@ -5693,9 +5680,6 @@ Bindings to groups/users are checked against the user of the event.</source>
<trans-unit id="s7ccce0ec8d228db6"> <trans-unit id="s7ccce0ec8d228db6">
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
</trans-unit> </trans-unit>
@ -7455,6 +7439,15 @@ Bindings to groups/users are checked against the user of the event.</source>
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -643,11 +643,6 @@
<source>Apps with most usage</source> <source>Apps with most usage</source>
<target>使用頻率最高的應用程式</target> <target>使用頻率最高的應用程式</target>
</trans-unit>
<trans-unit id="sda5e1499f93146ad">
<source><x id="0" equiv-text="${ago}"/> days ago</source>
<target><x id="0" equiv-text="${ago}"/> 天前</target>
</trans-unit> </trans-unit>
<trans-unit id="s51ea3a244c781b1f"> <trans-unit id="s51ea3a244c781b1f">
<source>Objects created</source> <source>Objects created</source>
@ -6040,21 +6035,11 @@ Bindings to groups/users are checked against the user of the event.</source>
<source>Download Private key</source> <source>Download Private key</source>
<target>下載私鑰</target> <target>下載私鑰</target>
</trans-unit>
<trans-unit id="s3a5fec3d73ac9edc">
<source>Create Certificate-Key Pair</source>
<target>建立憑證金鑰對</target>
</trans-unit> </trans-unit>
<trans-unit id="s45cb501abd43ba52"> <trans-unit id="s45cb501abd43ba52">
<source>Generate</source> <source>Generate</source>
<target>產生憑證</target> <target>產生憑證</target>
</trans-unit>
<trans-unit id="sf9bddaf910f4eea5">
<source>Generate Certificate-Key Pair</source>
<target>產生憑證金鑰對</target>
</trans-unit> </trans-unit>
<trans-unit id="see2bcbc11bb91960"> <trans-unit id="see2bcbc11bb91960">
<source>Successfully updated instance.</source> <source>Successfully updated instance.</source>
@ -7434,9 +7419,6 @@ Bindings to groups/users are checked against the user of the event.</source>
<trans-unit id="s7ccce0ec8d228db6"> <trans-unit id="s7ccce0ec8d228db6">
<source>Configure SCIM Provider</source> <source>Configure SCIM Provider</source>
</trans-unit> </trans-unit>
<trans-unit id="s7513372fe60f6387">
<source>Event volume</source>
</trans-unit>
<trans-unit id="s3271da6c18c25b18"> <trans-unit id="s3271da6c18c25b18">
<source>Connection settings.</source> <source>Connection settings.</source>
</trans-unit> </trans-unit>
@ -9197,6 +9179,15 @@ Bindings to groups/users are checked against the user of the event.</source>
</trans-unit> </trans-unit>
<trans-unit id="s04bb32ec9f359507"> <trans-unit id="s04bb32ec9f359507">
<source>Additional Group DN</source> <source>Additional Group DN</source>
</trans-unit>
<trans-unit id="sb7af25ce6e30d61a">
<source>The currently selected policy engine mode is <x id="0" equiv-text="${policyEngineMode.label}"/>:</source>
</trans-unit>
<trans-unit id="se1d2545eda4b1600">
<source>Import Existing Certificate-Key Pair</source>
</trans-unit>
<trans-unit id="sb3d5c0a0501669df">
<source>Generate New Certificate-Key Pair</source>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -75,7 +75,7 @@ This key is set to `True` when the flow is executed from an "SSO" context. For e
#### `is_restored` (Token object) #### `is_restored` (Token object)
This key is set when a flow execution is continued from a token. This happens for example when an [Email stage](../../stages/email/index.mdx) is used and the user clicks on the link within the email. The token object contains the key that was used to restore the flow execution. This key is set when a flow execution is continued from a token. This happens for example when an [Email stage](../../stages/email/index.mdx) is used and the user clicks on the link within the email. The token object contains the key that was used to restore the flow execution. This field is also used by the [Source stage](../../stages/source/index.md) when returning back to the initial flow the Source stage was run on.
#### `is_redirected` (Flow object):ak-version[2024.12] #### `is_redirected` (Flow object):ak-version[2024.12]

View File

@ -141,7 +141,7 @@ In this mode, the regular expressions are matched against the Request's full URL
## Dynamic backend selection ## Dynamic backend selection
You can configure the backend the proxy should access dynamically via _Scope mappings_. To do so, create a new _Scope mapping_, with a name and scope of your choice. As expression, use this: You can configure the backend the proxy should access dynamically via scope mappings. To do this, create a scope mapping with a name and scope of your choice, and set the expression to:
```python ```python
return { return {
@ -151,11 +151,11 @@ return {
} }
``` ```
Afterwards, edit the _Proxy provider_ and add this new mapping. The expression is only evaluated when the user logs into the application. Afterwards, edit the proxy provider and add this new mapping. The expression is only evaluated when the user logs into the application.
## Host header:ak-version[2025.6.1] ## Host header:ak-version[2025.6.1]
By default, the proxy provider will use forwarded Host header received from the client. Starting with authentik 2025.6.1, it is possible to dynamically adjust the Host header with a property mapping. By default, the proxy provider will use the forwarded host header received from the client. Starting with authentik 2025.6.1, it is possible to dynamically adjust the host header with a property mapping. To do this, create a scope mapping with a name and scope of your choice, and set the expression to:
```python ```python
return { return {
@ -165,4 +165,20 @@ return {
} }
``` ```
Afterwards, edit the _Proxy provider_ and add this new mapping. The expression is only evaluated when the user logs into the application. Afterwards, edit the proxy provider and add this new mapping. The expression is only evaluated when the user logs into the application.
### Dynamically setting host header
You can dynamically set the host header to match the **Internal host** value set on the proxy provider. To do this, create a scope mapping with a name and scope of your choice, and set the expression to:
```python
from urllib.parse import urlparse
parsed_url = urlparse(provider.proxyprovider.internal_host)
return {
"ak_proxy": {
"host_header": parsed_url.netloc
}
}
```
Afterwards, edit the proxy provider and add this new mapping. The expression is only evaluated when the user logs into the application.

View File

@ -2,18 +2,22 @@
title: Events title: Events
--- ---
Events are authentik's built-in logging system. Whenever any of the following actions occur, an event is created: Events are authentik's built-in logging system. Every event is logged, whether it is initiated by a user or by authentik.
Events can be used to define [notification rules](notifications.md), with specified [transport options](transports.md) of local (in the authentik UI), email or webhook.
Certain information is stripped from events, to ensure no passwords or other credentials are saved in the log. Certain information is stripped from events, to ensure no passwords or other credentials are saved in the log.
## Event retention ## Event retention
The event retention is configured in the system settings interface, with the default being set to 365 days. The event retention is configured in the **System > Settings** area of the Admin interface, with the default being set to 365 days.
If you want to forward these events to another application, forward the log output of all authentik containers. Every event creation is logged with the log level "info". For this configuration, it is also recommended to set the internal retention pretty low (for example, `days=1`). If you want to forward these events to another application, forward the log output of all authentik containers. Every event creation is logged with the log level "info". For this configuration, it is also recommended to set the internal retention pretty low (for example, `days=1`).
## Event actions ## Event actions
Whenever any of the following actions occur, an event is created.
### `login` ### `login`
A user logs in (including the source, if available) A user logs in (including the source, if available)

View File

@ -64,8 +64,8 @@ Docker containers are typically configured using environment variables. To ensur
```yaml showLineNumbers ```yaml showLineNumbers
OPENID_AUTHORIZATION_ENDPOINT=https://authentik.company/application/o/authorize/ OPENID_AUTHORIZATION_ENDPOINT=https://authentik.company/application/o/authorize/
OPENID_CLIENT_ID=<Client ID from authentik> OPENID_CLIENT_ID=<Client ID from authentik>
OPENID_ISSUER=https://authentik.company/application/o/<your-slug>/ OPENID_ISSUER=https://authentik.company/application/o/<application_slug>/
OPENID_JWKS_ENDPOINT=https://authentik.company/application/o/<your-slug>/jwks/ OPENID_JWKS_ENDPOINT=https://authentik.company/application/o/<application_slug>/jwks/
OPENID_REDIRECT_URI=https://guacamole.company/ OPENID_REDIRECT_URI=https://guacamole.company/
OPENID_USERNAME_CLAIM_TYPE=preferred_username OPENID_USERNAME_CLAIM_TYPE=preferred_username
``` ```
@ -83,8 +83,8 @@ Additionally, ensure your `guacamole.properties` file (typically located in `/et
```yaml showLineNumbers title="/etc/guacamole/guacamole.properties" ```yaml showLineNumbers title="/etc/guacamole/guacamole.properties"
openid-authorization-endpoint=https://authentik.company/application/o/authorize/ openid-authorization-endpoint=https://authentik.company/application/o/authorize/
openid-client-id=<Client ID from authentik> openid-client-id=<Client ID from authentik>
openid-issuer=https://authentik.company/application/o/<your-slug>/ openid-issuer=https://authentik.company/application/o/<application_slug>/
openid-jwks-endpoint=https://authentik.company/application/o/<your-slug>/jwks/ openid-jwks-endpoint=https://authentik.company/application/o/<application_slug>/jwks/
openid-redirect-uri=https://guacamole.company/ openid-redirect-uri=https://guacamole.company/
openid-username-claim-type=preferred_username openid-username-claim-type=preferred_username
``` ```

View File

@ -78,7 +78,7 @@ url: https://argocd.company
dex.config: | dex.config: |
connectors: connectors:
- config: - config:
issuer: https://authentik.company/application/o/<application slug defined in step 2>/ issuer: https://authentik.company/application/o/<application_slug>/
clientID: <client ID from the Provider above> clientID: <client ID from the Provider above>
clientSecret: $dex.authentik.clientSecret clientSecret: $dex.authentik.clientSecret
insecureEnableGroups: true insecureEnableGroups: true

View File

@ -65,7 +65,7 @@ To support the integration of Aruba Orchestrator with authentik, you need to cre
- **Name**: `authentik` - **Name**: `authentik`
- **Username Attribute**: `http://schemas.goauthentik.io/2021/02/saml/username` - **Username Attribute**: `http://schemas.goauthentik.io/2021/02/saml/username`
- **Issuer URL**: `https://arubaorchestrator.company/gms/rest/authentication/saml2/consume` - **Issuer URL**: `https://arubaorchestrator.company/gms/rest/authentication/saml2/consume`
- **SSO Endpoint**: `https://authentik.company/application/saml/<slug>/sso/binding/init/` (replace \<slug\> with application slug name) - **SSO Endpoint**: `https://authentik.company/application/saml/<application_slug>/sso/binding/init/`
- **IdP X509 Cert**: (paste in the downloaded signing certificate) - **IdP X509 Cert**: (paste in the downloaded signing certificate)
- **ACS URL**: `https://arubaorchestrator.company/gms/rest/authentication/saml2/consume` - **ACS URL**: `https://arubaorchestrator.company/gms/rest/authentication/saml2/consume`
- **EdgeConnect SLO Endpoint**: `https://arubaorchestrator.company/gms/rest/authentication/saml2/logout` - **EdgeConnect SLO Endpoint**: `https://arubaorchestrator.company/gms/rest/authentication/saml2/logout`

View File

@ -67,7 +67,7 @@ To support the integration of Atlassian Cloud with authentik, you need to create
5. Click **Set up SAML single sign-on** and then **Next**. 5. Click **Set up SAML single sign-on** and then **Next**.
6. Set the following required configurations: 6. Set the following required configurations:
- **Identity provider Entity ID**: `authentik` - **Identity provider Entity ID**: `authentik`
- **Identity provider SSO URL**: `https://authentik.company/application/saml/<application slug>/sso/binding/redirect/` - **Identity provider SSO URL**: `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
- **Public x509 certificate**: enter the contents of the certificate that was downloaded in the previous section. - **Public x509 certificate**: enter the contents of the certificate that was downloaded in the previous section.
7. Click **Add**. 7. Click **Add**.
8. You will be shown a **Service provider entity URL** and **Service provider assertion consumer service URL**. Copy both, they will be required in authentik. 8. You will be shown a **Service provider entity URL** and **Service provider assertion consumer service URL**. Copy both, they will be required in authentik.

View File

@ -81,7 +81,7 @@ In the `SAML Enabled Identity Providers` paste the following configuration:
"attr_username": "http://schemas.goauthentik.io/2021/02/saml/username", "attr_username": "http://schemas.goauthentik.io/2021/02/saml/username",
"attr_user_permanent_id": "http://schemas.goauthentik.io/2021/02/saml/uid", "attr_user_permanent_id": "http://schemas.goauthentik.io/2021/02/saml/uid",
"x509cert": "MIIDEjCCAfqgAwIBAgIRAJZ9pOZ1g0xjiHtQAAejsMEwDQYJKoZIhvcNAQELBQAwMDEuMCwGA1UEAwwlcGFzc2Jvb2sgU2VsZi1zaWduZWQgU0FNTCBDZXJ0aWZpY2F0ZTAeFw0xOTEyMjYyMDEwNDFaFw0yMDEyMjYyMDEwNDFaMFkxLjAsBgNVBAMMJXBhc3Nib29rIFNlbGYtc2lnbmVkIFNBTUwgQ2VydGlmaWNhdGUxETAPBgNVBAoMCHBhc3Nib29rMRQwEgYDVQQLDAtTZWxmLXNpZ25lZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO/ktBYZkY9xAijF4acvzX6Q1K8KoIZeyde8fVgcWBz4L5FgDQ4/dni4k2YAcPdwteGL4nKVzetUzjbRCBUNuO6lqU4J4WNNX4Xg4Ir7XLRoAQeo+omTPBdpJ1p02HjtN5jT01umN3bK2yto1e37CJhK6WJiaXqRewPxh4lI4aqdj3BhFkJ3I3r2qxaWOAXQ6X7fg3w/ny7QP53//ouZo7hSLY3GIcRKgvdjjVM3OW5C3WLpOq5Dez5GWVJ17aeFCfGQ8bwFKde6qfYqyGcU9xHB36TtVHB9hSFP/tUFhkiSOxtsrYwCgCyXm4UTSpP+wiNyjKfFw7qGLBvA2hGTNw8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAh9PeAqPRQk1/SSygIFADZBi08O/DPCshFwEHvJATIcTzcDD8UGAjXh+H5OlkDyX7KyrcaNvYaafCUo63A+WprdtdY5Ty6SBEwTYyiQyQfwM9BfK+imCoif1Ai7xAelD7p9lNazWq7JU+H/Ep7U7Q7LvpxAbK0JArt+IWTb2NcMb3OWE1r0gFbs44O1l6W9UbJTbyLMzbGbe5i+NHlgnwPwuhtRMh0NUYabGHKcHbhwyFhfGAQv2dAp5KF1E5gu6ZzCiFePzc0FrqXQyb2zpFYcJHXquiqaOeG7cZxRHYcjrl10Vxzki64XVA9BpdELgKSnupDGUEJsRUt3WVOmvZuA==", "x509cert": "MIIDEjCCAfqgAwIBAgIRAJZ9pOZ1g0xjiHtQAAejsMEwDQYJKoZIhvcNAQELBQAwMDEuMCwGA1UEAwwlcGFzc2Jvb2sgU2VsZi1zaWduZWQgU0FNTCBDZXJ0aWZpY2F0ZTAeFw0xOTEyMjYyMDEwNDFaFw0yMDEyMjYyMDEwNDFaMFkxLjAsBgNVBAMMJXBhc3Nib29rIFNlbGYtc2lnbmVkIFNBTUwgQ2VydGlmaWNhdGUxETAPBgNVBAoMCHBhc3Nib29rMRQwEgYDVQQLDAtTZWxmLXNpZ25lZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO/ktBYZkY9xAijF4acvzX6Q1K8KoIZeyde8fVgcWBz4L5FgDQ4/dni4k2YAcPdwteGL4nKVzetUzjbRCBUNuO6lqU4J4WNNX4Xg4Ir7XLRoAQeo+omTPBdpJ1p02HjtN5jT01umN3bK2yto1e37CJhK6WJiaXqRewPxh4lI4aqdj3BhFkJ3I3r2qxaWOAXQ6X7fg3w/ny7QP53//ouZo7hSLY3GIcRKgvdjjVM3OW5C3WLpOq5Dez5GWVJ17aeFCfGQ8bwFKde6qfYqyGcU9xHB36TtVHB9hSFP/tUFhkiSOxtsrYwCgCyXm4UTSpP+wiNyjKfFw7qGLBvA2hGTNw8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAh9PeAqPRQk1/SSygIFADZBi08O/DPCshFwEHvJATIcTzcDD8UGAjXh+H5OlkDyX7KyrcaNvYaafCUo63A+WprdtdY5Ty6SBEwTYyiQyQfwM9BfK+imCoif1Ai7xAelD7p9lNazWq7JU+H/Ep7U7Q7LvpxAbK0JArt+IWTb2NcMb3OWE1r0gFbs44O1l6W9UbJTbyLMzbGbe5i+NHlgnwPwuhtRMh0NUYabGHKcHbhwyFhfGAQv2dAp5KF1E5gu6ZzCiFePzc0FrqXQyb2zpFYcJHXquiqaOeG7cZxRHYcjrl10Vxzki64XVA9BpdELgKSnupDGUEJsRUt3WVOmvZuA==",
"url": "https://authentik.company/application/saml/<slug>/sso/binding/redirect/", "url": "https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/",
"entity_id": "https://awx.company/sso/metadata/saml/", "entity_id": "https://awx.company/sso/metadata/saml/",
"attr_email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", "attr_email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"attr_first_name": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" "attr_first_name": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"

View File

@ -0,0 +1,178 @@
---
title: Integrate with Bitwarden
sidebar_label: Bitwarden
support_level: community
---
import TabItem from "@theme/TabItem";
import Tabs from "@theme/Tabs";
## What is Bitwarden
> Bitwarden is a freemium, open-source password management service that helps users store, manage, and share sensitive information securely online.
>
> -- https://bitwarden.com/
## Preparation
The following placeholders are used in this guide:
- `authentik.company` is the FQDN of the authentik installation.
- `bitwarden.company` is the FQDN of the Bitwarden installation (if using self-hosted Bitwarden).
:::note
This documentation lists only the settings that you need to change from their default values. Be aware that any changes other than those explicitly mentioned in this guide could cause issues accessing your application.
:::
## Configuration methods
You can configure Bitwarden to use either OIDC or SAML; this guide explains both options.
<Tabs
defaultValue="oidc"
values={[
{ label: "Log in with OIDC", value: "oidc" },
{ label: "Log in with SAML", value: "saml" },
]}>
<TabItem value="oidc">
## authentik configuration
To support the integration of Bitwarden with authentik, you need to create a property mapping and an application/provider pair in authentik.
### Create a property mapping
Bitwarden requires a first and last name for every user. However, authentik, by default, only supplies a full name as a single string. As a result, a property mapping must be created to separate and provide first and last names to Bitwarden.
1. Log in to authentik as an administrator, and open the authentik Admin interface.
2. Navigate to **Customization** > **Property Mappings** and click **Create**.
- **Select type**: select **Scope Mapping**.
- **Configure the Scope Mapping**: Provide a descriptive name (e.g. `Bitwarden Profile Scope`), and an optional description.
- **Scope name**: `profile`
- **Expression**:
```python showLineNumbers
return {
"name": request.user.name,
"preferred_username": request.user.username,
"nickname": request.user.username,
"groups": [group.name for group in request.user.ak_groups.all()],
"surname": request.user.name.rsplit(" ", 1)[-1],
"givenname": request.user.name.rsplit(" ", 1)[0],
}
```
3. Click **Finish** to save the property mapping.
### Create an application and provider in authentik
1. Log in to authentik as an administrator, and open the authentik Admin interface.
2. Navigate to **Applications** > **Applications** and click **Create with Provider** to create an application and provider pair. (Alternatively you can first create a provider separately, then create the application and connect it with the provider.)
- **Application**: provide a descriptive name, an optional group for the type of application, the policy engine mode, and optional UI settings.
- **Choose a Provider type**: select **OAuth2/OpenID Connect** as the provider type.
- **Configure the Provider**: provide a name (or accept the auto-provided name), the authorization flow to use for this provider, and the following required configurations.
- Note the **Client ID**, **Client Secret**, and **slug** values because they will be required later.
- Set a `Strict` redirect URI to:
- `https://sso.bitwarden.com/oidc-signin` for Non-EU based SaaS Bitwarden.
- `https://sso.bitwarden.eu/oidc-signin` for EU based SaaS Bitwarden.
- `https://bitwarden.company/oidc-signin` for self-hosted Bitwarden.
- Select any available signing key.
- Under **Advanced protocol settings**, **Selected Scopes**:
- Remove `authentik default OAuth Mapping: OpenID 'profile'` and add the property mapping that you created.
- **Configure Bindings** _(optional)_: you can create a [binding](/docs/add-secure-apps/flows-stages/bindings/) (policy, group, or user) to manage the listing and access to applications on a user's **My applications** page.
3. Click **Submit** to save the new application and provider.
## Bitwarden configuration
1. Log in to the [Bitwarden dashboard](https://vault.bitwarden.com/#/login) as an administrator (choose `Accessing: bitwarden.eu` for Bitwarden accounts based in the EU). If you are using a self-hosted Bitwarden, go to `https://bitwarden.company/#/login`.
2. In the sidebar, navigate to **Admin Console** > **Settings** > **Single sign-on**, and enter the following settings:
- **Allow SSO authentication**: Select this option.
- **SSO Identifier**: enter a globally unique SSO identifier (this is not required if using self-hosted Bitwarden, or if you have claimed a domain, see the [Bitwarden Claimed Domains documentation](https://bitwarden.com/help/claimed-domains/)).
- **Type**: `OIDC`
- Under **OpenID connect configuration**:
- **Authority**: `https://authentik.company/application/o/<application_slug>/`
- **Client ID**: Client ID from authentik.
- **Client secret**: Client secret from authentik.
- **Metadata address**: `https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration`
- **OIDC redirect behavior**: `Redirect GET`
- **Get claims from user info endpoint**: Select this option.
3. Click **Save**.
</TabItem>
<TabItem value="saml">
## authentik configuration
To support the integration of Bitwarden with authentik, you need to create an application/provider pair in authentik.
### Create an application and provider in authentik
1. Log in to authentik as an administrator, and open the authentik Admin interface.
2. Navigate to **Applications** > **Applications** and click **Create with Provider** to create an application and provider pair. (Alternatively you can first create a provider separately, then create the application and connect it with the provider.)
- **Application**: provide a descriptive name, an optional group for the type of application, the policy engine mode, and optional UI settings. Take note of the **slug** as it will be required later.
- **Choose a Provider type**: select **SAML Provider** as the provider type.
- **Configure the Provider**: provide a name (or accept the auto-provided name), the authorization flow to use for this provider, and the following required configurations.
- Temporarily set the **ACS URL** to `https://temp.temp`
- Under **Advanced protocol settings**, set **Signing Certificate** to use any available certificate.
- **Configure Bindings** _(optional)_: you can create a [binding](/docs/add-secure-apps/flows-stages/bindings/) (policy, group, or user) to manage the listing and access to applications on a user's **My applications** page.
3. Click **Submit** to save the new application and provider.
### Download certificate file
2. Navigate to **Applications** > **Providers** and click on the name of the provider that you created in the previous section (e.g. `Provider for Bitwarden`).
3. Navigate to **Applications** > **Providers** and click on the name of the provider that you created in the previous section (e.g. `Provider for bitwarden`).
4. Under **Related objects** > **Download signing certificate**, click on **Download**. This downloaded file is your certificate file and it will be required in the next section.
## Bitwarden configuration
1. Log in to the [Bitwarden dashboard](https://vault.bitwarden.com/#/login) as an administrator (select `Accessing: bitwarden.eu` for EU based Bitwarden accounts). For self-hosted Bitwarden use `https://bitwarden.company/#/login`.
2. In the sidebar, navigate to **Admin Console** > **Settings** > **Single sign-on**, and enter the following settings:
- **Allow SSO authentication**: Select this option.
- **SSO Identifier**: enter a globally unique SSO identifier (this is not required if using self-hosted Bitwarden, or if you have claimed a domain, see the [Bitwarden Claimed Domains documentation](https://bitwarden.com/help/claimed-domains/)).
- **Type**: `SAML 2.0`
- Under **SAML service provider configuration**:
- **Expect signed assertions**: Select this option.
- Under **SAML identity provider configuration**:
- **Entity ID**: `authentik`
- **Single sign-on service URL**: `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
- **Single log-out service URL**: `https://authentik.company/application/saml/<application_slug>/slo/binding/redirect/`
- **X509 public certificate**: Paste the contents of your certificate file.
3. Under **SAML service provider configuration**, take note of the **SP entity ID** and **Assertion consumer service (ACS) URL** values. These will be required in the next section.
4. Click **Save**.
## Reconfigure authentik provider
1. Log in to authentik as an administrator, and open the authentik Admin interface.
2. Navigate to **Applications** > **Providers** and click the **Edit** icon of the newly created Bitwarden provider.
3. Under **Protocol settings**, set the following required configurations:
- **ACS URL**: set to the **Assertion consumer service (ACS) URL** from Bitwarden.
- **Audience**: set to the **SP entity ID** from Bitwarden.
4. Click **Update**
</TabItem>
</Tabs>
## Configuration verification
To confirm that authentik is properly configured with Bitwarden, log out and go to the [Bitwarden login page](https://vault.bitwarden.com/#/login) (select `Accessing: bitwarden.eu` for EU based Bitwarden accounts or use `https://bitwarden.company/#/login` for self-hosted Bitwarden).
Enter the email address of a Bitwarden account and click **Use single sign-on**. If you haven't claimed the email domain in Bitwarden, enter the unique SSO identifier that you selected, and click **Continue**. You should be redirected to authentik to login, once successful you should be redirected to the Bitwarden dashboard.
:::note
Depending on your `Member decryption options` setting, which is set in Bitwarden via **Admin Console** > **Settings** > **Single sign-on**, you may still be required to enter your master password after signing in via SSO.
:::
## Resources
- [Bitwarden Help - OIDC Configuration](https://bitwarden.com/help/configure-sso-oidc/)
- [Bitwarden Help - SAML 2.0 Configuration](https://bitwarden.com/help/configure-sso-saml/)
- [Bitwarden Help - Claimed Domains](https://bitwarden.com/help/claimed-domains/)

View File

@ -45,7 +45,7 @@ To support the integration of Coder with authentik, you need to create an applic
To support the integration of Coder with authentik, add the following environment variables to your Coder deployment: To support the integration of Coder with authentik, add the following environment variables to your Coder deployment:
```yaml showLineNumbers ```yaml showLineNumbers
CODER_OIDC_ISSUER_URL=https://authentik.company/application/o/<application slug>/ CODER_OIDC_ISSUER_URL=https://authentik.company/application/o/<application_slug>/
CODER_OIDC_EMAIL_DOMAIN=acme.company,acme-corp.company CODER_OIDC_EMAIL_DOMAIN=acme.company,acme-corp.company
CODER_OIDC_CLIENT_ID=<Client ID from authentik> CODER_OIDC_CLIENT_ID=<Client ID from authentik>
CODER_OIDC_CLIENT_SECRET=<Client secret from authentik> CODER_OIDC_CLIENT_SECRET=<Client secret from authentik>

View File

@ -45,7 +45,7 @@ To support the integration of FileRise with authentik, you need to create an app
1. Log in to FileRise as an administrator. 1. Log in to FileRise as an administrator.
2. Click on your profile icon in the upper right corner, then select **Admin Panel**. 2. Click on your profile icon in the upper right corner, then select **Admin Panel**.
3. Open the **OIDC Configuration & TOTP** section and configure the following settings: 3. Open the **OIDC Configuration & TOTP** section and configure the following settings:
- **OIDC Provider URL**: `https://authentik.company/application/o/<application-slug>/` - **OIDC Provider URL**: `https://authentik.company/application/o/<application_slug>/`
- **OIDC Client OpenID**: Client ID from authentik. - **OIDC Client OpenID**: Client ID from authentik.
- **OIDC Client Secret**: Client Secret from authentik. - **OIDC Client Secret**: Client Secret from authentik.
- **OIDC Redirect URI**: `https://filerise.company/api/auth/auth.php?oidc=callback` - **OIDC Redirect URI**: `https://filerise.company/api/auth/auth.php?oidc=callback`

View File

@ -69,20 +69,17 @@ Under **IdP Details**, set the following values:
- **SP entity ID**: `https` - **SP entity ID**: `https`
- **IdP Type**: `Custom` - **IdP Type**: `Custom`
- **IdP entity ID**: `https://authentik.company` - **IdP entity ID**: `https://authentik.company`
- **IdP Login URL**: `https://authentik.company/application/saml/slug-from-authentik/sso/binding/redirect/` - **IdP Login URL**: `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
- **IdP Logout URL**: `https://authentik.company/application/saml/slug-from-authentik/slo/binding/redirect/` - **IdP Logout URL**: `https://authentik.company/application/saml/<application_slug>/slo/binding/redirect/`
FortiGate creates a new user by default if one does not exist, so you will need to set the Default Admin Profile to the permissions you want any new users to have. (I have created a `no_permissions` profile to assign by default.) FortiGate creates a new user by default if one does not exist, so you will need to set the Default Admin Profile to the permissions you want any new users to have. (I have created a `no_permissions` profile to assign by default.)
Under `SP Details` set the **SP entity ID** to `https`. Note it for later use (this is your Audience value of the authentik SP-provider). Under `SP Details` set the **SP entity ID** to `https`. Note it for later use (this is your Audience value of the authentik SP-provider).
> [!IMPORTANT]
> On both `IdP Login and Logout URL` change the `<SLUG>` to your own from the authentik application you have created.
- Set `IdP Type` to `Custom` - Set `IdP Type` to `Custom`
- Set `IdP entity ID` to `https://authentik.company` - Set `IdP entity ID` to `https://authentik.company`
- Set `IdP Login URL` to `https://authentik.company/application/saml/<SLUG>/sso/binding/redirect/` - Set `IdP Login URL` to `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
- Set `IdP Logout URL` to `https://authentik.company/application/saml/<SLUG>/slo/binding/redirect/` - Set `IdP Logout URL` to `https://authentik.company/application/saml/<application_slug>/slo/binding/redirect/`
- Set `IdP Certificate` to `ak.cert` - Set `IdP Certificate` to `ak.cert`
## Troubleshooting ## Troubleshooting

View File

@ -34,7 +34,7 @@ To support the integration of FortiManager with authentik, you need to create an
- **Choose a Provider type**: select **SAML Provider** as the provider type. - **Choose a Provider type**: select **SAML Provider** as the provider type.
- **Configure the Provider**: provide a name (or accept the auto-provided name), the authorization flow to use for this provider, and the following required configurations. - **Configure the Provider**: provide a name (or accept the auto-provided name), the authorization flow to use for this provider, and the following required configurations.
- Set the **ACS URL** to `https://fortimanager.company/saml/?acs`. - Set the **ACS URL** to `https://fortimanager.company/saml/?acs`.
- Set the **Issuer** to `https://authentik.company/application/saml/application-slug/sso/binding/redirect/`. - Set the **Issuer** to `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`.
- Set the **Service Provider Binding** to `Post`. - Set the **Service Provider Binding** to `Post`.
- **Configure Bindings** _(optional)_: you can create a [binding](/docs/add-secure-apps/flows-stages/bindings/) (policy, group, or user) to manage the listing and access to applications on a user's **My applications** page. - **Configure Bindings** _(optional)_: you can create a [binding](/docs/add-secure-apps/flows-stages/bindings/) (policy, group, or user) to manage the listing and access to applications on a user's **My applications** page.
@ -48,8 +48,8 @@ To support the integration of FortiManager with authentik, you need to create an
4. Choose the **Default Login Page** as either **Normal** or **Single Sign-On**. Selecting **Normal** allows both local and SAML authentication, while **Single Sign-On** restricts login to SAML only. 4. Choose the **Default Login Page** as either **Normal** or **Single Sign-On**. Selecting **Normal** allows both local and SAML authentication, while **Single Sign-On** restricts login to SAML only.
5. By default, FortiManager creates a new user if one does not exist. Set the **Default Admin Profile** to assign the desired permissions to new users. A `no_permissions` profile is created by default for this purpose. 5. By default, FortiManager creates a new user if one does not exist. Set the **Default Admin Profile** to assign the desired permissions to new users. A `no_permissions` profile is created by default for this purpose.
6. Set the **IdP Type** field to **Custom**. 6. Set the **IdP Type** field to **Custom**.
7. For the **IdP Entity ID** field, enter: `https://authentik.company/application/saml/application-slug/sso/binding/redirect/` 7. For the **IdP Entity ID** field, enter: `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
8. Set the **IdP Login URL** to: `https://authentik.company/application/saml/application-slug/sso/binding/redirect/` 8. Set the **IdP Login URL** to: `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
9. Set the **IdP Logout URL** to: `https://authentik.company/` 9. Set the **IdP Logout URL** to: `https://authentik.company/`
10. In the **IdP Certificate** field, import your authentik certificate (either self-signed or valid). 10. In the **IdP Certificate** field, import your authentik certificate (either self-signed or valid).

View File

@ -50,7 +50,7 @@ To support the integration of Gitea with authentik, you need to create an applic
- **Client ID (Key)**: Enter the Client ID from authentik. - **Client ID (Key)**: Enter the Client ID from authentik.
- **Client Secret**: Enter the Client Secret from authentik. - **Client Secret**: Enter the Client Secret from authentik.
- **Icon URL**: `https://authentik.company/static/dist/assets/icons/icon.png` - **Icon URL**: `https://authentik.company/static/dist/assets/icons/icon.png`
- **OpenID Connect Auto Discovery URL**: `https://authentik.company/application/o/<slug>/.well-known/openid-configuration` - **OpenID Connect Auto Discovery URL**: `https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration`
- **Additional Scopes**: `email profile` - **Additional Scopes**: `email profile`
![](./gitea1.png) ![](./gitea1.png)
@ -158,7 +158,7 @@ gitea:
provider: "openidConnect" provider: "openidConnect"
key: "<Client ID from authentik>" key: "<Client ID from authentik>"
secret: "<Client secret from authentik>" secret: "<Client secret from authentik>"
autoDiscoverUrl: "https://authentik.company/application/o/<slug>/.well-known/openid-configuration" autoDiscoverUrl: "https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration"
iconUrl: "https://authentik.company/static/dist/assets/icons/icon.png" iconUrl: "https://authentik.company/static/dist/assets/icons/icon.png"
scopes: "email profile" scopes: "email profile"
``` ```
@ -188,7 +188,7 @@ gitea:
- name: "authentik" - name: "authentik"
provider: "openidConnect" provider: "openidConnect"
existingSecret: gitea-authentik-secret existingSecret: gitea-authentik-secret
autoDiscoverUrl: "https://authentik.company/application/o/<slug>/.well-known/openid-configuration" autoDiscoverUrl: "https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration"
iconUrl: "https://authentik.company/static/dist/assets/icons/icon.png" iconUrl: "https://authentik.company/static/dist/assets/icons/icon.png"
scopes: "email profile" scopes: "email profile"
``` ```

View File

@ -55,7 +55,7 @@ In the left-hand navigation, within the `Settings` section, click `Authenticatio
On this page: On this page:
- Select the `Require SAML authentication` checkbox. - Select the `Require SAML authentication` checkbox.
- In `Sign on URL`, type `https://authentik.company/application/saml/<authentik application slug>/sso/binding/redirect/` - In `Sign on URL`, type `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
- For `Issuer`, type `https://github.com/enterprises/foo` or the `Audience` you set in authentik - For `Issuer`, type `https://github.com/enterprises/foo` or the `Audience` you set in authentik
- For `Public certificate`, paste the _full_ signing certificate into this field. - For `Public certificate`, paste the _full_ signing certificate into this field.
- Verify that the `Signature method` and `Digest method` match your SAML provider settings in authentik. - Verify that the `Signature method` and `Digest method` match your SAML provider settings in authentik.

View File

@ -51,7 +51,7 @@ In the left-hand navigation, scroll down to the Security section and click `Auth
On this page: On this page:
- Select the `Enable SAML authentication` checkbox. - Select the `Enable SAML authentication` checkbox.
- In `sign-on URL`, type `https://authentik.company/application/saml/<authentik application slug>/sso/binding/redirect/` - In `sign-on URL`, type `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
- For `Issuer`, type `https://github.com/orgs/foo` or the `Audience` you set in authentik - For `Issuer`, type `https://github.com/orgs/foo` or the `Audience` you set in authentik
- For `Public certificate`, paste the _full_ signing certificate into this field. - For `Public certificate`, paste the _full_ signing certificate into this field.
- Verify that the `Signature method` and `Digest method` match your SAML provider settings in authentik. - Verify that the `Signature method` and `Digest method` match your SAML provider settings in authentik.

View File

@ -78,7 +78,7 @@ gitlab_rails['omniauth_providers'] = [
assertion_consumer_service_url: 'https://gitlab.company/users/auth/saml/callback', assertion_consumer_service_url: 'https://gitlab.company/users/auth/saml/callback',
# Shown when navigating to certificates in authentik # Shown when navigating to certificates in authentik
idp_cert_fingerprint: '4E:1E:CD:67:4A:67:5A:E9:6A:D0:3C:E6:DD:7A:F2:44:2E:76:00:6A', idp_cert_fingerprint: '4E:1E:CD:67:4A:67:5A:E9:6A:D0:3C:E6:DD:7A:F2:44:2E:76:00:6A',
idp_sso_target_url: 'https://authentik.company/application/saml/<gitlab application slug>/sso/binding/redirect/', idp_sso_target_url: 'https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/',
issuer: 'https://gitlab.company', issuer: 'https://gitlab.company',
name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
attribute_statements: { attribute_statements: {
@ -138,7 +138,7 @@ gitlab_rails['omniauth_providers'] = [
name: 'openid_connect', name: 'openid_connect',
scope: ['openid','profile','email'], scope: ['openid','profile','email'],
response_type: 'code', response_type: 'code',
issuer: 'https://authentik.company/application/o/gitlab-slug/', issuer: 'https://authentik.company/application/o/<application_slug>/',
discovery: true, discovery: true,
client_auth_method: 'query', client_auth_method: 'query',
uid_field: 'preferred_username', uid_field: 'preferred_username',

View File

@ -60,7 +60,7 @@ sudo docker exec -it glitchtip-web-1 ./manage.py createsuperuser
- Client ID: &lt;Client ID from authentik> - Client ID: &lt;Client ID from authentik>
- Secret key: &lt;Client Secret from authentik> - Secret key: &lt;Client Secret from authentik>
- Key: leave blank - Key: leave blank
- Settings: `{"server_url": "https://authentik.company/application/o/<Slug of the application from above>/"}` - Settings: `{"server_url": "https://authentik.company/application/o/<application_slug>/"}`
The URL should match the **OpenID Configuration Issuer** URL for the authentik provider. The URL should match the **OpenID Configuration Issuer** URL for the authentik provider.
This will add a **Log in with Authentik** button to the GlitchTip log in page. To add an authentik account to an existing GlitchTip account, log in using the username/password, click _Profile_, then click _Add Account_ in the _Social Auth Accounts_ section. This will add a **Log in with Authentik** button to the GlitchTip log in page. To add an authentik account to an existing GlitchTip account, log in using the username/password, click _Profile_, then click _Add Account_ in the _Social Auth Accounts_ section.

View File

@ -39,7 +39,7 @@ To support the integration of GlobalProtect with authentik, you need to create a
- **Choose a Provider type**: Select **SAML Provider**. - **Choose a Provider type**: Select **SAML Provider**.
- **Configure the Provider**: - **Configure the Provider**:
- Set the **ACS URL** to `https://gp.company:443/SAML20/SP/ACS`. (Note the absence of the trailing slash and the inclusion of the web interface port) - Set the **ACS URL** to `https://gp.company:443/SAML20/SP/ACS`. (Note the absence of the trailing slash and the inclusion of the web interface port)
- Set the **Issuer** to `https://authentik.company/application/saml/application-slug/sso/binding/redirect/`. - Set the **Issuer** to `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`.
- Set the **Service Provider Binding** to `Post`. - Set the **Service Provider Binding** to `Post`.
- Under **Advanced protocol settings**, select an available signing certificate. - Under **Advanced protocol settings**, select an available signing certificate.
3. Click **Submit** to save the new application and provider. 3. Click **Submit** to save the new application and provider.

View File

@ -124,7 +124,7 @@ environment:
GF_AUTH_GENERIC_OAUTH_AUTH_URL: "https://authentik.company/application/o/authorize/" GF_AUTH_GENERIC_OAUTH_AUTH_URL: "https://authentik.company/application/o/authorize/"
GF_AUTH_GENERIC_OAUTH_TOKEN_URL: "https://authentik.company/application/o/token/" GF_AUTH_GENERIC_OAUTH_TOKEN_URL: "https://authentik.company/application/o/token/"
GF_AUTH_GENERIC_OAUTH_API_URL: "https://authentik.company/application/o/userinfo/" GF_AUTH_GENERIC_OAUTH_API_URL: "https://authentik.company/application/o/userinfo/"
GF_AUTH_SIGNOUT_REDIRECT_URL: "https://authentik.company/application/o/<Slug of the application from above>/end-session/" GF_AUTH_SIGNOUT_REDIRECT_URL: "https://authentik.company/application/o/<application_slug>/end-session/"
# Optionally enable auto-login (bypasses Grafana login screen) # Optionally enable auto-login (bypasses Grafana login screen)
GF_AUTH_OAUTH_AUTO_LOGIN: "true" GF_AUTH_OAUTH_AUTO_LOGIN: "true"
# Optionally map user groups to Grafana roles # Optionally map user groups to Grafana roles
@ -139,7 +139,7 @@ If you are using a config-file instead, you have to set these options:
```ini ```ini
[auth] [auth]
signout_redirect_url = https://authentik.company/application/o/<Slug of the application from above>/end-session/ signout_redirect_url = https://authentik.company/application/o/<application_slug>/end-session/
# Optionally enable auto-login # Optionally enable auto-login
oauth_auto_login = true oauth_auto_login = true
@ -163,7 +163,7 @@ If you are using a Helm `values.yaml` file instead, you have to set these option
```yaml ```yaml
grafana.ini: grafana.ini:
auth: auth:
signout_redirect_url: "https://authentik.company/application/o/<Slug of the application from above>/end-session/" signout_redirect_url: "https://authentik.company/application/o/<application_slug>/end-session/"
oauth_auto_login: true oauth_auto_login: true
auth.generic_oauth: auth.generic_oauth:
name: authentik name: authentik

View File

@ -56,5 +56,5 @@ Only settings that have been modified from default have been listed.
- **Token Endpoint**: `https://authentik.company/application/o/token/` - **Token Endpoint**: `https://authentik.company/application/o/token/`
- **Authorize Endpoint**: `https://authentik.company/application/o/authorize/` - **Authorize Endpoint**: `https://authentik.company/application/o/authorize/`
- **Userinfo Endpoint**: `https://authentik.company/application/o/userinfo/` - **Userinfo Endpoint**: `https://authentik.company/application/o/userinfo/`
- **Userinfo Logout Endpoint**: `https://authentik.company/application/o/application-slug/end-session/` - **Userinfo Logout Endpoint**: `https://authentik.company/application/o/<application_slug>/end-session/`
- **Scopes**: `email openid profile` - **Scopes**: `email openid profile`

View File

@ -49,7 +49,7 @@ To support the integration of Gravity with authentik, you need to create an appl
1. From the **Gravity administrative interface**, navigate to **Cluster** > **Roles** and click **API**. 1. From the **Gravity administrative interface**, navigate to **Cluster** > **Roles** and click **API**.
2. Under the **OIDC** sub-section, configure the following values: 2. Under the **OIDC** sub-section, configure the following values:
- **Issuer**: `https://authentik.company/application/o/application-slug/` - **Issuer**: `https://authentik.company/application/o/<application_slug>/`
- **Client ID**: Your Client ID from authentik - **Client ID**: Your Client ID from authentik
- **Client Secret**: Your Client Secret from authentik - **Client Secret**: Your Client Secret from authentik
- **Redirect URL**: `https://gravity.company/auth/oidc/callback` - **Redirect URL**: `https://gravity.company/auth/oidc/callback`

View File

@ -53,7 +53,7 @@ Configure the oidc auth method, oidc discovery url is the OpenID Configuration I
``` ```
vault write auth/oidc/config \ vault write auth/oidc/config \
oidc_discovery_url="https://authentik.company/application/o/vault-slug/" \ oidc_discovery_url="https://authentik.company/application/o/<application_slug>/" \
oidc_client_id="Client ID" \ oidc_client_id="Client ID" \
oidc_client_secret="Client Secret" \ oidc_client_secret="Client Secret" \
default_role="reader" default_role="reader"

View File

@ -48,7 +48,7 @@ Add the following environment variables to your Homarr configuration. Make sure
AUTH_PROVIDERS="oidc,credentials" AUTH_PROVIDERS="oidc,credentials"
AUTH_OIDC_CLIENT_ID=<Client ID from authentik> AUTH_OIDC_CLIENT_ID=<Client ID from authentik>
AUTH_OIDC_CLIENT_SECRET=<Client secret from authentik> AUTH_OIDC_CLIENT_SECRET=<Client secret from authentik>
AUTH_OIDC_ISSUER=https://authentik.company/application/o/<slug from authentik>/ AUTH_OIDC_ISSUER=https://authentik.company/application/o/<application_slug>/
AUTH_OIDC_URI=https://authentik.company/application/o/authorize AUTH_OIDC_URI=https://authentik.company/application/o/authorize
AUTH_OIDC_CLIENT_NAME=authentik AUTH_OIDC_CLIENT_NAME=authentik
OAUTH_ALLOW_DANGEROUS_EMAIL_ACCOUNT_LINKING=true OAUTH_ALLOW_DANGEROUS_EMAIL_ACCOUNT_LINKING=true

View File

@ -29,7 +29,7 @@ To add documentation for a new application (with support level Community or Vend
wget https://raw.githubusercontent.com/goauthentik/authentik/main/website/integrations/template/service.md wget https://raw.githubusercontent.com/goauthentik/authentik/main/website/integrations/template/service.md
``` ```
Don't forget to edit the `sidebarsIntegrations.js` file to add your new integration to the lefthand navigation bar. Don't forget to edit the `website/sidebars/integrations.mjs` file to add your new integration to the appropriate section in the lefthand navigation pane.
## Integration categories ## Integration categories

View File

@ -50,7 +50,7 @@ Modify the **Security Realm** option to select `Login with Openid Connect`.
In the **Client id** and **Client secret** fields, enter the Client ID and Client Secret values from the provider you created. In the **Client id** and **Client secret** fields, enter the Client ID and Client Secret values from the provider you created.
Set the configuration mode to **Automatic configuration** and set the **Well-known configuration endpoint** to `https://authentik.company/application/o/<Slug of the application from above>/.well-known/openid-configuration` Set the configuration mode to **Automatic configuration** and set the **Well-known configuration endpoint** to `https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration`
Check the checkbox **Override scopes** and input the scopes `openid profile email` into the new input field. Check the checkbox **Override scopes** and input the scopes `openid profile email` into the new input field.

View File

@ -82,11 +82,11 @@ kimai:
idp: idp:
entityId: "https://authentik.company/" entityId: "https://authentik.company/"
singleSignOnService: singleSignOnService:
url: "https://authentik.company/application/saml/<application-slug>/sso/binding/redirect/" url: "https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/"
binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
# the "single logout" feature was not yet tested, if you want to help, please let me know! # the "single logout" feature was not yet tested, if you want to help, please let me know!
singleLogoutService: singleLogoutService:
url: "https://authentik.company/application/saml/<application-slug>/slo/binding/redirect/" url: "https://authentik.company/application/saml/<application_slug>/slo/binding/redirect/"
binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
# Signing certificate from *Advanced protocol settings* # Signing certificate from *Advanced protocol settings*
x509cert: "XXXXXXXXXXXXXXXXXXXXXXXXXXX==" x509cert: "XXXXXXXXXXXXXXXXXXXXXXXXXXX=="

View File

@ -69,5 +69,5 @@ spring:
provider: provider:
authentik: authentik:
user-name-attribute: preferred_username user-name-attribute: preferred_username
issuer-uri: https://authentik.company/application/o/<application slug>/ issuer-uri: https://authentik.company/application/o/<application_slug>/
``` ```

View File

@ -48,7 +48,7 @@ To support the integration of Komodo with authentik, you need to create an appli
```yaml ```yaml
KOMODO_OIDC_ENABLED=true KOMODO_OIDC_ENABLED=true
KOMODO_OIDC_PROVIDER=https://authentik.company/application/o/<application-slug>/ KOMODO_OIDC_PROVIDER=https://authentik.company/application/o/<application_slug>/
KOMODO_OIDC_CLIENT_ID=<authentik_client_ID> KOMODO_OIDC_CLIENT_ID=<authentik_client_ID>
KOMODO_OIDC_CLIENT_SECRET=<authentik client secret> KOMODO_OIDC_CLIENT_SECRET=<authentik client secret>
``` ```

View File

@ -47,7 +47,7 @@ To configure Linkwarden to use authentik, add the following values to your `.env
``` ```
NEXT_PUBLIC_AUTHENTIK_ENABLED=true NEXT_PUBLIC_AUTHENTIK_ENABLED=true
AUTHENTIK_CUSTOM_NAME=authentik # Optionally set a custom provider name. Will be displayed on the login page AUTHENTIK_CUSTOM_NAME=authentik # Optionally set a custom provider name. Will be displayed on the login page
AUTHENTIK_ISSUER=https://authentik.company/application/o/<application slug> AUTHENTIK_ISSUER=https://authentik.company/application/o/<application_slug>
AUTHENTIK_CLIENT_ID=<Your Client ID> AUTHENTIK_CLIENT_ID=<Your Client ID>
AUTHENTIK_CLIENT_SECRET=<Your Client Secret> AUTHENTIK_CLIENT_SECRET=<Your Client Secret>
``` ```

View File

@ -53,7 +53,7 @@ oidc_providers:
- idp_id: authentik - idp_id: authentik
idp_name: authentik idp_name: authentik
discover: true discover: true
issuer: "https://authentik.company/application/o/app-slug/" issuer: "https://authentik.company/application/o/<application_slug>/"
client_id: "*client id*" client_id: "*client id*"
client_secret: "*client secret*" client_secret: "*client secret*"
scopes: scopes:

View File

@ -52,7 +52,7 @@ To enable OIDC login with Mealie, update your environment variables to include t
```yaml showLineNumbers ```yaml showLineNumbers
OIDC_AUTH_ENABLED=true OIDC_AUTH_ENABLED=true
OIDC_PROVIDER_NAME=authentik OIDC_PROVIDER_NAME=authentik
OIDC_CONFIGURATION_URL=https://authentik.company/application/o/<slug from authentik>/.well-known/openid-configuration OIDC_CONFIGURATION_URL=https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration
OIDC_CLIENT_ID=<Client ID from authentik> OIDC_CLIENT_ID=<Client ID from authentik>
OIDC_CLIENT_SECRET=<Client secret from authentik> OIDC_CLIENT_SECRET=<Client secret from authentik>
OIDC_SIGNUP_ENABLED=true OIDC_SIGNUP_ENABLED=true

View File

@ -87,7 +87,7 @@ You can set up OpenID in two different ways: via the web interface or the comman
From the sidebar of the main page, go to **Identity -> OpenID**, click **Create**, and then define the configuration as follows: From the sidebar of the main page, go to **Identity -> OpenID**, click **Create**, and then define the configuration as follows:
- Name: MinIO - Name: MinIO
- Config URL: `https://authentik.company/application/o/<minio slug>/.well-known/openid-configuration` - Config URL: `https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration`
- Client ID: Your client ID from the previous step - Client ID: Your client ID from the previous step
- Client Secret: Your client secret from the previous step - Client Secret: Your client secret from the previous step
- Scopes: `openid, email, profile, minio` - Scopes: `openid, email, profile, minio`
@ -103,7 +103,7 @@ After that is done, run the following command to configure the OpenID provider:
``` ```
~ mc admin config set myminio identity_openid \ ~ mc admin config set myminio identity_openid \
config_url="https://authentik.company/application/o/<minio slug>/.well-known/openid-configuration" \ config_url="https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration" \
client_id="<client id>" \ client_id="<client id>" \
client_secret="<client secret>" \ client_secret="<client secret>" \
scopes="openid,profile,email,minio" scopes="openid,profile,email,minio"

View File

@ -88,7 +88,7 @@ NetBird requires the service account to have full administrative access to the a
To configure NetBird to use authentik, add the following environment variables to your NetBird deployment: To configure NetBird to use authentik, add the following environment variables to your NetBird deployment:
```yaml showLineNumbers title="setup.env" ```yaml showLineNumbers title="setup.env"
NETBIRD_AUTH_OIDC_CONFIGURATION_ENDPOINT="https://authentik.company/application/o/<application slug>/.well-known/openid-configuration" NETBIRD_AUTH_OIDC_CONFIGURATION_ENDPOINT="https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration"
NETBIRD_USE_AUTH0=false NETBIRD_USE_AUTH0=false
NETBIRD_AUTH_CLIENT_ID="<Your Client ID>" NETBIRD_AUTH_CLIENT_ID="<Your Client ID>"
NETBIRD_AUTH_SUPPORTED_SCOPES="openid profile email offline_access api" NETBIRD_AUTH_SUPPORTED_SCOPES="openid profile email offline_access api"

View File

@ -54,11 +54,11 @@ REMOTE_AUTH_ENABLED='true'
REMOTE_AUTH_BACKEND='social_core.backends.open_id_connect.OpenIdConnectAuth' REMOTE_AUTH_BACKEND='social_core.backends.open_id_connect.OpenIdConnectAuth'
# python-social-auth config # python-social-auth config
SOCIAL_AUTH_OIDC_OIDC_ENDPOINT='https://authentik.company/application/o/<Application slug>/' SOCIAL_AUTH_OIDC_OIDC_ENDPOINT='https://authentik.company/application/o/<application_slug>/'
SOCIAL_AUTH_OIDC_KEY='<Client ID>' SOCIAL_AUTH_OIDC_KEY='<Client ID>'
SOCIAL_AUTH_OIDC_SECRET='<Client Secret>' SOCIAL_AUTH_OIDC_SECRET='<Client Secret>'
SOCIAL_AUTH_OIDC_SCOPE=openid profile email roles SOCIAL_AUTH_OIDC_SCOPE=openid profile email roles
LOGOUT_REDIRECT_URL='https://authentik.company/application/o/<Application slug>/end-session/' LOGOUT_REDIRECT_URL='https://authentik.company/application/o/<application_slug>/end-session/'
``` ```
The Netbox configuration needs to be extended, for this you can create a new file in the configuration folder, for example `authentik.py`. The Netbox configuration needs to be extended, for this you can create a new file in the configuration folder, for example `authentik.py`.
@ -90,7 +90,7 @@ LOGOUT_REDIRECT_URL = environ.get('LOGOUT_REDIRECT_URL')
#SOCIAL_AUTH_OIDC_ENDPOINT = 'https://authentik.company/application/o/<Application #SOCIAL_AUTH_OIDC_ENDPOINT = 'https://authentik.company/application/o/<Application
#SOCIAL_AUTH_OIDC_KEY = '<Client ID>' #SOCIAL_AUTH_OIDC_KEY = '<Client ID>'
#SOCIAL_AUTH_OIDC_SECRET = '<Client Secret>' #SOCIAL_AUTH_OIDC_SECRET = '<Client Secret>'
#LOGOUT_REDIRECT_URL = 'https://authentik.company/application/o/<Application slug>/end-session/ #LOGOUT_REDIRECT_URL = 'https://authentik.company/application/o/<application_slug>/end-session/
``` ```
### Groups ### Groups

View File

@ -145,7 +145,7 @@ Depending on your Nextcloud configuration, you may need to use `https://nextclou
- **Identifier**: `authentik` - **Identifier**: `authentik`
- **Client ID**: Client ID from authentik - **Client ID**: Client ID from authentik
- **Client secret**: Client secret from authentik - **Client secret**: Client secret from authentik
- **Discovery endpoint**: `https://authentik.company/application/o/<application-slug>/.well-known/openid-configuration` - **Discovery endpoint**: `https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration`
- **Scope**: `email profile openid` - **Scope**: `email profile openid`
- Under **Attribute mappings**: - Under **Attribute mappings**:
@ -309,8 +309,8 @@ To grant Nextcloud admin access to authentik users you will need to create a pro
- **Optional display name**: `authentik` - **Optional display name**: `authentik`
- **Identifier of the IdP entity**: `https://authentik.company` - **Identifier of the IdP entity**: `https://authentik.company`
- **URL target for authentication requests**: `https://authentik.company/application/saml/<application-slug>/sso/binding/redirect/` - **URL target for authentication requests**: `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
- **URL for SLO requests**: `https://authentik.company/application/saml/<application-slug>/slo/binding/redirect/` - **URL for SLO requests**: `https://authentik.company/application/saml/<application_slug>/slo/binding/redirect/`
- **Public X.509 certificate of the IdP**: Paste the contents of your certificate file. - **Public X.509 certificate of the IdP**: Paste the contents of your certificate file.
- **Set attribute mappings**: - **Set attribute mappings**:
- **Display name**: `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name` - **Display name**: `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`

View File

@ -73,7 +73,7 @@ strategy: {
icon:"fa-cloud", icon:"fa-cloud",
strategy: require("passport-openidconnect").Strategy, strategy: require("passport-openidconnect").Strategy,
options: { options: {
issuer: 'https://authentik.company/application/o/<application-slug>/', issuer: 'https://authentik.company/application/o/<application_slug>/',
authorizationURL: 'https://authentik.company/application/o/authorize/', authorizationURL: 'https://authentik.company/application/o/authorize/',
tokenURL: 'https://authentik.company/application/o/token/', tokenURL: 'https://authentik.company/application/o/token/',
userInfoURL: 'https://authentik.company/application/o/userinfo/', userInfoURL: 'https://authentik.company/application/o/userinfo/',

View File

@ -49,7 +49,7 @@ Enter the following details from the authentik provider:
- Set **OAUTH_CLIENT_ID** to the Client ID copied from authentik. - Set **OAUTH_CLIENT_ID** to the Client ID copied from authentik.
- Set **OAUTH_CLIENT_SECRET** to the Client Secret copied from authentik. - Set **OAUTH_CLIENT_SECRET** to the Client Secret copied from authentik.
- Set **OAUTH_PROVIDER_NAME** to `authentik`. - Set **OAUTH_PROVIDER_NAME** to `authentik`.
- Set **OPENID_PROVIDER_URL** to `https://authentik.company/application/o/your-slug-here/.well-known/openid-configuration`. - Set **OPENID_PROVIDER_URL** to `https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration`.
- Set **OPENID_REDIRECT_URI** to `https://openwebui.company/oauth/oidc/callback`. - Set **OPENID_REDIRECT_URI** to `https://openwebui.company/oauth/oidc/callback`.
- If you wish for new users to be created on Open Web UI, set **ENABLE_OAUTH_SIGNUP** to 'true'. - If you wish for new users to be created on Open Web UI, set **ENABLE_OAUTH_SIGNUP** to 'true'.

View File

@ -53,7 +53,7 @@ OIDC_CLIENT_SECRET=
OIDC_AUTH_URI=https://authentik.company/application/o/authorize/ OIDC_AUTH_URI=https://authentik.company/application/o/authorize/
OIDC_TOKEN_URI=https://authentik.company/application/o/token/ OIDC_TOKEN_URI=https://authentik.company/application/o/token/
OIDC_USERINFO_URI=https://authentik.company/application/o/userinfo/ OIDC_USERINFO_URI=https://authentik.company/application/o/userinfo/
OIDC_LOGOUT_URI=https://authentik.company/application/o/wiki/end-session/ OIDC_LOGOUT_URI=https://authentik.company/application/o/<application_slug>/end-session/
OIDC_USERNAME_CLAIM=preferred_username OIDC_USERNAME_CLAIM=preferred_username
OIDC_DISPLAY_NAME=authentik OIDC_DISPLAY_NAME=authentik
OIDC_SCOPES=openid profile email OIDC_SCOPES=openid profile email

View File

@ -71,7 +71,7 @@ environment:
"client_id": "<Client ID>", "client_id": "<Client ID>",
"secret": "<Client Secret>", "secret": "<Client Secret>",
"settings": { "settings": {
"server_url": "https://authentik.company/application/o/<slug>/.well-known/openid-configuration" "server_url": "https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration"
} }
} }
], ],

View File

@ -68,7 +68,7 @@ To configure OAuth in pgAdmin, you can either use the `config_local.py` file or
'OAUTH2_AUTHORIZATION_URL': 'https://authentik.company/application/o/authorize/', 'OAUTH2_AUTHORIZATION_URL': 'https://authentik.company/application/o/authorize/',
'OAUTH2_API_BASE_URL': 'https://authentik.company/', 'OAUTH2_API_BASE_URL': 'https://authentik.company/',
'OAUTH2_USERINFO_ENDPOINT': 'https://authentik.company/application/o/userinfo/', 'OAUTH2_USERINFO_ENDPOINT': 'https://authentik.company/application/o/userinfo/',
'OAUTH2_SERVER_METADATA_URL': 'https://authentik.company/application/o/<App Slug>/.well-known/openid-configuration', 'OAUTH2_SERVER_METADATA_URL': 'https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration',
'OAUTH2_SCOPE': 'openid email profile', 'OAUTH2_SCOPE': 'openid email profile',
'OAUTH2_ICON': '<Fontawesome icon key (e.g., fa-key)>', 'OAUTH2_ICON': '<Fontawesome icon key (e.g., fa-key)>',
'OAUTH2_BUTTON_COLOR': '<Hexadecimal color code for the login button>' 'OAUTH2_BUTTON_COLOR': '<Hexadecimal color code for the login button>'
@ -90,7 +90,7 @@ For deployments using Docker or Kubernetes, you can configure OAuth using the fo
```bash ```bash
PGADMIN_CONFIG_AUTHENTICATION_SOURCES="['oauth2', 'internal']" PGADMIN_CONFIG_AUTHENTICATION_SOURCES="['oauth2', 'internal']"
PGADMIN_CONFIG_OAUTH2_AUTO_CREATE_USER=True PGADMIN_CONFIG_OAUTH2_AUTO_CREATE_USER=True
PGADMIN_CONFIG_OAUTH2_CONFIG="[{'OAUTH2_NAME':'authentik','OAUTH2_DISPLAY_NAME':'Login with authentik','OAUTH2_CLIENT_ID':'<Client ID from authentik>','OAUTH2_CLIENT_SECRET':'<Client secret from authentik>','OAUTH2_TOKEN_URL':'https://authentik.company/application/o/token/','OAUTH2_AUTHORIZATION_URL':'https://authentik.company/application/o/authorize/','OAUTH2_API_BASE_URL':'https://authentik.company/','OAUTH2_USERINFO_ENDPOINT':'https://authentik.company/application/o/userinfo/','OAUTH2_SERVER_METADATA_URL':'https://authentik.company/application/o/<App Slug>/.well-known/openid-configuration','OAUTH2_SCOPE':'openid email profile','OAUTH2_ICON':'<Fontawesome icon key (e.g., fa-key)>','OAUTH2_BUTTON_COLOR':'<Hexadecimal color code for the login button>'}]" PGADMIN_CONFIG_OAUTH2_CONFIG="[{'OAUTH2_NAME':'authentik','OAUTH2_DISPLAY_NAME':'Login with authentik','OAUTH2_CLIENT_ID':'<Client ID from authentik>','OAUTH2_CLIENT_SECRET':'<Client secret from authentik>','OAUTH2_TOKEN_URL':'https://authentik.company/application/o/token/','OAUTH2_AUTHORIZATION_URL':'https://authentik.company/application/o/authorize/','OAUTH2_API_BASE_URL':'https://authentik.company/','OAUTH2_USERINFO_ENDPOINT':'https://authentik.company/application/o/userinfo/','OAUTH2_SERVER_METADATA_URL':'https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration','OAUTH2_SCOPE':'openid email profile','OAUTH2_ICON':'<Fontawesome icon key (e.g., fa-key)>','OAUTH2_BUTTON_COLOR':'<Hexadecimal color code for the login button>'}]"
``` ```
### General Notes ### General Notes

View File

@ -41,9 +41,9 @@ Set the following values:
```env ```env
SAML_ENABLED=True SAML_ENABLED=True
SAML_PATH=os.path.join(os.path.dirname(file), 'saml') SAML_PATH=os.path.join(os.path.dirname(file), 'saml')
SAML_METADATA_URL=https://authentik.company/application/saml/<application-slug>/metadata/ SAML_METADATA_URL=https://authentik.company/application/saml/<application_slug>/metadata/
SAML_METADATA_CACHE_LIFETIME=1 SAML_METADATA_CACHE_LIFETIME=1
SAML_LOGOUT_URL=https://authentik.company/application/saml/<application-slug>/slo/binding/redirect/ SAML_LOGOUT_URL=https://authentik.company/application/saml/<application_slug>/slo/binding/redirect/
SAML_SP_ENTITY_ID=pdns-admin SAML_SP_ENTITY_ID=pdns-admin
SAML_SP_CONTACT_NAME=me SAML_SP_CONTACT_NAME=me
SAML_SP_CONTACT_MAIL=me SAML_SP_CONTACT_MAIL=me

View File

@ -91,7 +91,7 @@ Push Security requires separate first and last names for each user, but authenti
3. Click **Get Started**, select **Custom SAML**, and click **Next**. 3. Click **Get Started**, select **Custom SAML**, and click **Next**.
4. Copy both the **Single Sign-On URL** and the **Service Provider Entity URL**. Youll need these values in the next section. 4. Copy both the **Single Sign-On URL** and the **Service Provider Entity URL**. Youll need these values in the next section.
5. Click **Next**. 5. Click **Next**.
6. Choose **Manual**, and enter the following as the **Single Sign-On Login URL**: `https://authentik.company/application/saml/<application-slug>/sso/binding/post/` 6. Choose **Manual**, and enter the following as the **Single Sign-On Login URL**: `https://authentik.company/application/saml/<application_slug>/sso/binding/post/`
7. Click **Upload signing certificate**, and upload the certificate downloaded from authentik. 7. Click **Upload signing certificate**, and upload the certificate downloaded from authentik.
8. _(Optional but recommended)_ Under **Advanced Settings**, enable **Sign request**. Then download the verification certificate. Youll need to import this into authentik. Refer to the [authentik certificate documentation](../../../docs/sys-mgmt/certificates#external-certificates) for guidance. 8. _(Optional but recommended)_ Under **Advanced Settings**, enable **Sign request**. Then download the verification certificate. Youll need to import this into authentik. Refer to the [authentik certificate documentation](../../../docs/sys-mgmt/certificates#external-certificates) for guidance.
9. Click **Next**. 9. Click **Next**.

View File

@ -54,11 +54,11 @@ To support the integration of Rustdesk Server Pro with authentik, you need to cr
- Set **Name** to `authentik` - Set **Name** to `authentik`
- Set **Client ID** to the Client ID copied from authentik. - Set **Client ID** to the Client ID copied from authentik.
- Set **Client secret** to the Client Secret copied from authentik. - Set **Client secret** to the Client Secret copied from authentik.
- Set **Issuer** to `https://authentik.company/application/o/slug/` - Set **Issuer** to `https://authentik.company/application/o/<application_slug>/`
- Set **Authorization Endpoint** to `https://authentik.company/application/o/authorize/` - Set **Authorization Endpoint** to `https://authentik.company/application/o/authorize/`
- Set **Token Endpoint** to `https://authentik.company/application/o/token/` - Set **Token Endpoint** to `https://authentik.company/application/o/token/`
- Set **Userinfo Endpoint** to `https://authentik.company/application/o/userinfo/` - Set **Userinfo Endpoint** to `https://authentik.company/application/o/userinfo/`
- Set **JWKS Endpoint** to `https://authentik.company/application/o/slug/jwks/` - Set **JWKS Endpoint** to `https://authentik.company/application/o/<application_slug>/jwks/`
:::info :::info
Users are created automatically on login. Permissions must be assigned by an administrator after user creation. Users are created automatically on login. Permissions must be assigned by an administrator after user creation.

View File

@ -53,7 +53,7 @@ Add the `oidc_providers` configuration:
"oidc_providers": { "oidc_providers": {
"authentik": { "authentik": {
"display_name": "Sign in with authentik", "display_name": "Sign in with authentik",
"provider_url": "https://authentik.company/application/o/<slug>/", "provider_url": "https://authentik.company/application/o/<application_slug>/",
"client_id": "<client-id>", "client_id": "<client-id>",
"client_secret": "<client-secret>", "client_secret": "<client-secret>",
"redirect_url": "https://semaphore.company/api/auth/oidc/authentik/redirect/", "redirect_url": "https://semaphore.company/api/auth/oidc/authentik/redirect/",

View File

@ -55,7 +55,7 @@ This documentation lists only the settings that you need to change from their de
5. Fill in the following: 5. Fill in the following:
- **Display name**: Anything you like. - **Display name**: Anything you like.
- **Email domain**: `company` - **Email domain**: `company`
- **IdP SSO URL**: `https://authentik.company/application/saml/<semgrep slug>/sso/binding/post/` - **IdP SSO URL**: `https://authentik.company/application/saml/<application_slug>/sso/binding/post/`
- **IdP Issuer ID**: `https://authentik.company` - **IdP Issuer ID**: `https://authentik.company`
- **Upload/paste certificate**: Downloaded from the previous step. - **Upload/paste certificate**: Downloaded from the previous step.

View File

@ -31,11 +31,11 @@ This documentation lists only the settings that you need to change from their de
While logged in to your Skyhigh Security Dashboard, click the configuration gear and navigate to `User Management` -> `SAML Configuration` -> `Skyhigh Cloud Users` tab While logged in to your Skyhigh Security Dashboard, click the configuration gear and navigate to `User Management` -> `SAML Configuration` -> `Skyhigh Cloud Users` tab
Under the `Identity Provider` section enter the following values (replace `<slug>` with the name of the application slug you will use): Under the `Identity Provider` section enter the following values:
- Issuer: `https://authentik.company/skyhigh-dashboard` - Issuer: `https://authentik.company/skyhigh-dashboard`
- Certificate: Upload the signing certificate you will use for the Authentik provider - Certificate: Upload the signing certificate you will use for the Authentik provider
- Login URL: `https://authentik.company/application/saml/<slug>/sso/binding/init/` - Login URL: `https://authentik.company/application/saml/<application_slug>/sso/binding/init/`
- SP-Initiated Request Binding: HTTP-POST - SP-Initiated Request Binding: HTTP-POST
- User exclusions: Select at least one administrator account to login directly (in case something goes wrong with SAML) - User exclusions: Select at least one administrator account to login directly (in case something goes wrong with SAML)
@ -78,11 +78,11 @@ While logged in to your Skyhigh Security Dashboard, click the configuration gear
Under the `Setup SAML` section click the `New SAML` button. Under the `Setup SAML` section click the `New SAML` button.
Configure your SAML provider as follows (replace `<slug>` with the name of your slug): Configure your SAML provider as follows:
- SAML Configuration Name: Enter a descriptive name here - SAML Configuration Name: Enter a descriptive name here
- Service Provider Entity ID: `https://login.auth.ui.trellix.com/sso/saml2` - Service Provider Entity ID: `https://login.auth.ui.trellix.com/sso/saml2`
- SAML Identity Provider URL: `https://authentik.company/application/saml/<slug>/sso/binding/post/` - SAML Identity Provider URL: `https://authentik.company/application/saml/<application_slug>/sso/binding/post/`
- Identity Provider Entity ID: `https://authentik.company/skyhigh-swg` - Identity Provider Entity ID: `https://authentik.company/skyhigh-swg`
- User ID Attribute in SAML Response: `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress` - User ID Attribute in SAML Response: `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
- Group ID Attribute in SAML Response: `http://schemas.xmlsoap.org/claims/Group` - Group ID Attribute in SAML Response: `http://schemas.xmlsoap.org/claims/Group`

View File

@ -46,7 +46,7 @@ Add the following environment variables to your tandoor configuration. Make sure
```sh ```sh
SOCIAL_PROVIDERS=allauth.socialaccount.providers.openid_connect SOCIAL_PROVIDERS=allauth.socialaccount.providers.openid_connect
SOCIALACCOUNT_PROVIDERS='{"openid_connect":{"APPS":[{"provider_id":"authentik","name":"authentik","client_id":"<Client ID from authentik>","secret":"<Client Secret from authentik>","settings":{"server_url":"https://authentik.company/application/o/<application slug>/.well-known/openid-configuration"}}]}}' SOCIALACCOUNT_PROVIDERS='{"openid_connect":{"APPS":[{"provider_id":"authentik","name":"authentik","client_id":"<Client ID from authentik>","secret":"<Client Secret from authentik>","settings":{"server_url":"https://authentik.company/application/o/<application_slug>/.well-known/openid-configuration"}}]}}'
``` ```
Restart the Tandoor service for the changes to take effect. Restart the Tandoor service for the changes to take effect.

View File

@ -56,7 +56,7 @@ This guide assumes that you have environment variables `$TERRAKUBE_OIDC_CLIENT_I
id: TerrakubeClient id: TerrakubeClient
name: TerrakubeClient name: TerrakubeClient
config: config:
issuer: "https://authentik.company/application/o/<Your application slug>/" issuer: "https://authentik.company/application/o/<application_slug>/"
clientID: $TERRAKUBE_OIDC_CLIENT_ID clientID: $TERRAKUBE_OIDC_CLIENT_ID
clientSecret: $TERRAKUBE_OIDC_CLIENT_SECRET clientSecret: $TERRAKUBE_OIDC_CLIENT_SECRET
redirectURI: "https://terrakube-dex.company/dex/callback" redirectURI: "https://terrakube-dex.company/dex/callback"

View File

@ -51,7 +51,7 @@ To support the integration of Landscape with authentik, you need to create an ap
On the Landscape Server, edit the file `/etc/landscape/service.conf` and add the following snippet under the `[landscape]` section: On the Landscape Server, edit the file `/etc/landscape/service.conf` and add the following snippet under the `[landscape]` section:
``` ```
oidc-issuer = https://authentik.company/application/o/<slug of the application you've created>/ oidc-issuer = https://authentik.company/application/o/<application_slug>/
oidc-client-id = <client ID of the provider you've created> oidc-client-id = <client ID of the provider you've created>
oidc-client-secret = <client Secret of the provider you've created> oidc-client-secret = <client Secret of the provider you've created>
``` ```

View File

@ -73,7 +73,7 @@ To support the integration of Weblate with authentik, you need to create an appl
- **Configure the Provider**: provide a name (or accept the auto-provided name), the authorization flow to use for this provider, and the following required configurations. - **Configure the Provider**: provide a name (or accept the auto-provided name), the authorization flow to use for this provider, and the following required configurations.
- Set the **ACS URL** to `https://weblate.company/accounts/complete/saml/`. - Set the **ACS URL** to `https://weblate.company/accounts/complete/saml/`.
- Set the **Audience** to `https://weblate.company/accounts/metadata/saml/`. - Set the **Audience** to `https://weblate.company/accounts/metadata/saml/`.
- Set the **Issuer** to `https://authentik.company/application/saml/application-slug/sso/binding/redirect/`. - Set the **Issuer** to `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`.
- Set the **Service Provider Binding** to `Post`. - Set the **Service Provider Binding** to `Post`.
- Under **Advanced protocol settings**, select an available signing certificate. Then, under **Property mappings**, add the ones you just created. - Under **Advanced protocol settings**, select an available signing certificate. Then, under **Property mappings**, add the ones you just created.
- **Configure Bindings** _(optional)_: you can create a [binding](/docs/add-secure-apps/flows-stages/bindings/) (policy, group, or user) to manage the listing and access to applications on a user's **My applications** page. - **Configure Bindings** _(optional)_: you can create a [binding](/docs/add-secure-apps/flows-stages/bindings/) (policy, group, or user) to manage the listing and access to applications on a user's **My applications** page.
@ -90,8 +90,8 @@ The variables below need to be set, depending on if you deploy in a container or
Variables to set Variables to set
- ENABLE_HTTPS: `1` - ENABLE_HTTPS: `1`
- SAML_IDP_ENTITY_ID: `https://authentik.company/application/saml/weblate-slug/sso/binding/redirect/` - SAML_IDP_ENTITY_ID: `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
- SAML_IDP_URL: `https://authentik.company/application/saml/weblate-slug/sso/binding/redirect/` - SAML_IDP_URL: `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
- SAML_IDP_X509CERT: `MIIFDjCCAvagAwIBAgIRAJV8hH0wGkhGvbhhDKppWIYwDQYJKoZIhvcNAQELBQAw....F9lT9hHwHhsnA=` - SAML_IDP_X509CERT: `MIIFDjCCAvagAwIBAgIRAJV8hH0wGkhGvbhhDKppWIYwDQYJKoZIhvcNAQELBQAw....F9lT9hHwHhsnA=`
The `SAML_IDP_X509CERT` is the certificate in the SAML Metadata `X509Certificate` key. The `SAML_IDP_X509CERT` is the certificate in the SAML Metadata `X509Certificate` key.

View File

@ -54,7 +54,7 @@ To support the integration of YouTrack with authentik, you need to create an app
2. Click **New module**, then select **SAML 2.0**. 2. Click **New module**, then select **SAML 2.0**.
3. Fill out the form with the following information: 3. Fill out the form with the following information:
- **Name**: Set an appropriate name (e.g. `authentik`) - **Name**: Set an appropriate name (e.g. `authentik`)
- **SAML SSO URL**: `https://authentik.company/application/saml/<application slug>/sso/binding/redirect/` - **SAML SSO URL**: `https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/`
- **IdP entity ID**: `https://youtrack.company/admin/hub/` - **IdP entity ID**: `https://youtrack.company/admin/hub/`
- **Certificate fingerprint**: Set to the SHA-256 fingerprint retrieved in the previous step. - **Certificate fingerprint**: Set to the SHA-256 fingerprint retrieved in the previous step.
4. Click **Create** to submit the form and take note of the **ACS URL**. 4. Click **Create** to submit the form and take note of the **ACS URL**.

View File

@ -65,7 +65,7 @@ SOCIAL_AUTH_SAML_ENABLED_IDPS: Dict[str, Any] = {
# KEEP OTHER SETTINGS AS DEFAULT OR CONFIGURE THEM ACCORDING TO YOUR PREFERENCES # KEEP OTHER SETTINGS AS DEFAULT OR CONFIGURE THEM ACCORDING TO YOUR PREFERENCES
"entity_id": "https://authentik.company", "entity_id": "https://authentik.company",
"url": "https://authentik.company/application/saml/<application slug>/sso/binding/redirect/", "url": "https://authentik.company/application/saml/<application_slug>/sso/binding/redirect/",
"display_name": "authentik SAML", "display_name": "authentik SAML",
}, },
} }

View File

@ -19,6 +19,7 @@
"@goauthentik/docusaurus-config": "^1.1.0", "@goauthentik/docusaurus-config": "^1.1.0",
"@goauthentik/tsconfig": "^1.0.4", "@goauthentik/tsconfig": "^1.0.4",
"@mdx-js/react": "^3.1.0", "@mdx-js/react": "^3.1.0",
"@swc/html-linux-x64-gnu": "1.12.0",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"docusaurus-plugin-openapi-docs": "^4.4.0", "docusaurus-plugin-openapi-docs": "^4.4.0",
"docusaurus-theme-openapi-docs": "^4.4.0", "docusaurus-theme-openapi-docs": "^4.4.0",
@ -41,12 +42,12 @@
"@goauthentik/tsconfig": "^1.0.4", "@goauthentik/tsconfig": "^1.0.4",
"@trivago/prettier-plugin-sort-imports": "^5.2.2", "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"@types/lodash": "^4.17.17", "@types/lodash": "^4.17.17",
"@types/node": "^22.15.30", "@types/node": "^24.0.0",
"@types/postman-collection": "^3.5.11", "@types/postman-collection": "^3.5.11",
"@types/react": "^18.3.22", "@types/react": "^18.3.22",
"@types/semver": "^7.7.0", "@types/semver": "^7.7.0",
"@typescript-eslint/eslint-plugin": "^8.33.1", "@typescript-eslint/eslint-plugin": "^8.34.0",
"@typescript-eslint/parser": "^8.33.1", "@typescript-eslint/parser": "^8.34.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^9.28.0", "eslint": "^9.28.0",
"fast-glob": "^3.3.3", "fast-glob": "^3.3.3",
@ -54,7 +55,7 @@
"prettier": "^3.5.3", "prettier": "^3.5.3",
"prettier-plugin-packagejson": "^2.5.15", "prettier-plugin-packagejson": "^2.5.15",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"typescript-eslint": "^8.33.1" "typescript-eslint": "^8.34.0"
}, },
"engines": { "engines": {
"node": ">=22.14.0" "node": ">=22.14.0"
@ -63,12 +64,12 @@
"@rspack/binding-darwin-arm64": "1.3.15", "@rspack/binding-darwin-arm64": "1.3.15",
"@rspack/binding-linux-arm64-gnu": "1.3.15", "@rspack/binding-linux-arm64-gnu": "1.3.15",
"@rspack/binding-linux-x64-gnu": "1.3.15", "@rspack/binding-linux-x64-gnu": "1.3.15",
"@swc/core-darwin-arm64": "1.11.31", "@swc/core-darwin-arm64": "1.12.0",
"@swc/core-linux-arm64-gnu": "1.11.31", "@swc/core-linux-arm64-gnu": "1.12.0",
"@swc/core-linux-x64-gnu": "1.11.31", "@swc/core-linux-x64-gnu": "1.12.0",
"@swc/html-darwin-arm64": "1.11.31", "@swc/html-darwin-arm64": "1.12.0",
"@swc/html-linux-arm64-gnu": "1.11.31", "@swc/html-linux-arm64-gnu": "1.12.0",
"@swc/html-linux-x64-gnu": "1.11.31", "@swc/html-linux-x64-gnu": "1.12.0",
"lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-arm64": "1.30.1",
"lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1",
"lightningcss-linux-x64-gnu": "1.30.1" "lightningcss-linux-x64-gnu": "1.30.1"
@ -5591,9 +5592,9 @@
} }
}, },
"node_modules/@swc/core-darwin-arm64": { "node_modules/@swc/core-darwin-arm64": {
"version": "1.11.31", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.31.tgz", "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.12.0.tgz",
"integrity": "sha512-NTEaYOts0OGSbJZc0O74xsji+64JrF1stmBii6D5EevWEtrY4wlZhm8SiP/qPrOB+HqtAihxWIukWkP2aSdGSQ==", "integrity": "sha512-usLr8kC80GDv3pwH2zoEaS279kxtWY0MY3blbMFw7zA8fAjqxa8IDxm3WcgyNLNWckWn4asFfguEwz/Weem3nA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -5639,9 +5640,9 @@
} }
}, },
"node_modules/@swc/core-linux-arm64-gnu": { "node_modules/@swc/core-linux-arm64-gnu": {
"version": "1.11.31", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.31.tgz", "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.12.0.tgz",
"integrity": "sha512-T+vGw9aPE1YVyRxRr1n7NAdkbgzBzrXCCJ95xAZc/0+WUwmL77Z+js0J5v1KKTRxw4FvrslNCOXzMWrSLdwPSA==", "integrity": "sha512-Al0x33gUVxNY5tutEYpSyv7mze6qQS1ONa0HEwoRxcK9WXsX0NHLTiOSGZoCUS1SsXM37ONlbA6/Bsp1MQyP+g==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -5671,9 +5672,9 @@
} }
}, },
"node_modules/@swc/core-linux-x64-gnu": { "node_modules/@swc/core-linux-x64-gnu": {
"version": "1.11.31", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.31.tgz", "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.12.0.tgz",
"integrity": "sha512-DDVE0LZcXOWwOqFU1Xi7gdtiUg3FHA0vbGb3trjWCuI1ZtDZHEQYL4M3/2FjqKZtIwASrDvO96w91okZbXhvMg==", "integrity": "sha512-ltIvqNi7H0c5pRawyqjeYSKEIfZP4vv/datT3mwT6BW7muJtd1+KIDCPFLMIQ4wm/h76YQwPocsin3fzmnFdNA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -5829,9 +5830,9 @@
} }
}, },
"node_modules/@swc/html-darwin-arm64": { "node_modules/@swc/html-darwin-arm64": {
"version": "1.11.31", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.11.31.tgz", "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.12.0.tgz",
"integrity": "sha512-/BZ7KLfkua568iNNnLAlxa88P7gBiouZ+aW7LFcqfv62ueCpjLY7YSUXcVcb8bAoGwDcB+fO2xMYz5ABHcaFZg==", "integrity": "sha512-okpx8G7xGSPiSekxS4FQu3aR8k+q8nZJCfVKzanQxdZUaCm7YDVUci2Unqp9TvpgZJRA0GOWs1U3QMu2vdr0sQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -5877,9 +5878,9 @@
} }
}, },
"node_modules/@swc/html-linux-arm64-gnu": { "node_modules/@swc/html-linux-arm64-gnu": {
"version": "1.11.31", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.11.31.tgz", "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.12.0.tgz",
"integrity": "sha512-3rbfgMDGeLx52iFOCGaeeK8IEj1fT7gsvTWfXACJ4ns7MPupz6v3dVoGCIuzh0yHGAZPY0QL1iVAYjPLg8TrWw==", "integrity": "sha512-ImZLbghifCPqQhwbEprv2zojieD0j/RGJ+tkNpJ6DyGqcf5qVFfPgGDe/WDPEHCMbJlAodvp1iKTdLSAdTfaLg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@ -5909,9 +5910,9 @@
} }
}, },
"node_modules/@swc/html-linux-x64-gnu": { "node_modules/@swc/html-linux-x64-gnu": {
"version": "1.11.31", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.11.31.tgz", "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.12.0.tgz",
"integrity": "sha512-6w9yZ1W23y17Y8NLTqy+efaAHjnqumSdn8PdCmBvMxwFRwjo9dNkkcDJsTZ5EERBMH+DnDbVR+HkuNypd0Y7Gw==", "integrity": "sha512-IVFXgsyn0/8e9nfVrQXAdGDFboom0nls7KSOJ/+oXMmdK917wrnYLDt7M4DyRT2c+xJmMxgR6tyaTW8KLAl02w==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@ -6614,12 +6615,12 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "22.15.30", "version": "24.0.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.0.tgz",
"integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", "integrity": "sha512-yZQa2zm87aRVcqDyH5+4Hv9KYgSdgwX1rFnGvpbzMaC7YAljmhBET93TPiTd3ObwTL+gSpIzPKg5BqVxdCvxKg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~6.21.0" "undici-types": "~7.8.0"
} }
}, },
"node_modules/@types/node-forge": { "node_modules/@types/node-forge": {
@ -6830,17 +6831,17 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@typescript-eslint/eslint-plugin": { "node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz",
"integrity": "sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==", "integrity": "sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/regexpp": "^4.10.0", "@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.33.1", "@typescript-eslint/scope-manager": "8.34.0",
"@typescript-eslint/type-utils": "8.33.1", "@typescript-eslint/type-utils": "8.34.0",
"@typescript-eslint/utils": "8.33.1", "@typescript-eslint/utils": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1", "@typescript-eslint/visitor-keys": "8.34.0",
"graphemer": "^1.4.0", "graphemer": "^1.4.0",
"ignore": "^7.0.0", "ignore": "^7.0.0",
"natural-compare": "^1.4.0", "natural-compare": "^1.4.0",
@ -6854,7 +6855,7 @@
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
}, },
"peerDependencies": { "peerDependencies": {
"@typescript-eslint/parser": "^8.33.1", "@typescript-eslint/parser": "^8.34.0",
"eslint": "^8.57.0 || ^9.0.0", "eslint": "^8.57.0 || ^9.0.0",
"typescript": ">=4.8.4 <5.9.0" "typescript": ">=4.8.4 <5.9.0"
} }
@ -6870,16 +6871,16 @@
} }
}, },
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.0.tgz",
"integrity": "sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==", "integrity": "sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "8.33.1", "@typescript-eslint/scope-manager": "8.34.0",
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/typescript-estree": "8.33.1", "@typescript-eslint/typescript-estree": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1", "@typescript-eslint/visitor-keys": "8.34.0",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@ -6895,14 +6896,14 @@
} }
}, },
"node_modules/@typescript-eslint/project-service": { "node_modules/@typescript-eslint/project-service": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.0.tgz",
"integrity": "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==", "integrity": "sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/tsconfig-utils": "^8.33.1", "@typescript-eslint/tsconfig-utils": "^8.34.0",
"@typescript-eslint/types": "^8.33.1", "@typescript-eslint/types": "^8.34.0",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@ -6917,14 +6918,14 @@
} }
}, },
"node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/scope-manager": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.0.tgz",
"integrity": "sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==", "integrity": "sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1" "@typescript-eslint/visitor-keys": "8.34.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -6935,9 +6936,9 @@
} }
}, },
"node_modules/@typescript-eslint/tsconfig-utils": { "node_modules/@typescript-eslint/tsconfig-utils": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz",
"integrity": "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==", "integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -6952,14 +6953,14 @@
} }
}, },
"node_modules/@typescript-eslint/type-utils": { "node_modules/@typescript-eslint/type-utils": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.0.tgz",
"integrity": "sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==", "integrity": "sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/typescript-estree": "8.33.1", "@typescript-eslint/typescript-estree": "8.34.0",
"@typescript-eslint/utils": "8.33.1", "@typescript-eslint/utils": "8.34.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"ts-api-utils": "^2.1.0" "ts-api-utils": "^2.1.0"
}, },
@ -6976,9 +6977,9 @@
} }
}, },
"node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/types": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.0.tgz",
"integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==", "integrity": "sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@ -6990,16 +6991,16 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/typescript-estree": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz",
"integrity": "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==", "integrity": "sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/project-service": "8.33.1", "@typescript-eslint/project-service": "8.34.0",
"@typescript-eslint/tsconfig-utils": "8.33.1", "@typescript-eslint/tsconfig-utils": "8.34.0",
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/visitor-keys": "8.33.1", "@typescript-eslint/visitor-keys": "8.34.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"fast-glob": "^3.3.2", "fast-glob": "^3.3.2",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
@ -7045,16 +7046,16 @@
} }
}, },
"node_modules/@typescript-eslint/utils": { "node_modules/@typescript-eslint/utils": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.0.tgz",
"integrity": "sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==", "integrity": "sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.7.0", "@eslint-community/eslint-utils": "^4.7.0",
"@typescript-eslint/scope-manager": "8.33.1", "@typescript-eslint/scope-manager": "8.34.0",
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"@typescript-eslint/typescript-estree": "8.33.1" "@typescript-eslint/typescript-estree": "8.34.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -7069,13 +7070,13 @@
} }
}, },
"node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/visitor-keys": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz",
"integrity": "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==", "integrity": "sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/types": "8.33.1", "@typescript-eslint/types": "8.34.0",
"eslint-visitor-keys": "^4.2.0" "eslint-visitor-keys": "^4.2.0"
}, },
"engines": { "engines": {
@ -7087,9 +7088,9 @@
} }
}, },
"node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
"version": "4.2.0", "version": "4.2.1",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
"integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"engines": { "engines": {
@ -26386,15 +26387,15 @@
} }
}, },
"node_modules/typescript-eslint": { "node_modules/typescript-eslint": {
"version": "8.33.1", "version": "8.34.0",
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.1.tgz", "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.0.tgz",
"integrity": "sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==", "integrity": "sha512-MRpfN7uYjTrTGigFCt8sRyNqJFhjN0WwZecldaqhWm+wy0gaRt8Edb/3cuUy0zdq2opJWT6iXINKAtewnDOltQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@typescript-eslint/eslint-plugin": "8.33.1", "@typescript-eslint/eslint-plugin": "8.34.0",
"@typescript-eslint/parser": "8.33.1", "@typescript-eslint/parser": "8.34.0",
"@typescript-eslint/utils": "8.33.1" "@typescript-eslint/utils": "8.34.0"
}, },
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -26434,9 +26435,9 @@
} }
}, },
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "6.21.0", "version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/unicode-canonical-property-names-ecmascript": { "node_modules/unicode-canonical-property-names-ecmascript": {

View File

@ -56,12 +56,12 @@
"@goauthentik/tsconfig": "^1.0.4", "@goauthentik/tsconfig": "^1.0.4",
"@trivago/prettier-plugin-sort-imports": "^5.2.2", "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"@types/lodash": "^4.17.17", "@types/lodash": "^4.17.17",
"@types/node": "^22.15.30", "@types/node": "^24.0.0",
"@types/postman-collection": "^3.5.11", "@types/postman-collection": "^3.5.11",
"@types/react": "^18.3.22", "@types/react": "^18.3.22",
"@types/semver": "^7.7.0", "@types/semver": "^7.7.0",
"@typescript-eslint/eslint-plugin": "^8.33.1", "@typescript-eslint/eslint-plugin": "^8.34.0",
"@typescript-eslint/parser": "^8.33.1", "@typescript-eslint/parser": "^8.34.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^9.28.0", "eslint": "^9.28.0",
"fast-glob": "^3.3.3", "fast-glob": "^3.3.3",
@ -69,18 +69,18 @@
"prettier": "^3.5.3", "prettier": "^3.5.3",
"prettier-plugin-packagejson": "^2.5.15", "prettier-plugin-packagejson": "^2.5.15",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"typescript-eslint": "^8.33.1" "typescript-eslint": "^8.34.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@rspack/binding-darwin-arm64": "1.3.15", "@rspack/binding-darwin-arm64": "1.3.15",
"@rspack/binding-linux-arm64-gnu": "1.3.15", "@rspack/binding-linux-arm64-gnu": "1.3.15",
"@rspack/binding-linux-x64-gnu": "1.3.15", "@rspack/binding-linux-x64-gnu": "1.3.15",
"@swc/core-darwin-arm64": "1.11.31", "@swc/core-darwin-arm64": "1.12.0",
"@swc/core-linux-arm64-gnu": "1.11.31", "@swc/core-linux-arm64-gnu": "1.12.0",
"@swc/core-linux-x64-gnu": "1.11.31", "@swc/core-linux-x64-gnu": "1.12.0",
"@swc/html-darwin-arm64": "1.11.31", "@swc/html-darwin-arm64": "1.12.0",
"@swc/html-linux-arm64-gnu": "1.11.31", "@swc/html-linux-arm64-gnu": "1.12.0",
"@swc/html-linux-x64-gnu": "1.11.31", "@swc/html-linux-x64-gnu": "1.12.0",
"lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-arm64": "1.30.1",
"lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1",
"lightningcss-linux-x64-gnu": "1.30.1" "lightningcss-linux-x64-gnu": "1.30.1"

View File

@ -8,17 +8,10 @@
* @type {SidebarItemConfig[]} * @type {SidebarItemConfig[]}
*/ */
const items = [ const items = [
{
type: "category",
label: "Device Management",
items: ["services/apple/index", "services/fleet/index"],
},
{ {
type: "category", type: "category",
label: "Chat, Communication & Collaboration", label: "Chat, Communication & Collaboration",
items: [ items: [
"services/bookstack/index",
"services/dokuwiki/index",
"services/espocrm/index", "services/espocrm/index",
"services/hedgedoc/index", "services/hedgedoc/index",
"services/kimai/index", "services/kimai/index",
@ -30,10 +23,7 @@ const items = [
"services/nextcloud/index", "services/nextcloud/index",
"services/onlyoffice/index", "services/onlyoffice/index",
"services/openproject/index", "services/openproject/index",
"services/outline/index",
"services/owncloud/index", "services/owncloud/index",
"services/paperless-ng/index",
"services/paperless-ngx/index",
"services/rocketchat/index", "services/rocketchat/index",
"services/roundcube/index", "services/roundcube/index",
"services/sharepoint-se/index", "services/sharepoint-se/index",
@ -41,11 +31,15 @@ const items = [
"services/thelounge/index", "services/thelounge/index",
"services/vikunja/index", "services/vikunja/index",
"services/wekan/index", "services/wekan/index",
"services/wiki-js/index",
"services/writefreely/index", "services/writefreely/index",
"services/zulip/index", "services/zulip/index",
], ],
}, },
{
type: "category",
label: "Device Management",
items: ["services/apple/index", "services/fleet/index", "services/meshcentral/index"],
},
{ {
type: "category", type: "category",
label: "Cloud Providers", label: "Cloud Providers",
@ -61,6 +55,44 @@ const items = [
label: "Dashboards", label: "Dashboards",
items: ["services/organizr/index", "services/linkwarden/index", "services/homarr/index"], items: ["services/organizr/index", "services/linkwarden/index", "services/homarr/index"],
}, },
{
type: "category",
label: "Development",
items: [
"services/coder/index",
"services/engomo/index",
"services/frappe/index",
"services/gitea/index",
"services/github-enterprise-cloud/index",
"services/github-enterprise-emu/index",
"services/github-enterprise-server/index",
"services/github-organization/index",
"services/gitlab/index",
"services/gravitee/index",
"services/jenkins/index",
"services/node-red/index",
"services/sonar-qube/index",
"services/weblate/index",
],
},
{
type: "category",
label: "Documentation",
items: [
"services/bookstack/index",
"services/dokuwiki/index",
"services/karakeep/index",
"services/mealie/index",
"services/netbox/index",
"services/outline/index",
"services/paperless-ng/index",
"services/paperless-ngx/index",
"services/snipe-it/index",
"services/tandoor/index",
"services/wiki-js/index",
"services/youtrack/index",
],
},
{ {
type: "category", type: "category",
label: "Hypervisors / Orchestrators", label: "Hypervisors / Orchestrators",
@ -79,35 +111,23 @@ const items = [
"services/apache-guacamole/index", "services/apache-guacamole/index",
"services/argocd/index", "services/argocd/index",
"services/awx-tower/index", "services/awx-tower/index",
"services/cloudflare-access/index",
"services/coder/index",
"services/globalprotect/index",
"services/harbor/index", "services/harbor/index",
"services/hashicorp-vault/index",
"services/jenkins/index",
"services/knocknoc/index",
"services/komodo/index", "services/komodo/index",
"services/meshcentral/index",
"services/minio/index", "services/minio/index",
"services/netbox/index",
"services/omni/index", "services/omni/index",
"services/pgadmin/index", "services/pgadmin/index",
"services/phpipam/index", "services/phpipam/index",
"services/plesk/index", "services/plesk/index",
"services/powerdns-admin/index", "services/powerdns-admin/index",
"services/proftpd/index", "services/proftpd/index",
"services/push-security/index",
"services/qnap-nas/index", "services/qnap-nas/index",
"services/rustdesk-pro/index", "services/rustdesk-pro/index",
"services/semgrep/index", "services/semaphore/index",
"services/synology-dsm/index", "services/synology-dsm/index",
"services/skyhigh/index",
"services/snipe-it/index",
"services/sssd/index", "services/sssd/index",
"services/terrakube/index", "services/terrakube/index",
"services/truecommand/index", "services/truecommand/index",
"services/veeam-enterprise-manager/index", "services/veeam-enterprise-manager/index",
"services/xcreds/index",
"services/zammad/index", "services/zammad/index",
], ],
}, },
@ -116,11 +136,13 @@ const items = [
label: "Networking", label: "Networking",
items: [ items: [
"services/aruba-orchestrator/index", "services/aruba-orchestrator/index",
"services/cloudflare-access/index",
"services/firezone/index", "services/firezone/index",
"services/fortigate-admin/index", "services/fortigate-admin/index",
"services/fortigate-ssl/index", "services/fortigate-ssl/index",
"services/fortimanager/index", "services/fortimanager/index",
"services/gravity/index", "services/gravity/index",
"services/globalprotect/index",
"services/netbird/index", "services/netbird/index",
"services/opnsense/index", "services/opnsense/index",
"services/pangolin/index", "services/pangolin/index",
@ -130,33 +152,27 @@ const items = [
}, },
{ {
type: "category", type: "category",
label: "Miscellaneous", label: "Media",
items: [ items: [
"services/1password/index",
"services/actual-budget/index",
"services/adventurelog/index",
"services/calibre-web/index", "services/calibre-web/index",
"services/engomo/index",
"services/filerise/index",
"services/frappe/index",
"services/freshrss/index",
"services/gravitee/index",
"services/karakeep/index",
"services/home-assistant/index",
"services/immich/index", "services/immich/index",
"services/freshrss/index",
"services/jellyfin/index", "services/jellyfin/index",
"services/komga/index", "services/komga/index",
"services/mealie/index",
"services/miniflux/index", "services/miniflux/index",
"services/node-red/index",
"services/open-webui/index",
"services/semaphore/index",
"services/sonar-qube/index",
"services/sonarr/index", "services/sonarr/index",
"services/tandoor/index",
"services/tautulli/index", "services/tautulli/index",
"services/weblate/index", ],
"services/youtrack/index", },
{
type: "category",
label: "Miscellaneous",
items: [
"services/actual-budget/index",
"services/adventurelog/index",
"services/filerise/index",
"services/home-assistant/index",
"services/open-webui/index",
"services/zipline/index", "services/zipline/index",
], ],
}, },
@ -192,14 +208,16 @@ const items = [
}, },
{ {
type: "category", type: "category",
label: "Version Control Systems", label: "Security",
items: [ items: [
"services/gitea/index", "services/1password/index",
"services/github-organization/index", "services/bitwarden/index",
"services/github-enterprise-cloud/index", "services/hashicorp-vault/index",
"services/github-enterprise-emu/index", "services/knocknoc/index",
"services/github-enterprise-server/index", "services/push-security/index",
"services/gitlab/index", "services/semgrep/index",
"services/skyhigh/index",
"services/xcreds/index",
], ],
}, },
]; ];
@ -221,7 +239,7 @@ const integrationsSidebar = {
type: "doc", type: "doc",
id: "services/index", id: "services/index",
}, },
items, items: items.sort((a, b) => a.label.localeCompare(b.label)),
}, },
], ],
}; };