Merge branch 'master' into outpost-ldap
This commit is contained in:
commit
b55cb2b40c
|
@ -10,21 +10,25 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
- name: Docker Login Registry
|
- name: Docker Login Registry
|
||||||
env:
|
uses: docker/login-action@v1
|
||||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
with:
|
||||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
username: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
run: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
|
password: ${{ secrets.DOCKER_USERNAME }}
|
||||||
- name: Building Docker Image
|
- name: Building Docker Image
|
||||||
run: docker build
|
uses: docker/build-push-action@v2
|
||||||
--no-cache
|
with:
|
||||||
-t beryju/authentik:2021.4.4
|
push: true
|
||||||
-t beryju/authentik:latest
|
tags: |
|
||||||
-f Dockerfile .
|
beryju/authentik-proxy:2021.4.4,
|
||||||
- name: Push Docker Container to Registry (versioned)
|
beryju/authentik-proxy:latest,
|
||||||
run: docker push beryju/authentik:2021.4.4
|
ghcr.io/goauthentik/authentik:2021.4.4,
|
||||||
- name: Push Docker Container to Registry (latest)
|
ghcr.io/goauthentik/authentik:latest
|
||||||
run: docker push beryju/authentik:latest
|
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v8
|
||||||
build-proxy:
|
build-proxy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
@ -38,23 +42,27 @@ jobs:
|
||||||
go get -u github.com/go-swagger/go-swagger/cmd/swagger
|
go get -u github.com/go-swagger/go-swagger/cmd/swagger
|
||||||
swagger generate client -f ../swagger.yaml -A authentik -t pkg/
|
swagger generate client -f ../swagger.yaml -A authentik -t pkg/
|
||||||
go build -v .
|
go build -v .
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
- name: Docker Login Registry
|
- name: Docker Login Registry
|
||||||
env:
|
uses: docker/login-action@v1
|
||||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
with:
|
||||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
username: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
run: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
|
password: ${{ secrets.DOCKER_USERNAME }}
|
||||||
- name: Building Docker Image
|
- name: Building Docker Image
|
||||||
run: |
|
uses: docker/build-push-action@v2
|
||||||
cd outpost/
|
with:
|
||||||
docker build \
|
push: true
|
||||||
--no-cache \
|
tags: |
|
||||||
-t beryju/authentik-proxy:2021.4.4 \
|
beryju/authentik-proxy:2021.4.4,
|
||||||
-t beryju/authentik-proxy:latest \
|
beryju/authentik-proxy:latest,
|
||||||
-f proxy.Dockerfile .
|
ghcr.io/goauthentik/proxy:2021.4.4,
|
||||||
- name: Push Docker Container to Registry (versioned)
|
ghcr.io/goauthentik/proxy:latest
|
||||||
run: docker push beryju/authentik-proxy:2021.4.4
|
context: proxy/
|
||||||
- name: Push Docker Container to Registry (latest)
|
file: proxy/proxy.Dockerfile
|
||||||
run: docker push beryju/authentik-proxy:latest
|
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v8
|
||||||
build-static:
|
build-static:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
@ -62,23 +70,26 @@ jobs:
|
||||||
- name: prepare ts api client
|
- name: prepare ts api client
|
||||||
run: |
|
run: |
|
||||||
docker run --rm -v $(pwd):/local openapitools/openapi-generator-cli generate -i /local/swagger.yaml -g typescript-fetch -o /local/web/api --additional-properties=typescriptThreePlus=true,supportsES6=true,npmName=authentik-api,npmVersion=1.0.0
|
docker run --rm -v $(pwd):/local openapitools/openapi-generator-cli generate -i /local/swagger.yaml -g typescript-fetch -o /local/web/api --additional-properties=typescriptThreePlus=true,supportsES6=true,npmName=authentik-api,npmVersion=1.0.0
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
- name: Docker Login Registry
|
- name: Docker Login Registry
|
||||||
env:
|
uses: docker/login-action@v1
|
||||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
with:
|
||||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
username: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
run: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
|
password: ${{ secrets.DOCKER_USERNAME }}
|
||||||
- name: Building Docker Image
|
- name: Building Docker Image
|
||||||
run: |
|
uses: docker/build-push-action@v2
|
||||||
cd web/
|
with:
|
||||||
docker build \
|
push: true
|
||||||
--no-cache \
|
tags: |
|
||||||
-t beryju/authentik-static:2021.4.4 \
|
beryju/authentik-static:2021.4.4,
|
||||||
-t beryju/authentik-static:latest \
|
beryju/authentik-static:latest,
|
||||||
-f Dockerfile .
|
ghcr.io/goauthentik/static:2021.4.4,
|
||||||
- name: Push Docker Container to Registry (versioned)
|
ghcr.io/goauthentik/static:latest
|
||||||
run: docker push beryju/authentik-static:2021.4.4
|
context: web/
|
||||||
- name: Push Docker Container to Registry (latest)
|
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v8
|
||||||
run: docker push beryju/authentik-static:latest
|
|
||||||
test-release:
|
test-release:
|
||||||
needs:
|
needs:
|
||||||
- build-server
|
- build-server
|
||||||
|
@ -103,7 +114,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
- name: Create a Sentry.io release
|
- name: Create a Sentry.io release
|
||||||
uses: tclindner/sentry-releases-action@v1.2.0
|
uses: getsentry/action-release@v1
|
||||||
env:
|
env:
|
||||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||||
SENTRY_ORG: beryjuorg
|
SENTRY_ORG: beryjuorg
|
||||||
|
|
|
@ -202,3 +202,5 @@ selenium_screenshots/
|
||||||
backups/
|
backups/
|
||||||
media/
|
media/
|
||||||
*mmdb
|
*mmdb
|
||||||
|
|
||||||
|
.idea/
|
||||||
|
|
|
@ -116,25 +116,24 @@
|
||||||
},
|
},
|
||||||
"boto3": {
|
"boto3": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:4caf01511a07e229855b964d43ddbc6b3db1fd88a3747a4a7ca6d398ce04f3d3",
|
"sha256:edd2f14f64e0afd2373cd9b2c839004c751afedc593ea3baca3ab36f7206644d"
|
||||||
"sha256:fcd1a0318919bddf4efd0a8858214ed07d08a870d79d20f9b2d6df5d3092b8d8"
|
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==1.17.58"
|
"version": "==1.17.60"
|
||||||
},
|
},
|
||||||
"botocore": {
|
"botocore": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0de54af6af58d59237377f1bbe43edc4395d88848cddbe00f546703d4026c638",
|
"sha256:bb63a112ef415638328e4535b75dbc32ebd88f06b7937ce1d297aa5b5527335a",
|
||||||
"sha256:2830596e0d92d82abaf78a7926e49a3b7a80c93cdc75e95717a1dd4ea9027283"
|
"sha256:e19947a8978e99467e7b1843308d1adc8febaa4e221021d4befdaec83d993ee7"
|
||||||
],
|
],
|
||||||
"version": "==1.20.58"
|
"version": "==1.20.60"
|
||||||
},
|
},
|
||||||
"cachetools": {
|
"cachetools": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1d9d5f567be80f7c07d765e21b814326d78c61eb0c3a637dffc0e5d1796cb2e2",
|
"sha256:2cc0b89715337ab6dbba85b5b50effe2b0c74e035d83ee8ed637cf52f12ae001",
|
||||||
"sha256:f469e29e7aa4cff64d8de4aad95ce76de8ea1125a16c68e0d93f65c3c3dc92e9"
|
"sha256:61b5ed1e22a0924aed1d23b478f37e8d52549ff8a961de2909c69bf950020cff"
|
||||||
],
|
],
|
||||||
"version": "==4.2.1"
|
"version": "==4.2.2"
|
||||||
},
|
},
|
||||||
"cbor2": {
|
"cbor2": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -351,11 +350,11 @@
|
||||||
},
|
},
|
||||||
"django-otp": {
|
"django-otp": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:381a15e65293b8b06d47b7d6b306e0b7af2e104137ac92f6c566d3b9b90b6244",
|
"sha256:04852c5301befb02d1d8ba4a31d375eb08d7c2cb6fe86b5f840867435ab1309c",
|
||||||
"sha256:f4ab096b424c33ffe69453620356e1b7517f30dfb9ba13bfeaa1d1f20faddc13"
|
"sha256:3916fc7652c2f934b1cf3807dd8ed257ce7605c10dfefa27fadda5628d9a9c9e"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==1.0.3"
|
"version": "==1.0.4"
|
||||||
},
|
},
|
||||||
"django-prometheus": {
|
"django-prometheus": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -444,6 +443,7 @@
|
||||||
},
|
},
|
||||||
"gunicorn": {
|
"gunicorn": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
"sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e",
|
||||||
"sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"
|
"sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
|
@ -917,11 +917,11 @@
|
||||||
},
|
},
|
||||||
"pyjwt": {
|
"pyjwt": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:a5c70a06e1f33d81ef25eecd50d50bd30e34de1ca8b2b9fa3fe0daaabcf69bf7",
|
"sha256:934d73fbba91b0483d3857d1aff50e96b2a892384ee2c17417ed3203f173fca1",
|
||||||
"sha256:b70b15f89dc69b993d8a8d32c299032d5355c82f9b5b7e851d1a6d706dffe847"
|
"sha256:fba44e7898bbca160a2b2b501f492824fc8382485d3a6f11ba5d0c1937ce6130"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==2.0.1"
|
"version": "==2.1.0"
|
||||||
},
|
},
|
||||||
"pyopenssl": {
|
"pyopenssl": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<section class="pf-c-page__main-section pf-m-no-padding-mobile pf-m-xl">
|
<section class="ak-static-page pf-c-page__main-section pf-m-no-padding-mobile pf-m-xl">
|
||||||
<div class="pf-c-empty-state">
|
<div class="pf-c-empty-state">
|
||||||
<div class="pf-c-empty-state__content">
|
<div class="pf-c-empty-state__content">
|
||||||
<i class="fas fa-exclamation-circle pf-c-empty-state__icon" aria-hidden="true"></i>
|
<i class="fas fa-exclamation-circle pf-c-empty-state__icon" aria-hidden="true"></i>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<ak-message-container></ak-message-container>
|
<ak-message-container></ak-message-container>
|
||||||
<ak-interface-admin>
|
<ak-interface-admin>
|
||||||
<section class="ak-initial-load pf-c-page__main-section pf-m-no-padding-mobile pf-m-xl">
|
<section class="ak-static-page pf-c-page__main-section pf-m-no-padding-mobile pf-m-xl">
|
||||||
<div class="pf-c-empty-state" style="height: 100vh;">
|
<div class="pf-c-empty-state" style="height: 100vh;">
|
||||||
<div class="pf-c-empty-state__content">
|
<div class="pf-c-empty-state__content">
|
||||||
<span class="pf-c-spinner pf-m-xl pf-c-empty-state__icon" role="progressbar" aria-valuetext="{% trans 'Loading...' %}">
|
<span class="pf-c-spinner pf-m-xl pf-c-empty-state__icon" role="progressbar" aria-valuetext="{% trans 'Loading...' %}">
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<ak-message-container></ak-message-container>
|
<ak-message-container></ak-message-container>
|
||||||
<ak-flow-executor>
|
<ak-flow-executor>
|
||||||
<section class="ak-initial-load pf-c-page__main-section pf-m-no-padding-mobile pf-m-xl">
|
<section class="ak-static-page pf-c-page__main-section pf-m-no-padding-mobile pf-m-xl">
|
||||||
<div class="pf-c-empty-state" style="height: 100vh;">
|
<div class="pf-c-empty-state" style="height: 100vh;">
|
||||||
<div class="pf-c-empty-state__content">
|
<div class="pf-c-empty-state__content">
|
||||||
<span class="pf-c-spinner pf-m-xl pf-c-empty-state__icon" role="progressbar" aria-valuetext="{% trans 'Loading...' %}">
|
<span class="pf-c-spinner pf-m-xl pf-c-empty-state__icon" role="progressbar" aria-valuetext="{% trans 'Loading...' %}">
|
||||||
|
|
|
@ -34,7 +34,10 @@ email:
|
||||||
from: authentik@localhost
|
from: authentik@localhost
|
||||||
|
|
||||||
outposts:
|
outposts:
|
||||||
docker_image_base: "beryju/authentik" # this is prepended to -proxy:version
|
# Placeholders:
|
||||||
|
# %(type)s: Outpost type; proxy, ldap, etc
|
||||||
|
# %(version)s: Current version; 2021.4.1
|
||||||
|
docker_image_base: "beryju/authentik-%(type)s:%(version)s"
|
||||||
|
|
||||||
authentik:
|
authentik:
|
||||||
avatars: gravatar # gravatar or none
|
avatars: gravatar # gravatar or none
|
||||||
|
|
|
@ -9,6 +9,7 @@ from channels.middleware import BaseMiddleware
|
||||||
from channels_redis.core import ChannelFull
|
from channels_redis.core import ChannelFull
|
||||||
from django.core.exceptions import SuspiciousOperation, ValidationError
|
from django.core.exceptions import SuspiciousOperation, ValidationError
|
||||||
from django.db import InternalError, OperationalError, ProgrammingError
|
from django.db import InternalError, OperationalError, ProgrammingError
|
||||||
|
from django.http.response import Http404
|
||||||
from django_redis.exceptions import ConnectionInterrupted
|
from django_redis.exceptions import ConnectionInterrupted
|
||||||
from docker.errors import DockerException
|
from docker.errors import DockerException
|
||||||
from ldap3.core.exceptions import LDAPException
|
from ldap3.core.exceptions import LDAPException
|
||||||
|
@ -78,6 +79,8 @@ def before_send(event: dict, hint: dict) -> Optional[dict]:
|
||||||
LDAPException,
|
LDAPException,
|
||||||
# Docker errors
|
# Docker errors
|
||||||
DockerException,
|
DockerException,
|
||||||
|
# End-user errors
|
||||||
|
Http404,
|
||||||
)
|
)
|
||||||
if "exc_info" in hint:
|
if "exc_info" in hint:
|
||||||
_, exc_value, _ = hint["exc_info"]
|
_, exc_value, _ = hint["exc_info"]
|
||||||
|
|
|
@ -4,6 +4,8 @@ from dataclasses import dataclass
|
||||||
from structlog.stdlib import get_logger
|
from structlog.stdlib import get_logger
|
||||||
from structlog.testing import capture_logs
|
from structlog.testing import capture_logs
|
||||||
|
|
||||||
|
from authentik import __version__
|
||||||
|
from authentik.lib.config import CONFIG
|
||||||
from authentik.lib.sentry import SentryIgnoredException
|
from authentik.lib.sentry import SentryIgnoredException
|
||||||
from authentik.outposts.models import Outpost, OutpostServiceConnection
|
from authentik.outposts.models import Outpost, OutpostServiceConnection
|
||||||
|
|
||||||
|
@ -55,3 +57,10 @@ class BaseController:
|
||||||
def get_static_deployment(self) -> str:
|
def get_static_deployment(self) -> str:
|
||||||
"""Return a static deployment configuration"""
|
"""Return a static deployment configuration"""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def get_container_image(self) -> str:
|
||||||
|
"""Get container image to use for this outpost"""
|
||||||
|
image_name_template: str = CONFIG.y("outposts.docker_image_base")
|
||||||
|
return image_name_template.format(
|
||||||
|
{"type": self.outpost.type, "version": __version__}
|
||||||
|
)
|
||||||
|
|
|
@ -8,7 +8,6 @@ from docker.models.containers import Container
|
||||||
from yaml import safe_dump
|
from yaml import safe_dump
|
||||||
|
|
||||||
from authentik import __version__
|
from authentik import __version__
|
||||||
from authentik.lib.config import CONFIG
|
|
||||||
from authentik.outposts.controllers.base import BaseController, ControllerException
|
from authentik.outposts.controllers.base import BaseController, ControllerException
|
||||||
from authentik.outposts.models import (
|
from authentik.outposts.models import (
|
||||||
DockerServiceConnection,
|
DockerServiceConnection,
|
||||||
|
@ -60,8 +59,7 @@ class DockerController(BaseController):
|
||||||
return self.client.containers.get(container_name), False
|
return self.client.containers.get(container_name), False
|
||||||
except NotFound:
|
except NotFound:
|
||||||
self.logger.info("Container does not exist, creating")
|
self.logger.info("Container does not exist, creating")
|
||||||
image_prefix = CONFIG.y("outposts.docker_image_base")
|
image_name = self.get_container_image()
|
||||||
image_name = f"{image_prefix}-{self.outpost.type}:{__version__}"
|
|
||||||
self.client.images.pull(image_name)
|
self.client.images.pull(image_name)
|
||||||
container_args = {
|
container_args = {
|
||||||
"image": image_name,
|
"image": image_name,
|
||||||
|
@ -134,7 +132,8 @@ class DockerController(BaseController):
|
||||||
def down(self):
|
def down(self):
|
||||||
try:
|
try:
|
||||||
container, _ = self._get_container()
|
container, _ = self._get_container()
|
||||||
container.kill()
|
if container.status == "running":
|
||||||
|
container.kill()
|
||||||
container.remove()
|
container.remove()
|
||||||
except DockerException as exc:
|
except DockerException as exc:
|
||||||
raise ControllerException from exc
|
raise ControllerException from exc
|
||||||
|
@ -145,12 +144,12 @@ class DockerController(BaseController):
|
||||||
f"{port.port}:{port.port}/{port.protocol.lower()}"
|
f"{port.port}:{port.port}/{port.protocol.lower()}"
|
||||||
for port in self.deployment_ports
|
for port in self.deployment_ports
|
||||||
]
|
]
|
||||||
image_prefix = CONFIG.y("outposts.docker_image_base")
|
image_name = self.get_container_image()
|
||||||
compose = {
|
compose = {
|
||||||
"version": "3.5",
|
"version": "3.5",
|
||||||
"services": {
|
"services": {
|
||||||
f"authentik_{self.outpost.type}": {
|
f"authentik_{self.outpost.type}": {
|
||||||
"image": f"{image_prefix}-{self.outpost.type}:{__version__}",
|
"image": image_name,
|
||||||
"ports": ports,
|
"ports": ports,
|
||||||
"environment": {
|
"environment": {
|
||||||
"AUTHENTIK_HOST": self.outpost.config.authentik_host,
|
"AUTHENTIK_HOST": self.outpost.config.authentik_host,
|
||||||
|
|
|
@ -16,8 +16,6 @@ from kubernetes.client import (
|
||||||
V1SecretKeySelector,
|
V1SecretKeySelector,
|
||||||
)
|
)
|
||||||
|
|
||||||
from authentik import __version__
|
|
||||||
from authentik.lib.config import CONFIG
|
|
||||||
from authentik.outposts.controllers.base import FIELD_MANAGER
|
from authentik.outposts.controllers.base import FIELD_MANAGER
|
||||||
from authentik.outposts.controllers.k8s.base import (
|
from authentik.outposts.controllers.k8s.base import (
|
||||||
KubernetesObjectReconciler,
|
KubernetesObjectReconciler,
|
||||||
|
@ -75,7 +73,7 @@ class DeploymentReconciler(KubernetesObjectReconciler[V1Deployment]):
|
||||||
)
|
)
|
||||||
meta = self.get_object_meta(name=self.name)
|
meta = self.get_object_meta(name=self.name)
|
||||||
secret_name = f"authentik-outpost-{self.controller.outpost.uuid.hex}-api"
|
secret_name = f"authentik-outpost-{self.controller.outpost.uuid.hex}-api"
|
||||||
image_prefix = CONFIG.y("outposts.docker_image_base")
|
image_name = self.controller.get_container_image()
|
||||||
return V1Deployment(
|
return V1Deployment(
|
||||||
metadata=meta,
|
metadata=meta,
|
||||||
spec=V1DeploymentSpec(
|
spec=V1DeploymentSpec(
|
||||||
|
@ -87,7 +85,7 @@ class DeploymentReconciler(KubernetesObjectReconciler[V1Deployment]):
|
||||||
containers=[
|
containers=[
|
||||||
V1Container(
|
V1Container(
|
||||||
name=str(self.outpost.type),
|
name=str(self.outpost.type),
|
||||||
image=f"{image_prefix}-{self.outpost.type}:{__version__}",
|
image=image_name,
|
||||||
ports=container_ports,
|
ports=container_ports,
|
||||||
env=[
|
env=[
|
||||||
V1EnvVar(
|
V1EnvVar(
|
||||||
|
|
|
@ -38,6 +38,7 @@ class OAuth2ProviderSerializer(ProviderSerializer):
|
||||||
"client_type",
|
"client_type",
|
||||||
"client_id",
|
"client_id",
|
||||||
"client_secret",
|
"client_secret",
|
||||||
|
"access_code_validity",
|
||||||
"token_validity",
|
"token_validity",
|
||||||
"include_claims_in_id_token",
|
"include_claims_in_id_token",
|
||||||
"jwt_alg",
|
"jwt_alg",
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Generated by Django 3.2 on 2021-04-28 18:17
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
import authentik.lib.utils.time
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("authentik_providers_oauth2", "0011_managed"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="oauth2provider",
|
||||||
|
name="access_code_validity",
|
||||||
|
field=models.TextField(
|
||||||
|
default="minutes=1",
|
||||||
|
help_text="Access codes not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3).",
|
||||||
|
validators=[authentik.lib.utils.time.timedelta_string_validator],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -175,6 +175,16 @@ class OAuth2Provider(Provider):
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
access_code_validity = models.TextField(
|
||||||
|
default="minutes=1",
|
||||||
|
validators=[timedelta_string_validator],
|
||||||
|
help_text=_(
|
||||||
|
(
|
||||||
|
"Access codes not valid on or after current time + this value "
|
||||||
|
"(Format: hours=1;minutes=2;seconds=3)."
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
token_validity = models.TextField(
|
token_validity = models.TextField(
|
||||||
default="minutes=10",
|
default="minutes=10",
|
||||||
validators=[timedelta_string_validator],
|
validators=[timedelta_string_validator],
|
||||||
|
|
|
@ -219,7 +219,7 @@ class OAuthAuthorizationParams:
|
||||||
code.code_challenge_method = self.code_challenge_method
|
code.code_challenge_method = self.code_challenge_method
|
||||||
|
|
||||||
code.expires_at = timezone.now() + timedelta_from_string(
|
code.expires_at = timezone.now() + timedelta_from_string(
|
||||||
self.provider.token_validity
|
self.provider.access_code_validity
|
||||||
)
|
)
|
||||||
code.scope = self.scope
|
code.scope = self.scope
|
||||||
code.nonce = self.nonce
|
code.nonce = self.nonce
|
||||||
|
|
|
@ -52,6 +52,7 @@ class ProxyProviderSerializer(ProviderSerializer):
|
||||||
"basic_auth_enabled",
|
"basic_auth_enabled",
|
||||||
"basic_auth_password_attribute",
|
"basic_auth_password_attribute",
|
||||||
"basic_auth_user_attribute",
|
"basic_auth_user_attribute",
|
||||||
|
"forward_auth_mode",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -86,6 +87,7 @@ class ProxyOutpostConfigSerializer(ModelSerializer):
|
||||||
"basic_auth_enabled",
|
"basic_auth_enabled",
|
||||||
"basic_auth_password_attribute",
|
"basic_auth_password_attribute",
|
||||||
"basic_auth_user_attribute",
|
"basic_auth_user_attribute",
|
||||||
|
"forward_auth_mode",
|
||||||
]
|
]
|
||||||
|
|
||||||
@swagger_serializer_method(serializer_or_field=OpenIDConnectConfigurationSerializer)
|
@swagger_serializer_method(serializer_or_field=OpenIDConnectConfigurationSerializer)
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
# Generated by Django 3.2 on 2021-04-27 18:47
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
import authentik.lib.models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("authentik_providers_proxy", "0010_auto_20201214_0942"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="proxyprovider",
|
||||||
|
name="forward_auth_mode",
|
||||||
|
field=models.BooleanField(
|
||||||
|
default=False,
|
||||||
|
help_text="Enable support for forwardAuth in traefik and nginx auth_request. Exclusive with internal_host.",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="proxyprovider",
|
||||||
|
name="internal_host",
|
||||||
|
field=models.TextField(
|
||||||
|
blank=True,
|
||||||
|
validators=[
|
||||||
|
authentik.lib.models.DomainlessURLValidator(
|
||||||
|
schemes=("http", "https")
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -42,7 +42,8 @@ class ProxyProvider(OutpostModel, OAuth2Provider):
|
||||||
Protocols by using a Reverse-Proxy."""
|
Protocols by using a Reverse-Proxy."""
|
||||||
|
|
||||||
internal_host = models.TextField(
|
internal_host = models.TextField(
|
||||||
validators=[DomainlessURLValidator(schemes=("http", "https"))]
|
validators=[DomainlessURLValidator(schemes=("http", "https"))],
|
||||||
|
blank=True,
|
||||||
)
|
)
|
||||||
external_host = models.TextField(
|
external_host = models.TextField(
|
||||||
validators=[DomainlessURLValidator(schemes=("http", "https"))]
|
validators=[DomainlessURLValidator(schemes=("http", "https"))]
|
||||||
|
@ -52,6 +53,13 @@ class ProxyProvider(OutpostModel, OAuth2Provider):
|
||||||
help_text=_("Validate SSL Certificates of upstream servers"),
|
help_text=_("Validate SSL Certificates of upstream servers"),
|
||||||
verbose_name=_("Internal host SSL Validation"),
|
verbose_name=_("Internal host SSL Validation"),
|
||||||
)
|
)
|
||||||
|
forward_auth_mode = models.BooleanField(
|
||||||
|
default=False,
|
||||||
|
help_text=_(
|
||||||
|
"Enable support for forwardAuth in traefik and nginx auth_request. Exclusive with "
|
||||||
|
"internal_host."
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
skip_path_regex = models.TextField(
|
skip_path_regex = models.TextField(
|
||||||
default="",
|
default="",
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
"""invitation stage logic"""
|
"""invitation stage logic"""
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
from django.http import HttpRequest, HttpResponse
|
from django.http import HttpRequest, HttpResponse
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
from authentik.flows.stage import StageView
|
from authentik.flows.stage import StageView
|
||||||
|
from authentik.flows.views import SESSION_KEY_GET
|
||||||
from authentik.stages.invitation.models import Invitation, InvitationStage
|
from authentik.stages.invitation.models import Invitation, InvitationStage
|
||||||
from authentik.stages.invitation.signals import invitation_used
|
from authentik.stages.invitation.signals import invitation_used
|
||||||
from authentik.stages.prompt.stage import PLAN_CONTEXT_PROMPT
|
from authentik.stages.prompt.stage import PLAN_CONTEXT_PROMPT
|
||||||
|
@ -14,16 +17,26 @@ INVITATION_IN_EFFECT = "invitation_in_effect"
|
||||||
class InvitationStageView(StageView):
|
class InvitationStageView(StageView):
|
||||||
"""Finalise Authentication flow by logging the user in"""
|
"""Finalise Authentication flow by logging the user in"""
|
||||||
|
|
||||||
|
def get_token(self) -> Optional[str]:
|
||||||
|
"""Get token from saved get-arguments or prompt_data"""
|
||||||
|
if INVITATION_TOKEN_KEY in self.request.session.get(SESSION_KEY_GET, {}):
|
||||||
|
return self.request.session[SESSION_KEY_GET][INVITATION_TOKEN_KEY]
|
||||||
|
if INVITATION_TOKEN_KEY in self.executor.plan.context.get(
|
||||||
|
PLAN_CONTEXT_PROMPT, {}
|
||||||
|
):
|
||||||
|
return self.executor.plan.context[PLAN_CONTEXT_PROMPT][INVITATION_TOKEN_KEY]
|
||||||
|
return None
|
||||||
|
|
||||||
def get(self, request: HttpRequest) -> HttpResponse:
|
def get(self, request: HttpRequest) -> HttpResponse:
|
||||||
"""Apply data to the current flow based on a URL"""
|
"""Apply data to the current flow based on a URL"""
|
||||||
stage: InvitationStage = self.executor.current_stage
|
stage: InvitationStage = self.executor.current_stage
|
||||||
if INVITATION_TOKEN_KEY not in request.GET:
|
token = self.get_token()
|
||||||
|
if not token:
|
||||||
# No Invitation was given, raise error or continue
|
# No Invitation was given, raise error or continue
|
||||||
if stage.continue_flow_without_invitation:
|
if stage.continue_flow_without_invitation:
|
||||||
return self.executor.stage_ok()
|
return self.executor.stage_ok()
|
||||||
return self.executor.stage_invalid()
|
return self.executor.stage_invalid()
|
||||||
|
|
||||||
token = request.GET[INVITATION_TOKEN_KEY]
|
|
||||||
invite: Invitation = get_object_or_404(Invitation, pk=token)
|
invite: Invitation = get_object_or_404(Invitation, pk=token)
|
||||||
self.executor.plan.context[PLAN_CONTEXT_PROMPT] = invite.fixed_data
|
self.executor.plan.context[PLAN_CONTEXT_PROMPT] = invite.fixed_data
|
||||||
self.executor.plan.context[INVITATION_IN_EFFECT] = True
|
self.executor.plan.context[INVITATION_IN_EFFECT] = True
|
||||||
|
|
|
@ -4,6 +4,7 @@ from unittest.mock import MagicMock, patch
|
||||||
from django.test import Client, TestCase
|
from django.test import Client, TestCase
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.encoding import force_str
|
from django.utils.encoding import force_str
|
||||||
|
from django.utils.http import urlencode
|
||||||
from guardian.shortcuts import get_anonymous_user
|
from guardian.shortcuts import get_anonymous_user
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
|
@ -94,15 +95,11 @@ class TestUserLoginStage(TestCase):
|
||||||
self.stage.continue_flow_without_invitation = False
|
self.stage.continue_flow_without_invitation = False
|
||||||
self.stage.save()
|
self.stage.save()
|
||||||
|
|
||||||
def test_with_invitation(self):
|
def test_with_invitation_get(self):
|
||||||
"""Test with invitation, check data in session"""
|
"""Test with invitation, check data in session"""
|
||||||
plan = FlowPlan(
|
plan = FlowPlan(
|
||||||
flow_pk=self.flow.pk.hex, stages=[self.stage], markers=[StageMarker()]
|
flow_pk=self.flow.pk.hex, stages=[self.stage], markers=[StageMarker()]
|
||||||
)
|
)
|
||||||
plan.context[PLAN_CONTEXT_PENDING_USER] = self.user
|
|
||||||
plan.context[
|
|
||||||
PLAN_CONTEXT_AUTHENTICATION_BACKEND
|
|
||||||
] = "django.contrib.auth.backends.ModelBackend"
|
|
||||||
session = self.client.session
|
session = self.client.session
|
||||||
session[SESSION_KEY_PLAN] = plan
|
session[SESSION_KEY_PLAN] = plan
|
||||||
session.save()
|
session.save()
|
||||||
|
@ -116,9 +113,39 @@ class TestUserLoginStage(TestCase):
|
||||||
base_url = reverse(
|
base_url = reverse(
|
||||||
"authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}
|
"authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}
|
||||||
)
|
)
|
||||||
response = self.client.get(
|
args = urlencode({INVITATION_TOKEN_KEY: invite.pk.hex})
|
||||||
base_url + f"?{INVITATION_TOKEN_KEY}={invite.pk.hex}"
|
response = self.client.get(base_url + f"?query={args}")
|
||||||
|
|
||||||
|
session = self.client.session
|
||||||
|
plan: FlowPlan = session[SESSION_KEY_PLAN]
|
||||||
|
self.assertEqual(plan.context[PLAN_CONTEXT_PROMPT], data)
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertJSONEqual(
|
||||||
|
force_str(response.content),
|
||||||
|
{"to": reverse("authentik_core:root-redirect"), "type": "redirect"},
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_with_invitation_prompt_data(self):
|
||||||
|
"""Test with invitation, check data in session"""
|
||||||
|
data = {"foo": "bar"}
|
||||||
|
invite = Invitation.objects.create(
|
||||||
|
created_by=get_anonymous_user(), fixed_data=data
|
||||||
|
)
|
||||||
|
|
||||||
|
plan = FlowPlan(
|
||||||
|
flow_pk=self.flow.pk.hex, stages=[self.stage], markers=[StageMarker()]
|
||||||
|
)
|
||||||
|
plan.context[PLAN_CONTEXT_PROMPT] = {INVITATION_TOKEN_KEY: invite.pk.hex}
|
||||||
|
session = self.client.session
|
||||||
|
session[SESSION_KEY_PLAN] = plan
|
||||||
|
session.save()
|
||||||
|
|
||||||
|
with patch("authentik.flows.views.FlowExecutorView.cancel", MagicMock()):
|
||||||
|
base_url = reverse(
|
||||||
|
"authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}
|
||||||
)
|
)
|
||||||
|
response = self.client.get(base_url)
|
||||||
|
|
||||||
session = self.client.session
|
session = self.client.session
|
||||||
plan: FlowPlan = session[SESSION_KEY_PLAN]
|
plan: FlowPlan = session[SESSION_KEY_PLAN]
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|-----------------------------------|-------------------------|-------------|
|
|-----------------------------------|-------------------------|-------------|
|
||||||
| image.name | beryju/authentik | Image used to run the authentik server and worker |
|
| image.name | beryju/authentik | Image used to run the authentik server and worker |
|
||||||
| image.name_static | beryju/authentik-static | Image used to run the authentik static server (CSS and JS Files) |
|
| image.name_static | beryju/authentik-static | Image used to run the authentik static server (CSS and JS Files) |
|
||||||
|
| image.name_outposts | beryju/authentik-%(type)s:%(version)s | Image used for managed outposts. Placeholders: %(type)s: Outpost type; proxy, ldap, etc. %(version)s: Current version; 2021.4.1 |
|
||||||
| image.tag | 2021.4.4 | Image tag |
|
| image.tag | 2021.4.4 | Image tag |
|
||||||
| image.pullPolicy | IfNotPresent | Image Pull Policy used for all deployments |
|
| image.pullPolicy | IfNotPresent | Image Pull Policy used for all deployments |
|
||||||
| serverReplicas | 1 | Replicas for the Server deployment |
|
| serverReplicas | 1 | Replicas for the Server deployment |
|
||||||
|
|
|
@ -4,7 +4,10 @@
|
||||||
image:
|
image:
|
||||||
name: beryju/authentik
|
name: beryju/authentik
|
||||||
name_static: beryju/authentik-static
|
name_static: beryju/authentik-static
|
||||||
name_outposts: beryju/authentik # Prefix used for Outpost deployments, Outpost type and version is appended
|
# Image used for managed outposts. Placeholders:
|
||||||
|
# %(type)s: Outpost type; proxy, ldap, etc
|
||||||
|
# %(version)s: Current version; 2021.4.1
|
||||||
|
name_outposts: "beryju/authentik-%(type)s:%(version)s"
|
||||||
tag: 2021.4.4
|
tag: 2021.4.4
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
all: clean generate build
|
all: clean generate
|
||||||
|
|
||||||
generate:
|
generate:
|
||||||
go get -u github.com/go-swagger/go-swagger/cmd/swagger
|
go get -u github.com/go-swagger/go-swagger/cmd/swagger
|
||||||
|
@ -11,5 +11,3 @@ clean:
|
||||||
go mod tidy
|
go mod tidy
|
||||||
go clean .
|
go clean .
|
||||||
|
|
||||||
build:
|
|
||||||
go build -v .
|
|
||||||
|
|
|
@ -31,6 +31,10 @@ type providerBundle struct {
|
||||||
log *log.Entry
|
log *log.Entry
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func intToPointer(i int) *int {
|
||||||
|
return &i
|
||||||
|
}
|
||||||
|
|
||||||
func (pb *providerBundle) prepareOpts(provider *models.ProxyOutpostConfig) *options.Options {
|
func (pb *providerBundle) prepareOpts(provider *models.ProxyOutpostConfig) *options.Options {
|
||||||
externalHost, err := url.Parse(*provider.ExternalHost)
|
externalHost, err := url.Parse(*provider.ExternalHost)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -61,13 +65,24 @@ func (pb *providerBundle) prepareOpts(provider *models.ProxyOutpostConfig) *opti
|
||||||
providerOpts.SkipAuthRegex = skipRegexes
|
providerOpts.SkipAuthRegex = skipRegexes
|
||||||
}
|
}
|
||||||
|
|
||||||
providerOpts.UpstreamServers = []options.Upstream{
|
if provider.ForwardAuthMode {
|
||||||
{
|
providerOpts.UpstreamServers = []options.Upstream{
|
||||||
ID: "default",
|
{
|
||||||
URI: *provider.InternalHost,
|
ID: "static",
|
||||||
Path: "/",
|
Static: true,
|
||||||
InsecureSkipTLSVerify: provider.InternalHostSslValidation,
|
StaticCode: intToPointer(202),
|
||||||
},
|
Path: "/",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
providerOpts.UpstreamServers = []options.Upstream{
|
||||||
|
{
|
||||||
|
ID: "default",
|
||||||
|
URI: provider.InternalHost,
|
||||||
|
Path: "/",
|
||||||
|
InsecureSkipTLSVerify: provider.InternalHostSslValidation,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if provider.Certificate != nil {
|
if provider.Certificate != nil {
|
||||||
|
|
|
@ -63,6 +63,7 @@ type OAuthProxy struct {
|
||||||
AuthOnlyPath string
|
AuthOnlyPath string
|
||||||
UserInfoPath string
|
UserInfoPath string
|
||||||
|
|
||||||
|
forwardAuthMode bool
|
||||||
redirectURL *url.URL // the url to receive requests at
|
redirectURL *url.URL // the url to receive requests at
|
||||||
whitelistDomains []string
|
whitelistDomains []string
|
||||||
provider providers.Provider
|
provider providers.Provider
|
||||||
|
@ -132,6 +133,7 @@ func NewOAuthProxy(opts *options.Options, provider *models.ProxyOutpostConfig) (
|
||||||
CookieRefresh: opts.Cookie.Refresh,
|
CookieRefresh: opts.Cookie.Refresh,
|
||||||
CookieSameSite: opts.Cookie.SameSite,
|
CookieSameSite: opts.Cookie.SameSite,
|
||||||
|
|
||||||
|
forwardAuthMode: provider.ForwardAuthMode,
|
||||||
RobotsPath: "/robots.txt",
|
RobotsPath: "/robots.txt",
|
||||||
SignInPath: fmt.Sprintf("%s/sign_in", opts.ProxyPrefix),
|
SignInPath: fmt.Sprintf("%s/sign_in", opts.ProxyPrefix),
|
||||||
SignOutPath: fmt.Sprintf("%s/sign_out", opts.ProxyPrefix),
|
SignOutPath: fmt.Sprintf("%s/sign_out", opts.ProxyPrefix),
|
||||||
|
@ -335,12 +337,29 @@ func (p *OAuthProxy) SignOut(rw http.ResponseWriter, req *http.Request) {
|
||||||
func (p *OAuthProxy) AuthenticateOnly(rw http.ResponseWriter, req *http.Request) {
|
func (p *OAuthProxy) AuthenticateOnly(rw http.ResponseWriter, req *http.Request) {
|
||||||
session, err := p.getAuthenticatedSession(rw, req)
|
session, err := p.getAuthenticatedSession(rw, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if p.forwardAuthMode {
|
||||||
|
if _, ok := req.URL.Query()["nginx"]; ok {
|
||||||
|
rw.WriteHeader(401)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if _, ok := req.URL.Query()["traefik"]; ok {
|
||||||
|
host := getHost(req)
|
||||||
|
http.Redirect(rw, req, fmt.Sprintf("//%s%s", host, p.OAuthStartPath), http.StatusTemporaryRedirect)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
http.Error(rw, "unauthorized request", http.StatusUnauthorized)
|
http.Error(rw, "unauthorized request", http.StatusUnauthorized)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// we are authenticated
|
// we are authenticated
|
||||||
p.addHeadersForProxying(rw, req, session)
|
p.addHeadersForProxying(rw, req, session)
|
||||||
|
if p.forwardAuthMode {
|
||||||
|
for headerKey, headers := range req.Header {
|
||||||
|
for _, value := range headers {
|
||||||
|
rw.Header().Set(headerKey, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
rw.WriteHeader(http.StatusAccepted)
|
rw.WriteHeader(http.StatusAccepted)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,7 +454,6 @@ func (p *OAuthProxy) addHeadersForProxying(rw http.ResponseWriter, req *http.Req
|
||||||
authVal := b64.StdEncoding.EncodeToString([]byte(username + ":" + password))
|
authVal := b64.StdEncoding.EncodeToString([]byte(username + ":" + password))
|
||||||
req.Header["Authorization"] = []string{fmt.Sprintf("Basic %s", authVal)}
|
req.Header["Authorization"] = []string{fmt.Sprintf("Basic %s", authVal)}
|
||||||
}
|
}
|
||||||
rw.Header().Set("GAP-Auth", session.PreferredUsername)
|
|
||||||
// Check if user has additional headers set that we should sent
|
// Check if user has additional headers set that we should sent
|
||||||
if additionalHeaders, ok := userAttributes["additionalHeaders"].(map[string]string); ok {
|
if additionalHeaders, ok := userAttributes["additionalHeaders"].(map[string]string); ok {
|
||||||
if additionalHeaders == nil {
|
if additionalHeaders == nil {
|
||||||
|
|
20
swagger.yaml
20
swagger.yaml
|
@ -15873,6 +15873,12 @@ definitions:
|
||||||
title: Client Secret
|
title: Client Secret
|
||||||
type: string
|
type: string
|
||||||
maxLength: 255
|
maxLength: 255
|
||||||
|
access_code_validity:
|
||||||
|
title: Access code validity
|
||||||
|
description: 'Access codes not valid on or after current time + this value
|
||||||
|
(Format: hours=1;minutes=2;seconds=3).'
|
||||||
|
type: string
|
||||||
|
minLength: 1
|
||||||
token_validity:
|
token_validity:
|
||||||
title: Token validity
|
title: Token validity
|
||||||
description: 'Tokens not valid on or after current time + this value (Format:
|
description: 'Tokens not valid on or after current time + this value (Format:
|
||||||
|
@ -16125,7 +16131,6 @@ definitions:
|
||||||
ProxyOutpostConfig:
|
ProxyOutpostConfig:
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
- internal_host
|
|
||||||
- external_host
|
- external_host
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -16140,7 +16145,6 @@ definitions:
|
||||||
internal_host:
|
internal_host:
|
||||||
title: Internal host
|
title: Internal host
|
||||||
type: string
|
type: string
|
||||||
minLength: 1
|
|
||||||
external_host:
|
external_host:
|
||||||
title: External host
|
title: External host
|
||||||
type: string
|
type: string
|
||||||
|
@ -16189,6 +16193,11 @@ definitions:
|
||||||
description: User/Group Attribute used for the user part of the HTTP-Basic
|
description: User/Group Attribute used for the user part of the HTTP-Basic
|
||||||
Header. If not set, the user's Email address is used.
|
Header. If not set, the user's Email address is used.
|
||||||
type: string
|
type: string
|
||||||
|
forward_auth_mode:
|
||||||
|
title: Forward auth mode
|
||||||
|
description: Enable support for forwardAuth in traefik and nginx auth_request.
|
||||||
|
Exclusive with internal_host.
|
||||||
|
type: boolean
|
||||||
ServiceConnection:
|
ServiceConnection:
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
|
@ -17156,7 +17165,6 @@ definitions:
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
- authorization_flow
|
- authorization_flow
|
||||||
- internal_host
|
|
||||||
- external_host
|
- external_host
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -17202,7 +17210,6 @@ definitions:
|
||||||
internal_host:
|
internal_host:
|
||||||
title: Internal host
|
title: Internal host
|
||||||
type: string
|
type: string
|
||||||
minLength: 1
|
|
||||||
external_host:
|
external_host:
|
||||||
title: External host
|
title: External host
|
||||||
type: string
|
type: string
|
||||||
|
@ -17236,6 +17243,11 @@ definitions:
|
||||||
description: User/Group Attribute used for the user part of the HTTP-Basic
|
description: User/Group Attribute used for the user part of the HTTP-Basic
|
||||||
Header. If not set, the user's Email address is used.
|
Header. If not set, the user's Email address is used.
|
||||||
type: string
|
type: string
|
||||||
|
forward_auth_mode:
|
||||||
|
title: Forward auth mode
|
||||||
|
description: Enable support for forwardAuth in traefik and nginx auth_request.
|
||||||
|
Exclusive with internal_host.
|
||||||
|
type: boolean
|
||||||
SAMLProvider:
|
SAMLProvider:
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
|
|
|
@ -1866,13 +1866,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/browser": {
|
"@sentry/browser": {
|
||||||
"version": "6.3.1",
|
"version": "6.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-6.3.3.tgz",
|
||||||
"integrity": "sha512-Ri4tYsyuJIeLQnvQUqbpGzailUYpbjFSYM0+yEM63gPsjiXdg+W8yKHluA6cs6FLWVN3oWfwHW7Kd61echlGuw==",
|
"integrity": "sha512-M3l4xdpU4fTNERnuXZ46ceMa+bAMdUOaSYbmflYt5GSkBuYS/eC8nAaCj//4CMT4JMwT3oUKYI5k6wDIKgyKMQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/core": "6.3.1",
|
"@sentry/core": "6.3.3",
|
||||||
"@sentry/types": "6.3.1",
|
"@sentry/types": "6.3.3",
|
||||||
"@sentry/utils": "6.3.1",
|
"@sentry/utils": "6.3.3",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1884,14 +1884,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/core": {
|
"@sentry/core": {
|
||||||
"version": "6.3.1",
|
"version": "6.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.3.3.tgz",
|
||||||
"integrity": "sha512-aVuvVbaehGeN86jZlLDGGkhEtprdOtB6lvYLfGy40Dj1Tkh2mGWE550QsRXAXAqYvQzIYwQR23r6m3o8FujgVg==",
|
"integrity": "sha512-wbmXmhWHpbFLmXf9DBUOp9H5Ao+T8Ztn5KXoxDwBnsYXtgVIzQfdpRbtcNtvJJ/UPZ3H3rRHQ8zQTb5Ni99xYQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/hub": "6.3.1",
|
"@sentry/hub": "6.3.3",
|
||||||
"@sentry/minimal": "6.3.1",
|
"@sentry/minimal": "6.3.3",
|
||||||
"@sentry/types": "6.3.1",
|
"@sentry/types": "6.3.3",
|
||||||
"@sentry/utils": "6.3.1",
|
"@sentry/utils": "6.3.3",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1903,12 +1903,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/hub": {
|
"@sentry/hub": {
|
||||||
"version": "6.3.1",
|
"version": "6.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.3.3.tgz",
|
||||||
"integrity": "sha512-2er+OeVlsdVZkhl9kXQAANwgjwoCdM1etK2iFuhzX8xkMaJlAuZLyQInv2U1BbXBlIfWjvzRM8B95hCWvVrR3Q==",
|
"integrity": "sha512-vrJHrDKTCAL63dkNNll18Q1c7YjuIYYv5jY56RNUQpm+7sX4v+iw9giOI+iLbPKaGpEyraa17FeF/xO0SqIp9Q==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/types": "6.3.1",
|
"@sentry/types": "6.3.3",
|
||||||
"@sentry/utils": "6.3.1",
|
"@sentry/utils": "6.3.3",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1920,12 +1920,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/minimal": {
|
"@sentry/minimal": {
|
||||||
"version": "6.3.1",
|
"version": "6.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.3.3.tgz",
|
||||||
"integrity": "sha512-0eN9S7HvXsCQEjX/qXHTMgvSb3mwrnZEWS9Qz/Bz5ig9pEGXKgJ1om5NTTHVHhXqd3wFCjdvIo6slufLHoCtSw==",
|
"integrity": "sha512-MKspEQ5hhTMrbeiNvkRGgm/NX2gM/Mni0vDJjuqQFi2Cd3RwA4ZVO6yRr6XzFPtTGgDsrXg75lQ8rma96Qs8/g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/hub": "6.3.1",
|
"@sentry/hub": "6.3.3",
|
||||||
"@sentry/types": "6.3.1",
|
"@sentry/types": "6.3.3",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1937,51 +1937,17 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/tracing": {
|
"@sentry/tracing": {
|
||||||
"version": "6.3.1",
|
"version": "6.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.3.3.tgz",
|
||||||
"integrity": "sha512-qveDmoWsXy9qLEblZJwJ1OU/zZRlEd/q7Jhd0Hnwlob8Ci96huABEbYyGdJs18BKVHEFU3gSdVfvrikUE/W17g==",
|
"integrity": "sha512-xtiUfgxDnxgcmwVeZiwOwlwSfT0zCCQWVRRUz6YOnuageEkJpJAXqGgpTTkB5tDrmt7E7Ikq5XF4qzQGMGQLWw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/hub": "6.3.1",
|
"@sentry/hub": "6.3.3",
|
||||||
"@sentry/minimal": "6.3.1",
|
"@sentry/minimal": "6.3.3",
|
||||||
"@sentry/types": "6.3.1",
|
"@sentry/types": "6.3.3",
|
||||||
"@sentry/utils": "6.3.1",
|
"@sentry/utils": "6.3.3",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/hub": {
|
|
||||||
"version": "6.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.3.1.tgz",
|
|
||||||
"integrity": "sha512-2er+OeVlsdVZkhl9kXQAANwgjwoCdM1etK2iFuhzX8xkMaJlAuZLyQInv2U1BbXBlIfWjvzRM8B95hCWvVrR3Q==",
|
|
||||||
"requires": {
|
|
||||||
"@sentry/types": "6.3.1",
|
|
||||||
"@sentry/utils": "6.3.1",
|
|
||||||
"tslib": "^1.9.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@sentry/minimal": {
|
|
||||||
"version": "6.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.3.1.tgz",
|
|
||||||
"integrity": "sha512-0eN9S7HvXsCQEjX/qXHTMgvSb3mwrnZEWS9Qz/Bz5ig9pEGXKgJ1om5NTTHVHhXqd3wFCjdvIo6slufLHoCtSw==",
|
|
||||||
"requires": {
|
|
||||||
"@sentry/hub": "6.3.1",
|
|
||||||
"@sentry/types": "6.3.1",
|
|
||||||
"tslib": "^1.9.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@sentry/types": {
|
|
||||||
"version": "6.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.3.1.tgz",
|
|
||||||
"integrity": "sha512-BEBn8JX1yaooCAuonbaMci9z0RjwwMbQ3Eny/eyDdd+rjXprZCZaStZnCvSThbNBqAJ8YaUqY2YBMnEwJxarAw=="
|
|
||||||
},
|
|
||||||
"@sentry/utils": {
|
|
||||||
"version": "6.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.3.1.tgz",
|
|
||||||
"integrity": "sha512-cdtl/QWC9FtinAuW3w8QfvSfh/Q9ui5vwvjzVHiS1ga/U38edi2XX+cttY39ZYwz0SQG99cE10GOIhd1p7/mAA==",
|
|
||||||
"requires": {
|
|
||||||
"@sentry/types": "6.3.1",
|
|
||||||
"tslib": "^1.9.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tslib": {
|
"tslib": {
|
||||||
"version": "1.14.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
||||||
|
@ -1990,16 +1956,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sentry/types": {
|
"@sentry/types": {
|
||||||
"version": "6.3.1",
|
"version": "6.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.3.3.tgz",
|
||||||
"integrity": "sha512-BEBn8JX1yaooCAuonbaMci9z0RjwwMbQ3Eny/eyDdd+rjXprZCZaStZnCvSThbNBqAJ8YaUqY2YBMnEwJxarAw=="
|
"integrity": "sha512-UPHzhwqdjta7LCFfqNvJ5g79lRiXOxtgnIp7zlBkHU6yZs4fPnlBadljyi2gGFguN+C+XAukrbXUAq2mb+Mhdw=="
|
||||||
},
|
},
|
||||||
"@sentry/utils": {
|
"@sentry/utils": {
|
||||||
"version": "6.3.1",
|
"version": "6.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.3.3.tgz",
|
||||||
"integrity": "sha512-cdtl/QWC9FtinAuW3w8QfvSfh/Q9ui5vwvjzVHiS1ga/U38edi2XX+cttY39ZYwz0SQG99cE10GOIhd1p7/mAA==",
|
"integrity": "sha512-Kz546LeF6Ff/FU53XUVaairMQYFc6sIHBvE5ReZmfDRpaR+qZnfIbWhfoIbSwyBbtF+T8/gcU7mcZpZQmM5jLw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sentry/types": "6.3.1",
|
"@sentry/types": "6.3.3",
|
||||||
"tslib": "^1.9.3"
|
"tslib": "^1.9.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -4482,9 +4448,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lit-html": {
|
"lit-html": {
|
||||||
"version": "1.3.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.0.tgz",
|
||||||
"integrity": "sha512-0Q1bwmaFH9O14vycPHw8C/IeHMk/uSDldVLIefu/kfbTBGIc44KGH6A8p1bDfxUfHdc8q6Ct7kQklWoHgr4t1Q=="
|
"integrity": "sha512-cgaqPSgqHRaTH/P1DnWD/dQxudtrHqD0xo1AoyOGJZir2rXgsvTg77z6Pitwk9B+kL23EakD62HV3x8sT01aWQ=="
|
||||||
},
|
},
|
||||||
"locate-path": {
|
"locate-path": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
|
|
|
@ -50,8 +50,8 @@
|
||||||
"@rollup/plugin-babel": "^5.3.0",
|
"@rollup/plugin-babel": "^5.3.0",
|
||||||
"@rollup/plugin-replace": "^2.4.2",
|
"@rollup/plugin-replace": "^2.4.2",
|
||||||
"@rollup/plugin-typescript": "^8.2.1",
|
"@rollup/plugin-typescript": "^8.2.1",
|
||||||
"@sentry/browser": "^6.3.1",
|
"@sentry/browser": "^6.3.3",
|
||||||
"@sentry/tracing": "^6.3.1",
|
"@sentry/tracing": "^6.3.3",
|
||||||
"@types/chart.js": "^2.9.32",
|
"@types/chart.js": "^2.9.32",
|
||||||
"@types/codemirror": "0.0.109",
|
"@types/codemirror": "0.0.109",
|
||||||
"@types/grecaptcha": "^3.0.1",
|
"@types/grecaptcha": "^3.0.1",
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
"eslint-plugin-lit": "^1.3.0",
|
"eslint-plugin-lit": "^1.3.0",
|
||||||
"flowchart.js": "^1.15.0",
|
"flowchart.js": "^1.15.0",
|
||||||
"lit-element": "^2.4.0",
|
"lit-element": "^2.4.0",
|
||||||
"lit-html": "^1.3.0",
|
"lit-html": "^1.4.0",
|
||||||
"moment": "^2.29.1",
|
"moment": "^2.29.1",
|
||||||
"rapidoc": "^9.0.0",
|
"rapidoc": "^9.0.0",
|
||||||
"rollup": "^2.45.2",
|
"rollup": "^2.45.2",
|
||||||
|
|
|
@ -97,9 +97,12 @@ html > form > input {
|
||||||
body {
|
body {
|
||||||
background-color: var(--ak-dark-background) !important;
|
background-color: var(--ak-dark-background) !important;
|
||||||
}
|
}
|
||||||
.ak-initial-load h1 {
|
.ak-static-page h1 {
|
||||||
color: var(--ak-dark-foreground);
|
color: var(--ak-dark-foreground);
|
||||||
}
|
}
|
||||||
|
.form-help-text {
|
||||||
|
color: var(--pf-global--Color--100);
|
||||||
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
:root {
|
:root {
|
||||||
|
@ -239,6 +242,9 @@ body {
|
||||||
.pf-c-check__label {
|
.pf-c-check__label {
|
||||||
color: var(--ak-dark-foreground);
|
color: var(--ak-dark-foreground);
|
||||||
}
|
}
|
||||||
|
.form-help-text {
|
||||||
|
color: var(--ak-dark-foreground);
|
||||||
|
}
|
||||||
/* inputs help text */
|
/* inputs help text */
|
||||||
.pf-c-form__helper-text:not(.pf-m-error) {
|
.pf-c-form__helper-text:not(.pf-m-error) {
|
||||||
color: var(--ak-dark-foreground);
|
color: var(--ak-dark-foreground);
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
<body>
|
<body>
|
||||||
<ak-message-container></ak-message-container>
|
<ak-message-container></ak-message-container>
|
||||||
<ak-interface-admin>
|
<ak-interface-admin>
|
||||||
<section class="ak-initial-load pf-c-page__main-section pf-m-no-padding-mobile pf-m-xl">
|
<section class="ak-static-page pf-c-page__main-section pf-m-no-padding-mobile pf-m-xl">
|
||||||
<div class="pf-c-empty-state" style="height: 100vh;">
|
<div class="pf-c-empty-state" style="height: 100vh;">
|
||||||
<div class="pf-c-empty-state__content">
|
<div class="pf-c-empty-state__content">
|
||||||
<span class="pf-c-spinner pf-m-xl pf-c-empty-state__icon" role="progressbar" aria-valuetext="Loading...">
|
<span class="pf-c-spinner pf-m-xl pf-c-empty-state__icon" role="progressbar" aria-valuetext="Loading...">
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<body>
|
<body>
|
||||||
<ak-message-container></ak-message-container>
|
<ak-message-container></ak-message-container>
|
||||||
<ak-flow-executor>
|
<ak-flow-executor>
|
||||||
<section class="ak-initial-load pf-c-page__main-section pf-m-no-padding-mobile pf-m-xl">
|
<section class="ak-static-page pf-c-page__main-section pf-m-no-padding-mobile pf-m-xl">
|
||||||
<div class="pf-c-empty-state" style="height: 100vh;">
|
<div class="pf-c-empty-state" style="height: 100vh;">
|
||||||
<div class="pf-c-empty-state__content">
|
<div class="pf-c-empty-state__content">
|
||||||
<span class="pf-c-spinner pf-m-xl pf-c-empty-state__icon" role="progressbar" aria-valuetext="Loading...">
|
<span class="pf-c-spinner pf-m-xl pf-c-empty-state__icon" role="progressbar" aria-valuetext="Loading...">
|
||||||
|
|
|
@ -13,6 +13,13 @@ msgstr ""
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:141
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:149
|
||||||
|
#: src/pages/providers/saml/SAMLProviderForm.ts:202
|
||||||
|
#: src/pages/stages/user_login/UserLoginStageForm.ts:71
|
||||||
|
msgid "(Format: hours=-1;minutes=-2;seconds=-3)."
|
||||||
|
msgstr "(Format: hours=-1;minutes=-2;seconds=-3)."
|
||||||
|
|
||||||
#: src/pages/policies/BoundPoliciesList.ts:59
|
#: src/pages/policies/BoundPoliciesList.ts:59
|
||||||
msgid "-"
|
msgid "-"
|
||||||
msgstr "-"
|
msgstr "-"
|
||||||
|
@ -68,6 +75,10 @@ msgstr "API request failed"
|
||||||
msgid "Access Key"
|
msgid "Access Key"
|
||||||
msgstr "Access Key"
|
msgstr "Access Key"
|
||||||
|
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:136
|
||||||
|
msgid "Access code validity"
|
||||||
|
msgstr "Access code validity"
|
||||||
|
|
||||||
#: src/pages/sources/oauth/OAuthSourceForm.ts:73
|
#: src/pages/sources/oauth/OAuthSourceForm.ts:73
|
||||||
msgid "Access token URL"
|
msgid "Access token URL"
|
||||||
msgstr "Access token URL"
|
msgstr "Access token URL"
|
||||||
|
@ -106,7 +117,7 @@ msgid "Additional user DN, prepended to the Base DN."
|
||||||
msgstr "Additional user DN, prepended to the Base DN."
|
msgstr "Additional user DN, prepended to the Base DN."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:132
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:132
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:130
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:153
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:117
|
#: src/pages/providers/saml/SAMLProviderForm.ts:117
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:134
|
#: src/pages/sources/saml/SAMLSourceForm.ts:134
|
||||||
msgid "Advanced protocol settings"
|
msgid "Advanced protocol settings"
|
||||||
|
@ -125,7 +136,7 @@ msgstr "Affected model:"
|
||||||
msgid "Alert"
|
msgid "Alert"
|
||||||
msgstr "Alert"
|
msgstr "Alert"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:153
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:163
|
||||||
msgid "Algorithm used to sign the JWT Tokens."
|
msgid "Algorithm used to sign the JWT Tokens."
|
||||||
msgstr "Algorithm used to sign the JWT Tokens."
|
msgstr "Algorithm used to sign the JWT Tokens."
|
||||||
|
|
||||||
|
@ -220,7 +231,7 @@ msgstr "Are you sure you want to delete {0} {objName} ?"
|
||||||
msgid "Are you sure you want to update {0} \"{1}\"?"
|
msgid "Are you sure you want to update {0} \"{1}\"?"
|
||||||
msgstr "Are you sure you want to update {0} \"{1}\"?"
|
msgstr "Are you sure you want to update {0} \"{1}\"?"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:208
|
#: src/pages/providers/saml/SAMLProviderForm.ts:209
|
||||||
msgid "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
msgid "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
||||||
msgstr "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
msgstr "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
||||||
|
|
||||||
|
@ -228,11 +239,7 @@ msgstr "Assertion not valid on or after current time + this value (Format: hours
|
||||||
msgid "Assertion valid not before"
|
msgid "Assertion valid not before"
|
||||||
msgstr "Assertion valid not before"
|
msgstr "Assertion valid not before"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:201
|
#: src/pages/providers/saml/SAMLProviderForm.ts:205
|
||||||
msgid "Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3)."
|
|
||||||
msgstr "Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3)."
|
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:204
|
|
||||||
msgid "Assertion valid not on or after"
|
msgid "Assertion valid not on or after"
|
||||||
msgstr "Assertion valid not on or after"
|
msgstr "Assertion valid not on or after"
|
||||||
|
|
||||||
|
@ -298,7 +305,7 @@ msgid "Authorization URL"
|
||||||
msgstr "Authorization URL"
|
msgstr "Authorization URL"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:62
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:62
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:80
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:104
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:59
|
#: src/pages/providers/saml/SAMLProviderForm.ts:59
|
||||||
#: src/pages/providers/saml/SAMLProviderImportForm.ts:44
|
#: src/pages/providers/saml/SAMLProviderImportForm.ts:44
|
||||||
msgid "Authorization flow"
|
msgid "Authorization flow"
|
||||||
|
@ -342,19 +349,19 @@ msgstr "Backup status"
|
||||||
msgid "Base DN"
|
msgid "Base DN"
|
||||||
msgstr "Base DN"
|
msgstr "Base DN"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:203
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:213
|
||||||
msgid "Based on the Hashed User ID"
|
msgid "Based on the Hashed User ID"
|
||||||
msgstr "Based on the Hashed User ID"
|
msgstr "Based on the Hashed User ID"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:209
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:219
|
||||||
msgid "Based on the User's Email. This is recommended over the UPN method."
|
msgid "Based on the User's Email. This is recommended over the UPN method."
|
||||||
msgstr "Based on the User's Email. This is recommended over the UPN method."
|
msgstr "Based on the User's Email. This is recommended over the UPN method."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:212
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:222
|
||||||
msgid "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains."
|
msgid "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains."
|
||||||
msgstr "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains."
|
msgstr "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:206
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:216
|
||||||
msgid "Based on the username"
|
msgid "Based on the username"
|
||||||
msgstr "Based on the username"
|
msgstr "Based on the username"
|
||||||
|
|
||||||
|
@ -393,7 +400,7 @@ msgstr "Build hash: {0}"
|
||||||
msgid "Built-in"
|
msgid "Built-in"
|
||||||
msgstr "Built-in"
|
msgstr "Built-in"
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts:89
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts:88
|
||||||
msgid "CA which the endpoint's Certificate is verified against. Can be left empty for no validation."
|
msgid "CA which the endpoint's Certificate is verified against. Can be left empty for no validation."
|
||||||
msgstr "CA which the endpoint's Certificate is verified against. Can be left empty for no validation."
|
msgstr "CA which the endpoint's Certificate is verified against. Can be left empty for no validation."
|
||||||
|
|
||||||
|
@ -426,7 +433,7 @@ msgid "Case insensitive matching"
|
||||||
msgstr "Case insensitive matching"
|
msgstr "Case insensitive matching"
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts:51
|
#: src/pages/crypto/CertificateKeyPairForm.ts:51
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:134
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:157
|
||||||
msgid "Certificate"
|
msgid "Certificate"
|
||||||
msgstr "Certificate"
|
msgstr "Certificate"
|
||||||
|
|
||||||
|
@ -450,7 +457,7 @@ msgstr "Certificate-Key Pair"
|
||||||
msgid "Certificate-Key Pairs"
|
msgid "Certificate-Key Pairs"
|
||||||
msgstr "Certificate-Key Pairs"
|
msgstr "Certificate-Key Pairs"
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts:106
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts:104
|
||||||
msgid "Certificate/Key used for authentication. Can be left empty for no authentication."
|
msgid "Certificate/Key used for authentication. Can be left empty for no authentication."
|
||||||
msgstr "Certificate/Key used for authentication. Can be left empty for no authentication."
|
msgstr "Certificate/Key used for authentication. Can be left empty for no authentication."
|
||||||
|
|
||||||
|
@ -592,11 +599,19 @@ msgstr "Configuration flow"
|
||||||
msgid "Configure WebAuthn"
|
msgid "Configure WebAuthn"
|
||||||
msgstr "Configure WebAuthn"
|
msgstr "Configure WebAuthn"
|
||||||
|
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:140
|
||||||
|
msgid "Configure how long access codes are valid for."
|
||||||
|
msgstr "Configure how long access codes are valid for."
|
||||||
|
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:148
|
||||||
|
msgid "Configure how long refresh tokens and their id_tokens are valid for."
|
||||||
|
msgstr "Configure how long refresh tokens and their id_tokens are valid for."
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:193
|
#: src/pages/providers/saml/SAMLProviderForm.ts:193
|
||||||
msgid "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected."
|
msgid "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected."
|
||||||
msgstr "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected."
|
msgstr "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:241
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:251
|
||||||
msgid "Configure how the issuer field of the ID Token should be filled."
|
msgid "Configure how the issuer field of the ID Token should be filled."
|
||||||
msgstr "Configure how the issuer field of the ID Token should be filled."
|
msgstr "Configure how the issuer field of the ID Token should be filled."
|
||||||
|
|
||||||
|
@ -604,7 +619,11 @@ msgstr "Configure how the issuer field of the ID Token should be filled."
|
||||||
msgid "Configure settings relevant to your user profile."
|
msgid "Configure settings relevant to your user profile."
|
||||||
msgstr "Configure settings relevant to your user profile."
|
msgstr "Configure settings relevant to your user profile."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:216
|
#: src/pages/providers/saml/SAMLProviderForm.ts:201
|
||||||
|
msgid "Configure the maximum allowed time drift for an asseration."
|
||||||
|
msgstr "Configure the maximum allowed time drift for an asseration."
|
||||||
|
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:226
|
||||||
msgid "Configure what data should be used as unique User Identifier. For most cases, the default should be fine."
|
msgid "Configure what data should be used as unique User Identifier. For most cases, the default should be fine."
|
||||||
msgstr "Configure what data should be used as unique User Identifier. For most cases, the default should be fine."
|
msgstr "Configure what data should be used as unique User Identifier. For most cases, the default should be fine."
|
||||||
|
|
||||||
|
@ -846,7 +865,7 @@ msgstr "Creation Date"
|
||||||
msgid "Customisation"
|
msgid "Customisation"
|
||||||
msgstr "Customisation"
|
msgstr "Customisation"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:255
|
#: src/pages/providers/saml/SAMLProviderForm.ts:256
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:212
|
#: src/pages/sources/saml/SAMLSourceForm.ts:212
|
||||||
msgid "DSA-SHA1"
|
msgid "DSA-SHA1"
|
||||||
msgstr "DSA-SHA1"
|
msgstr "DSA-SHA1"
|
||||||
|
@ -956,8 +975,8 @@ msgid "Determines how authentik sends the response back to the Service Provider.
|
||||||
msgstr "Determines how authentik sends the response back to the Service Provider."
|
msgstr "Determines how authentik sends the response back to the Service Provider."
|
||||||
|
|
||||||
#: src/pages/stages/user_login/UserLoginStageForm.ts:70
|
#: src/pages/stages/user_login/UserLoginStageForm.ts:70
|
||||||
msgid "Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3)."
|
msgid "Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed."
|
||||||
msgstr "Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3)."
|
msgstr "Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed."
|
||||||
|
|
||||||
#: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:113
|
#: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:113
|
||||||
msgid "Device classes which can be used to authenticate."
|
msgid "Device classes which can be used to authenticate."
|
||||||
|
@ -967,7 +986,7 @@ msgstr "Device classes which can be used to authenticate."
|
||||||
msgid "Device name"
|
msgid "Device name"
|
||||||
msgstr "Device name"
|
msgstr "Device name"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:219
|
#: src/pages/providers/saml/SAMLProviderForm.ts:220
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:176
|
#: src/pages/sources/saml/SAMLSourceForm.ts:176
|
||||||
msgid "Digest algorithm"
|
msgid "Digest algorithm"
|
||||||
msgstr "Digest algorithm"
|
msgstr "Digest algorithm"
|
||||||
|
@ -1010,7 +1029,7 @@ msgstr "Download"
|
||||||
msgid "Dummy stage used for testing. Shows a simple continue button and always passes."
|
msgid "Dummy stage used for testing. Shows a simple continue button and always passes."
|
||||||
msgstr "Dummy stage used for testing. Shows a simple continue button and always passes."
|
msgstr "Dummy stage used for testing. Shows a simple continue button and always passes."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:234
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:244
|
||||||
msgid "Each provider has a different issuer, based on the application slug."
|
msgid "Each provider has a different issuer, based on the application slug."
|
||||||
msgstr "Each provider has a different issuer, based on the application slug."
|
msgstr "Each provider has a different issuer, based on the application slug."
|
||||||
|
|
||||||
|
@ -1104,6 +1123,14 @@ msgstr "Enable Static Tokens"
|
||||||
msgid "Enable TOTP"
|
msgid "Enable TOTP"
|
||||||
msgstr "Enable TOTP"
|
msgstr "Enable TOTP"
|
||||||
|
|
||||||
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:140
|
||||||
|
msgid "Enable forward-auth mode"
|
||||||
|
msgstr "Enable forward-auth mode"
|
||||||
|
|
||||||
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:144
|
||||||
|
msgid "Enable this if you don't want to use this provider as a proxy, and want to use it with Traefik's forwardAuth or nginx's auth_request."
|
||||||
|
msgstr "Enable this if you don't want to use this provider as a proxy, and want to use it with Traefik's forwardAuth or nginx's auth_request."
|
||||||
|
|
||||||
#: src/pages/policies/BoundPoliciesList.ts:41
|
#: src/pages/policies/BoundPoliciesList.ts:41
|
||||||
#: src/pages/policies/PolicyBindingForm.ts:199
|
#: src/pages/policies/PolicyBindingForm.ts:199
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts:69
|
#: src/pages/sources/ldap/LDAPSourceForm.ts:69
|
||||||
|
@ -1262,7 +1289,7 @@ msgstr "External Applications which use authentik as Identity-Provider, utilizin
|
||||||
msgid "External Host"
|
msgid "External Host"
|
||||||
msgstr "External Host"
|
msgstr "External Host"
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:119
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:127
|
||||||
msgid "External host"
|
msgid "External host"
|
||||||
msgstr "External host"
|
msgstr "External host"
|
||||||
|
|
||||||
|
@ -1357,7 +1384,7 @@ msgid "Flow used by an authenticated user to configure this Stage. If empty, use
|
||||||
msgstr "Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage."
|
msgstr "Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:76
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:76
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:94
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:118
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:73
|
#: src/pages/providers/saml/SAMLProviderForm.ts:73
|
||||||
#: src/pages/providers/saml/SAMLProviderImportForm.ts:57
|
#: src/pages/providers/saml/SAMLProviderImportForm.ts:57
|
||||||
msgid "Flow used when authorizing this provider."
|
msgid "Flow used when authorizing this provider."
|
||||||
|
@ -1451,15 +1478,15 @@ msgstr "Group {0}"
|
||||||
msgid "Groups"
|
msgid "Groups"
|
||||||
msgstr "Groups"
|
msgstr "Groups"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:150
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:160
|
||||||
msgid "HS256 (Symmetric Encryption)"
|
msgid "HS256 (Symmetric Encryption)"
|
||||||
msgstr "HS256 (Symmetric Encryption)"
|
msgstr "HS256 (Symmetric Encryption)"
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:64
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:66
|
||||||
msgid "HTTP-Basic Password Key"
|
msgid "HTTP-Basic Password Key"
|
||||||
msgstr "HTTP-Basic Password Key"
|
msgstr "HTTP-Basic Password Key"
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:58
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:60
|
||||||
msgid "HTTP-Basic Username Key"
|
msgid "HTTP-Basic Username Key"
|
||||||
msgstr "HTTP-Basic Username Key"
|
msgstr "HTTP-Basic Username Key"
|
||||||
|
|
||||||
|
@ -1478,7 +1505,7 @@ msgstr "Hide managed mappings"
|
||||||
#: src/pages/events/RuleForm.ts:93
|
#: src/pages/events/RuleForm.ts:93
|
||||||
#: src/pages/groups/GroupForm.ts:131
|
#: src/pages/groups/GroupForm.ts:131
|
||||||
#: src/pages/outposts/OutpostForm.ts:98
|
#: src/pages/outposts/OutpostForm.ts:98
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:178
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:188
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:177
|
#: src/pages/providers/saml/SAMLProviderForm.ts:177
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts:167
|
#: src/pages/sources/ldap/LDAPSourceForm.ts:167
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts:193
|
#: src/pages/sources/ldap/LDAPSourceForm.ts:193
|
||||||
|
@ -1552,11 +1579,11 @@ msgstr "Import certificates of external providers or create certificates to sign
|
||||||
msgid "In case you can't access any other method."
|
msgid "In case you can't access any other method."
|
||||||
msgstr "In case you can't access any other method."
|
msgstr "In case you can't access any other method."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:226
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:236
|
||||||
msgid "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint."
|
msgid "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint."
|
||||||
msgstr "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint."
|
msgstr "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:223
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:233
|
||||||
msgid "Include claims in id_token"
|
msgid "Include claims in id_token"
|
||||||
msgstr "Include claims in id_token"
|
msgstr "Include claims in id_token"
|
||||||
|
|
||||||
|
@ -1568,11 +1595,11 @@ msgstr "Internal Host"
|
||||||
msgid "Internal application name, used in URLs."
|
msgid "Internal application name, used in URLs."
|
||||||
msgstr "Internal application name, used in URLs."
|
msgstr "Internal application name, used in URLs."
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:103
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:78
|
||||||
msgid "Internal host"
|
msgid "Internal host"
|
||||||
msgstr "Internal host"
|
msgstr "Internal host"
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:113
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:88
|
||||||
msgid "Internal host SSL Validation"
|
msgid "Internal host SSL Validation"
|
||||||
msgstr "Internal host SSL Validation"
|
msgstr "Internal host SSL Validation"
|
||||||
|
|
||||||
|
@ -1600,15 +1627,15 @@ msgstr "Is superuser"
|
||||||
msgid "Issuer"
|
msgid "Issuer"
|
||||||
msgstr "Issuer"
|
msgstr "Issuer"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:229
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:239
|
||||||
msgid "Issuer mode"
|
msgid "Issuer mode"
|
||||||
msgstr "Issuer mode"
|
msgstr "Issuer mode"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:142
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:152
|
||||||
msgid "JWT Algorithm"
|
msgid "JWT Algorithm"
|
||||||
msgstr "JWT Algorithm"
|
msgstr "JWT Algorithm"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:195
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:205
|
||||||
msgid "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256."
|
msgid "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256."
|
||||||
msgstr "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256."
|
msgstr "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256."
|
||||||
|
|
||||||
|
@ -1697,8 +1724,8 @@ msgstr "Loading"
|
||||||
#: src/pages/groups/GroupForm.ts:127
|
#: src/pages/groups/GroupForm.ts:127
|
||||||
#: src/pages/outposts/OutpostForm.ts:74
|
#: src/pages/outposts/OutpostForm.ts:74
|
||||||
#: src/pages/outposts/OutpostForm.ts:96
|
#: src/pages/outposts/OutpostForm.ts:96
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts:87
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts:86
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts:104
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts:102
|
||||||
#: src/pages/policies/PolicyBindingForm.ts:157
|
#: src/pages/policies/PolicyBindingForm.ts:157
|
||||||
#: src/pages/policies/PolicyBindingForm.ts:173
|
#: src/pages/policies/PolicyBindingForm.ts:173
|
||||||
#: src/pages/policies/PolicyBindingForm.ts:189
|
#: src/pages/policies/PolicyBindingForm.ts:189
|
||||||
|
@ -1707,10 +1734,10 @@ msgstr "Loading"
|
||||||
#: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:108
|
#: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:108
|
||||||
#: src/pages/property-mappings/PropertyMappingTestForm.ts:61
|
#: src/pages/property-mappings/PropertyMappingTestForm.ts:61
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:74
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:74
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:175
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:185
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:193
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:203
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:92
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:116
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:145
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:168
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:71
|
#: src/pages/providers/saml/SAMLProviderForm.ts:71
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:133
|
#: src/pages/providers/saml/SAMLProviderForm.ts:133
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:149
|
#: src/pages/providers/saml/SAMLProviderForm.ts:149
|
||||||
|
@ -1880,7 +1907,7 @@ msgstr "Monitor"
|
||||||
#: src/pages/providers/ProviderListPage.ts:52
|
#: src/pages/providers/ProviderListPage.ts:52
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:56
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:56
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:73
|
#: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:73
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:74
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:98
|
||||||
#: src/pages/providers/proxy/ProxyProviderViewPage.ts:64
|
#: src/pages/providers/proxy/ProxyProviderViewPage.ts:64
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:53
|
#: src/pages/providers/saml/SAMLProviderForm.ts:53
|
||||||
#: src/pages/providers/saml/SAMLProviderImportForm.ts:38
|
#: src/pages/providers/saml/SAMLProviderImportForm.ts:38
|
||||||
|
@ -2381,7 +2408,7 @@ msgid "Property mappings used to user creation."
|
||||||
msgstr "Property mappings used to user creation."
|
msgstr "Property mappings used to user creation."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:81
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:81
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:99
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:123
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:78
|
#: src/pages/providers/saml/SAMLProviderForm.ts:78
|
||||||
#: src/pages/sources/oauth/OAuthSourceForm.ts:122
|
#: src/pages/sources/oauth/OAuthSourceForm.ts:122
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:76
|
#: src/pages/sources/saml/SAMLSourceForm.ts:76
|
||||||
|
@ -2440,30 +2467,30 @@ msgstr "Public key, acquired from https://www.google.com/recaptcha/intro/v3.html
|
||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr "Publisher"
|
msgstr "Publisher"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:147
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:157
|
||||||
msgid "RS256 (Asymmetric Encryption)"
|
msgid "RS256 (Asymmetric Encryption)"
|
||||||
msgstr "RS256 (Asymmetric Encryption)"
|
msgstr "RS256 (Asymmetric Encryption)"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:181
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:191
|
||||||
msgid "RSA Key"
|
msgid "RSA Key"
|
||||||
msgstr "RSA Key"
|
msgstr "RSA Key"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:243
|
#: src/pages/providers/saml/SAMLProviderForm.ts:244
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:200
|
#: src/pages/sources/saml/SAMLSourceForm.ts:200
|
||||||
msgid "RSA-SHA1"
|
msgid "RSA-SHA1"
|
||||||
msgstr "RSA-SHA1"
|
msgstr "RSA-SHA1"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:246
|
#: src/pages/providers/saml/SAMLProviderForm.ts:247
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:203
|
#: src/pages/sources/saml/SAMLSourceForm.ts:203
|
||||||
msgid "RSA-SHA256"
|
msgid "RSA-SHA256"
|
||||||
msgstr "RSA-SHA256"
|
msgstr "RSA-SHA256"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:249
|
#: src/pages/providers/saml/SAMLProviderForm.ts:250
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:206
|
#: src/pages/sources/saml/SAMLSourceForm.ts:206
|
||||||
msgid "RSA-SHA384"
|
msgid "RSA-SHA384"
|
||||||
msgstr "RSA-SHA384"
|
msgstr "RSA-SHA384"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:252
|
#: src/pages/providers/saml/SAMLProviderForm.ts:253
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:209
|
#: src/pages/sources/saml/SAMLSourceForm.ts:209
|
||||||
msgid "RSA-SHA512"
|
msgid "RSA-SHA512"
|
||||||
msgstr "RSA-SHA512"
|
msgstr "RSA-SHA512"
|
||||||
|
@ -2512,7 +2539,7 @@ msgstr "Refresh Code"
|
||||||
msgid "Register device"
|
msgid "Register device"
|
||||||
msgstr "Register device"
|
msgstr "Register device"
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:153
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:176
|
||||||
msgid "Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression."
|
msgid "Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression."
|
||||||
msgstr "Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression."
|
msgstr "Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression."
|
||||||
|
|
||||||
|
@ -2591,22 +2618,22 @@ msgstr "Return to device picker"
|
||||||
msgid "SAML Attribute Name"
|
msgid "SAML Attribute Name"
|
||||||
msgstr "SAML Attribute Name"
|
msgstr "SAML Attribute Name"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:224
|
#: src/pages/providers/saml/SAMLProviderForm.ts:225
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:181
|
#: src/pages/sources/saml/SAMLSourceForm.ts:181
|
||||||
msgid "SHA1"
|
msgid "SHA1"
|
||||||
msgstr "SHA1"
|
msgstr "SHA1"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:227
|
#: src/pages/providers/saml/SAMLProviderForm.ts:228
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:184
|
#: src/pages/sources/saml/SAMLSourceForm.ts:184
|
||||||
msgid "SHA256"
|
msgid "SHA256"
|
||||||
msgstr "SHA256"
|
msgstr "SHA256"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:230
|
#: src/pages/providers/saml/SAMLProviderForm.ts:231
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:187
|
#: src/pages/sources/saml/SAMLSourceForm.ts:187
|
||||||
msgid "SHA384"
|
msgid "SHA384"
|
||||||
msgstr "SHA384"
|
msgstr "SHA384"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:233
|
#: src/pages/providers/saml/SAMLProviderForm.ts:234
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:190
|
#: src/pages/sources/saml/SAMLSourceForm.ts:190
|
||||||
msgid "SHA512"
|
msgid "SHA512"
|
||||||
msgstr "SHA512"
|
msgstr "SHA512"
|
||||||
|
@ -2637,7 +2664,7 @@ msgstr "SMTP Username"
|
||||||
msgid "SSO URL"
|
msgid "SSO URL"
|
||||||
msgstr "SSO URL"
|
msgstr "SSO URL"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:237
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:247
|
||||||
msgid "Same identifier is used for all providers"
|
msgid "Same identifier is used for all providers"
|
||||||
msgstr "Same identifier is used for all providers"
|
msgstr "Same identifier is used for all providers"
|
||||||
|
|
||||||
|
@ -2651,7 +2678,7 @@ msgstr "Scope which the client can specify to access these properties."
|
||||||
|
|
||||||
#: src/elements/oauth/UserCodeList.ts:31
|
#: src/elements/oauth/UserCodeList.ts:31
|
||||||
#: src/elements/oauth/UserRefreshList.ts:31
|
#: src/elements/oauth/UserRefreshList.ts:31
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:156
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:166
|
||||||
msgid "Scopes"
|
msgid "Scopes"
|
||||||
msgstr "Scopes"
|
msgstr "Scopes"
|
||||||
|
|
||||||
|
@ -2686,7 +2713,7 @@ msgstr "Select an identification method."
|
||||||
msgid "Select users to add"
|
msgid "Select users to add"
|
||||||
msgstr "Select users to add"
|
msgstr "Select users to add"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:177
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:187
|
||||||
msgid "Select which scopes can be used by the client. The client stil has to specify the scope to access the data."
|
msgid "Select which scopes can be used by the client. The client stil has to specify the scope to access the data."
|
||||||
msgstr "Select which scopes can be used by the client. The client stil has to specify the scope to access the data."
|
msgstr "Select which scopes can be used by the client. The client stil has to specify the scope to access the data."
|
||||||
|
|
||||||
|
@ -2747,19 +2774,19 @@ msgstr "Service connection"
|
||||||
msgid "Session duration"
|
msgid "Session duration"
|
||||||
msgstr "Session duration"
|
msgstr "Session duration"
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:215
|
#: src/pages/providers/saml/SAMLProviderForm.ts:216
|
||||||
msgid "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
msgid "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
||||||
msgstr "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
msgstr "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:211
|
#: src/pages/providers/saml/SAMLProviderForm.ts:212
|
||||||
msgid "Session valid not on or after"
|
msgid "Session valid not on or after"
|
||||||
msgstr "Session valid not on or after"
|
msgstr "Session valid not on or after"
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:163
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:186
|
||||||
msgid "Set HTTP-Basic Authentication"
|
msgid "Set HTTP-Basic Authentication"
|
||||||
msgstr "Set HTTP-Basic Authentication"
|
msgstr "Set HTTP-Basic Authentication"
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:166
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:189
|
||||||
msgid "Set a custom HTTP-Basic Authentication header based on values from authentik."
|
msgid "Set a custom HTTP-Basic Authentication header based on values from authentik."
|
||||||
msgstr "Set a custom HTTP-Basic Authentication header based on values from authentik."
|
msgstr "Set a custom HTTP-Basic Authentication header based on values from authentik."
|
||||||
|
|
||||||
|
@ -2792,7 +2819,7 @@ msgstr "Shown as the Title in Flow pages."
|
||||||
msgid "Sign up."
|
msgid "Sign up."
|
||||||
msgstr "Sign up."
|
msgstr "Sign up."
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:238
|
#: src/pages/providers/saml/SAMLProviderForm.ts:239
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:195
|
#: src/pages/sources/saml/SAMLSourceForm.ts:195
|
||||||
msgid "Signature algorithm"
|
msgid "Signature algorithm"
|
||||||
msgstr "Signature algorithm"
|
msgstr "Signature algorithm"
|
||||||
|
@ -2809,7 +2836,7 @@ msgstr "Signing keypair"
|
||||||
msgid "Single Prompts that can be used for Prompt Stages."
|
msgid "Single Prompts that can be used for Prompt Stages."
|
||||||
msgstr "Single Prompts that can be used for Prompt Stages."
|
msgstr "Single Prompts that can be used for Prompt Stages."
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:150
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:173
|
||||||
msgid "Skip path regex"
|
msgid "Skip path regex"
|
||||||
msgstr "Skip path regex"
|
msgstr "Skip path regex"
|
||||||
|
|
||||||
|
@ -2947,7 +2974,7 @@ msgstr "Stop impersonation"
|
||||||
msgid "Subject"
|
msgid "Subject"
|
||||||
msgstr "Subject"
|
msgstr "Subject"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:198
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:208
|
||||||
msgid "Subject mode"
|
msgid "Subject mode"
|
||||||
msgstr "Subject mode"
|
msgstr "Subject mode"
|
||||||
|
|
||||||
|
@ -3021,7 +3048,7 @@ msgid "Successfully created prompt."
|
||||||
msgstr "Successfully created prompt."
|
msgstr "Successfully created prompt."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:49
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:49
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:49
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:51
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:46
|
#: src/pages/providers/saml/SAMLProviderForm.ts:46
|
||||||
msgid "Successfully created provider."
|
msgid "Successfully created provider."
|
||||||
msgstr "Successfully created provider."
|
msgstr "Successfully created provider."
|
||||||
|
@ -3157,7 +3184,7 @@ msgid "Successfully updated prompt."
|
||||||
msgstr "Successfully updated prompt."
|
msgstr "Successfully updated prompt."
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:46
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:46
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:46
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:48
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:43
|
#: src/pages/providers/saml/SAMLProviderForm.ts:43
|
||||||
msgid "Successfully updated provider."
|
msgid "Successfully updated provider."
|
||||||
msgstr "Successfully updated provider."
|
msgstr "Successfully updated provider."
|
||||||
|
@ -3254,7 +3281,7 @@ msgstr "System Overview"
|
||||||
msgid "System Tasks"
|
msgid "System Tasks"
|
||||||
msgstr "System Tasks"
|
msgstr "System Tasks"
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts:92
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts:91
|
||||||
msgid "TLS Authentication Certificate"
|
msgid "TLS Authentication Certificate"
|
||||||
msgstr "TLS Authentication Certificate"
|
msgstr "TLS Authentication Certificate"
|
||||||
|
|
||||||
|
@ -3306,7 +3333,7 @@ msgstr "Text: Simple Text input"
|
||||||
msgid "The URL \"{0}\" was not found."
|
msgid "The URL \"{0}\" was not found."
|
||||||
msgstr "The URL \"{0}\" was not found."
|
msgstr "The URL \"{0}\" was not found."
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:123
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:131
|
||||||
msgid "The external URL you'll access the outpost at."
|
msgid "The external URL you'll access the outpost at."
|
||||||
msgstr "The external URL you'll access the outpost at."
|
msgstr "The external URL you'll access the outpost at."
|
||||||
|
|
||||||
|
@ -3395,7 +3422,7 @@ msgstr "Token count"
|
||||||
msgid "Token expiry"
|
msgid "Token expiry"
|
||||||
msgstr "Token expiry"
|
msgstr "Token expiry"
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:136
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:144
|
||||||
msgid "Token validity"
|
msgid "Token validity"
|
||||||
msgstr "Token validity"
|
msgstr "Token validity"
|
||||||
|
|
||||||
|
@ -3616,7 +3643,7 @@ msgstr "Update details"
|
||||||
msgid "Update {0}"
|
msgid "Update {0}"
|
||||||
msgstr "Update {0}"
|
msgstr "Update {0}"
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:107
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:82
|
||||||
msgid "Upstream host that the requests are forwarded to."
|
msgid "Upstream host that the requests are forwarded to."
|
||||||
msgstr "Upstream host that the requests are forwarded to."
|
msgstr "Upstream host that the requests are forwarded to."
|
||||||
|
|
||||||
|
@ -3702,11 +3729,11 @@ msgstr "User's avatar"
|
||||||
msgid "User's display name."
|
msgid "User's display name."
|
||||||
msgstr "User's display name."
|
msgstr "User's display name."
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:67
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:69
|
||||||
msgid "User/Group Attribute used for the password part of the HTTP-Basic Header."
|
msgid "User/Group Attribute used for the password part of the HTTP-Basic Header."
|
||||||
msgstr "User/Group Attribute used for the password part of the HTTP-Basic Header."
|
msgstr "User/Group Attribute used for the password part of the HTTP-Basic Header."
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:61
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:63
|
||||||
msgid "User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used."
|
msgid "User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used."
|
||||||
msgstr "User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used."
|
msgstr "User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used."
|
||||||
|
|
||||||
|
@ -3747,7 +3774,7 @@ msgstr "Using source"
|
||||||
msgid "Valid redirect URLs after a successful authorization flow. Also specify any origins here for Implicit flows."
|
msgid "Valid redirect URLs after a successful authorization flow. Also specify any origins here for Implicit flows."
|
||||||
msgstr "Valid redirect URLs after a successful authorization flow. Also specify any origins here for Implicit flows."
|
msgstr "Valid redirect URLs after a successful authorization flow. Also specify any origins here for Implicit flows."
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:116
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:91
|
||||||
msgid "Validate SSL Certificates of upstream servers."
|
msgid "Validate SSL Certificates of upstream servers."
|
||||||
msgstr "Validate SSL Certificates of upstream servers."
|
msgstr "Validate SSL Certificates of upstream servers."
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,13 @@ msgstr ""
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:141
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:149
|
||||||
|
#: src/pages/providers/saml/SAMLProviderForm.ts:202
|
||||||
|
#: src/pages/stages/user_login/UserLoginStageForm.ts:71
|
||||||
|
msgid "(Format: hours=-1;minutes=-2;seconds=-3)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/policies/BoundPoliciesList.ts:59
|
#: src/pages/policies/BoundPoliciesList.ts:59
|
||||||
msgid "-"
|
msgid "-"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -68,6 +75,10 @@ msgstr ""
|
||||||
msgid "Access Key"
|
msgid "Access Key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:136
|
||||||
|
msgid "Access code validity"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/sources/oauth/OAuthSourceForm.ts:73
|
#: src/pages/sources/oauth/OAuthSourceForm.ts:73
|
||||||
msgid "Access token URL"
|
msgid "Access token URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -106,7 +117,7 @@ msgid "Additional user DN, prepended to the Base DN."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:132
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:132
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:130
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:153
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:117
|
#: src/pages/providers/saml/SAMLProviderForm.ts:117
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:134
|
#: src/pages/sources/saml/SAMLSourceForm.ts:134
|
||||||
msgid "Advanced protocol settings"
|
msgid "Advanced protocol settings"
|
||||||
|
@ -125,7 +136,7 @@ msgstr ""
|
||||||
msgid "Alert"
|
msgid "Alert"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:153
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:163
|
||||||
msgid "Algorithm used to sign the JWT Tokens."
|
msgid "Algorithm used to sign the JWT Tokens."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -216,7 +227,7 @@ msgstr ""
|
||||||
msgid "Are you sure you want to update {0} \"{1}\"?"
|
msgid "Are you sure you want to update {0} \"{1}\"?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:208
|
#: src/pages/providers/saml/SAMLProviderForm.ts:209
|
||||||
msgid "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
msgid "Assertion not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -224,11 +235,7 @@ msgstr ""
|
||||||
msgid "Assertion valid not before"
|
msgid "Assertion valid not before"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:201
|
#: src/pages/providers/saml/SAMLProviderForm.ts:205
|
||||||
msgid "Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:204
|
|
||||||
msgid "Assertion valid not on or after"
|
msgid "Assertion valid not on or after"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -294,7 +301,7 @@ msgid "Authorization URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:62
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:62
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:80
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:104
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:59
|
#: src/pages/providers/saml/SAMLProviderForm.ts:59
|
||||||
#: src/pages/providers/saml/SAMLProviderImportForm.ts:44
|
#: src/pages/providers/saml/SAMLProviderImportForm.ts:44
|
||||||
msgid "Authorization flow"
|
msgid "Authorization flow"
|
||||||
|
@ -338,19 +345,19 @@ msgstr ""
|
||||||
msgid "Base DN"
|
msgid "Base DN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:203
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:213
|
||||||
msgid "Based on the Hashed User ID"
|
msgid "Based on the Hashed User ID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:209
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:219
|
||||||
msgid "Based on the User's Email. This is recommended over the UPN method."
|
msgid "Based on the User's Email. This is recommended over the UPN method."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:212
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:222
|
||||||
msgid "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains."
|
msgid "Based on the User's UPN, only works if user has a 'upn' attribute set. Use this method only if you have different UPN and Mail domains."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:206
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:216
|
||||||
msgid "Based on the username"
|
msgid "Based on the username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -389,7 +396,7 @@ msgstr ""
|
||||||
msgid "Built-in"
|
msgid "Built-in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts:89
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts:88
|
||||||
msgid "CA which the endpoint's Certificate is verified against. Can be left empty for no validation."
|
msgid "CA which the endpoint's Certificate is verified against. Can be left empty for no validation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -422,7 +429,7 @@ msgid "Case insensitive matching"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/crypto/CertificateKeyPairForm.ts:51
|
#: src/pages/crypto/CertificateKeyPairForm.ts:51
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:134
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:157
|
||||||
msgid "Certificate"
|
msgid "Certificate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -446,7 +453,7 @@ msgstr ""
|
||||||
msgid "Certificate-Key Pairs"
|
msgid "Certificate-Key Pairs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts:106
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts:104
|
||||||
msgid "Certificate/Key used for authentication. Can be left empty for no authentication."
|
msgid "Certificate/Key used for authentication. Can be left empty for no authentication."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -586,11 +593,19 @@ msgstr ""
|
||||||
msgid "Configure WebAuthn"
|
msgid "Configure WebAuthn"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:140
|
||||||
|
msgid "Configure how long access codes are valid for."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:148
|
||||||
|
msgid "Configure how long refresh tokens and their id_tokens are valid for."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:193
|
#: src/pages/providers/saml/SAMLProviderForm.ts:193
|
||||||
msgid "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected."
|
msgid "Configure how the NameID value will be created. When left empty, the NameIDPolicy of the incoming request will be respected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:241
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:251
|
||||||
msgid "Configure how the issuer field of the ID Token should be filled."
|
msgid "Configure how the issuer field of the ID Token should be filled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -598,7 +613,11 @@ msgstr ""
|
||||||
msgid "Configure settings relevant to your user profile."
|
msgid "Configure settings relevant to your user profile."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:216
|
#: src/pages/providers/saml/SAMLProviderForm.ts:201
|
||||||
|
msgid "Configure the maximum allowed time drift for an asseration."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:226
|
||||||
msgid "Configure what data should be used as unique User Identifier. For most cases, the default should be fine."
|
msgid "Configure what data should be used as unique User Identifier. For most cases, the default should be fine."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -840,7 +859,7 @@ msgstr ""
|
||||||
msgid "Customisation"
|
msgid "Customisation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:255
|
#: src/pages/providers/saml/SAMLProviderForm.ts:256
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:212
|
#: src/pages/sources/saml/SAMLSourceForm.ts:212
|
||||||
msgid "DSA-SHA1"
|
msgid "DSA-SHA1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -948,7 +967,7 @@ msgid "Determines how authentik sends the response back to the Service Provider.
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/stages/user_login/UserLoginStageForm.ts:70
|
#: src/pages/stages/user_login/UserLoginStageForm.ts:70
|
||||||
msgid "Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3)."
|
msgid "Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:113
|
#: src/pages/stages/authenticator_validate/AuthenticatorValidateStageForm.ts:113
|
||||||
|
@ -959,7 +978,7 @@ msgstr ""
|
||||||
msgid "Device name"
|
msgid "Device name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:219
|
#: src/pages/providers/saml/SAMLProviderForm.ts:220
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:176
|
#: src/pages/sources/saml/SAMLSourceForm.ts:176
|
||||||
msgid "Digest algorithm"
|
msgid "Digest algorithm"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1002,7 +1021,7 @@ msgstr ""
|
||||||
msgid "Dummy stage used for testing. Shows a simple continue button and always passes."
|
msgid "Dummy stage used for testing. Shows a simple continue button and always passes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:234
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:244
|
||||||
msgid "Each provider has a different issuer, based on the application slug."
|
msgid "Each provider has a different issuer, based on the application slug."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1096,6 +1115,14 @@ msgstr ""
|
||||||
msgid "Enable TOTP"
|
msgid "Enable TOTP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:140
|
||||||
|
msgid "Enable forward-auth mode"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:144
|
||||||
|
msgid "Enable this if you don't want to use this provider as a proxy, and want to use it with Traefik's forwardAuth or nginx's auth_request."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/policies/BoundPoliciesList.ts:41
|
#: src/pages/policies/BoundPoliciesList.ts:41
|
||||||
#: src/pages/policies/PolicyBindingForm.ts:199
|
#: src/pages/policies/PolicyBindingForm.ts:199
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts:69
|
#: src/pages/sources/ldap/LDAPSourceForm.ts:69
|
||||||
|
@ -1254,7 +1281,7 @@ msgstr ""
|
||||||
msgid "External Host"
|
msgid "External Host"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:119
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:127
|
||||||
msgid "External host"
|
msgid "External host"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1349,7 +1376,7 @@ msgid "Flow used by an authenticated user to configure this Stage. If empty, use
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:76
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:76
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:94
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:118
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:73
|
#: src/pages/providers/saml/SAMLProviderForm.ts:73
|
||||||
#: src/pages/providers/saml/SAMLProviderImportForm.ts:57
|
#: src/pages/providers/saml/SAMLProviderImportForm.ts:57
|
||||||
msgid "Flow used when authorizing this provider."
|
msgid "Flow used when authorizing this provider."
|
||||||
|
@ -1443,15 +1470,15 @@ msgstr ""
|
||||||
msgid "Groups"
|
msgid "Groups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:150
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:160
|
||||||
msgid "HS256 (Symmetric Encryption)"
|
msgid "HS256 (Symmetric Encryption)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:64
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:66
|
||||||
msgid "HTTP-Basic Password Key"
|
msgid "HTTP-Basic Password Key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:58
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:60
|
||||||
msgid "HTTP-Basic Username Key"
|
msgid "HTTP-Basic Username Key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1470,7 +1497,7 @@ msgstr ""
|
||||||
#: src/pages/events/RuleForm.ts:93
|
#: src/pages/events/RuleForm.ts:93
|
||||||
#: src/pages/groups/GroupForm.ts:131
|
#: src/pages/groups/GroupForm.ts:131
|
||||||
#: src/pages/outposts/OutpostForm.ts:98
|
#: src/pages/outposts/OutpostForm.ts:98
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:178
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:188
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:177
|
#: src/pages/providers/saml/SAMLProviderForm.ts:177
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts:167
|
#: src/pages/sources/ldap/LDAPSourceForm.ts:167
|
||||||
#: src/pages/sources/ldap/LDAPSourceForm.ts:193
|
#: src/pages/sources/ldap/LDAPSourceForm.ts:193
|
||||||
|
@ -1544,11 +1571,11 @@ msgstr ""
|
||||||
msgid "In case you can't access any other method."
|
msgid "In case you can't access any other method."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:226
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:236
|
||||||
msgid "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint."
|
msgid "Include User claims from scopes in the id_token, for applications that don't access the userinfo endpoint."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:223
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:233
|
||||||
msgid "Include claims in id_token"
|
msgid "Include claims in id_token"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1560,11 +1587,11 @@ msgstr ""
|
||||||
msgid "Internal application name, used in URLs."
|
msgid "Internal application name, used in URLs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:103
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:78
|
||||||
msgid "Internal host"
|
msgid "Internal host"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:113
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:88
|
||||||
msgid "Internal host SSL Validation"
|
msgid "Internal host SSL Validation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1592,15 +1619,15 @@ msgstr ""
|
||||||
msgid "Issuer"
|
msgid "Issuer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:229
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:239
|
||||||
msgid "Issuer mode"
|
msgid "Issuer mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:142
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:152
|
||||||
msgid "JWT Algorithm"
|
msgid "JWT Algorithm"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:195
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:205
|
||||||
msgid "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256."
|
msgid "Key used to sign the tokens. Only required when JWT Algorithm is set to RS256."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1689,8 +1716,8 @@ msgstr ""
|
||||||
#: src/pages/groups/GroupForm.ts:127
|
#: src/pages/groups/GroupForm.ts:127
|
||||||
#: src/pages/outposts/OutpostForm.ts:74
|
#: src/pages/outposts/OutpostForm.ts:74
|
||||||
#: src/pages/outposts/OutpostForm.ts:96
|
#: src/pages/outposts/OutpostForm.ts:96
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts:87
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts:86
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts:104
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts:102
|
||||||
#: src/pages/policies/PolicyBindingForm.ts:157
|
#: src/pages/policies/PolicyBindingForm.ts:157
|
||||||
#: src/pages/policies/PolicyBindingForm.ts:173
|
#: src/pages/policies/PolicyBindingForm.ts:173
|
||||||
#: src/pages/policies/PolicyBindingForm.ts:189
|
#: src/pages/policies/PolicyBindingForm.ts:189
|
||||||
|
@ -1699,10 +1726,10 @@ msgstr ""
|
||||||
#: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:108
|
#: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:108
|
||||||
#: src/pages/property-mappings/PropertyMappingTestForm.ts:61
|
#: src/pages/property-mappings/PropertyMappingTestForm.ts:61
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:74
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:74
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:175
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:185
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:193
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:203
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:92
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:116
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:145
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:168
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:71
|
#: src/pages/providers/saml/SAMLProviderForm.ts:71
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:133
|
#: src/pages/providers/saml/SAMLProviderForm.ts:133
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:149
|
#: src/pages/providers/saml/SAMLProviderForm.ts:149
|
||||||
|
@ -1872,7 +1899,7 @@ msgstr ""
|
||||||
#: src/pages/providers/ProviderListPage.ts:52
|
#: src/pages/providers/ProviderListPage.ts:52
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:56
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:56
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:73
|
#: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:73
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:74
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:98
|
||||||
#: src/pages/providers/proxy/ProxyProviderViewPage.ts:64
|
#: src/pages/providers/proxy/ProxyProviderViewPage.ts:64
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:53
|
#: src/pages/providers/saml/SAMLProviderForm.ts:53
|
||||||
#: src/pages/providers/saml/SAMLProviderImportForm.ts:38
|
#: src/pages/providers/saml/SAMLProviderImportForm.ts:38
|
||||||
|
@ -2373,7 +2400,7 @@ msgid "Property mappings used to user creation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:81
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:81
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:99
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:123
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:78
|
#: src/pages/providers/saml/SAMLProviderForm.ts:78
|
||||||
#: src/pages/sources/oauth/OAuthSourceForm.ts:122
|
#: src/pages/sources/oauth/OAuthSourceForm.ts:122
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:76
|
#: src/pages/sources/saml/SAMLSourceForm.ts:76
|
||||||
|
@ -2432,30 +2459,30 @@ msgstr ""
|
||||||
msgid "Publisher"
|
msgid "Publisher"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:147
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:157
|
||||||
msgid "RS256 (Asymmetric Encryption)"
|
msgid "RS256 (Asymmetric Encryption)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:181
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:191
|
||||||
msgid "RSA Key"
|
msgid "RSA Key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:243
|
#: src/pages/providers/saml/SAMLProviderForm.ts:244
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:200
|
#: src/pages/sources/saml/SAMLSourceForm.ts:200
|
||||||
msgid "RSA-SHA1"
|
msgid "RSA-SHA1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:246
|
#: src/pages/providers/saml/SAMLProviderForm.ts:247
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:203
|
#: src/pages/sources/saml/SAMLSourceForm.ts:203
|
||||||
msgid "RSA-SHA256"
|
msgid "RSA-SHA256"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:249
|
#: src/pages/providers/saml/SAMLProviderForm.ts:250
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:206
|
#: src/pages/sources/saml/SAMLSourceForm.ts:206
|
||||||
msgid "RSA-SHA384"
|
msgid "RSA-SHA384"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:252
|
#: src/pages/providers/saml/SAMLProviderForm.ts:253
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:209
|
#: src/pages/sources/saml/SAMLSourceForm.ts:209
|
||||||
msgid "RSA-SHA512"
|
msgid "RSA-SHA512"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -2504,7 +2531,7 @@ msgstr ""
|
||||||
msgid "Register device"
|
msgid "Register device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:153
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:176
|
||||||
msgid "Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression."
|
msgid "Regular expressions for which authentication is not required. Each new line is interpreted as a new Regular Expression."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2583,22 +2610,22 @@ msgstr ""
|
||||||
msgid "SAML Attribute Name"
|
msgid "SAML Attribute Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:224
|
#: src/pages/providers/saml/SAMLProviderForm.ts:225
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:181
|
#: src/pages/sources/saml/SAMLSourceForm.ts:181
|
||||||
msgid "SHA1"
|
msgid "SHA1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:227
|
#: src/pages/providers/saml/SAMLProviderForm.ts:228
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:184
|
#: src/pages/sources/saml/SAMLSourceForm.ts:184
|
||||||
msgid "SHA256"
|
msgid "SHA256"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:230
|
#: src/pages/providers/saml/SAMLProviderForm.ts:231
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:187
|
#: src/pages/sources/saml/SAMLSourceForm.ts:187
|
||||||
msgid "SHA384"
|
msgid "SHA384"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:233
|
#: src/pages/providers/saml/SAMLProviderForm.ts:234
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:190
|
#: src/pages/sources/saml/SAMLSourceForm.ts:190
|
||||||
msgid "SHA512"
|
msgid "SHA512"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -2629,7 +2656,7 @@ msgstr ""
|
||||||
msgid "SSO URL"
|
msgid "SSO URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:237
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:247
|
||||||
msgid "Same identifier is used for all providers"
|
msgid "Same identifier is used for all providers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2643,7 +2670,7 @@ msgstr ""
|
||||||
|
|
||||||
#: src/elements/oauth/UserCodeList.ts:31
|
#: src/elements/oauth/UserCodeList.ts:31
|
||||||
#: src/elements/oauth/UserRefreshList.ts:31
|
#: src/elements/oauth/UserRefreshList.ts:31
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:156
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:166
|
||||||
msgid "Scopes"
|
msgid "Scopes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2678,7 +2705,7 @@ msgstr ""
|
||||||
msgid "Select users to add"
|
msgid "Select users to add"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:177
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:187
|
||||||
msgid "Select which scopes can be used by the client. The client stil has to specify the scope to access the data."
|
msgid "Select which scopes can be used by the client. The client stil has to specify the scope to access the data."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2739,19 +2766,19 @@ msgstr ""
|
||||||
msgid "Session duration"
|
msgid "Session duration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:215
|
#: src/pages/providers/saml/SAMLProviderForm.ts:216
|
||||||
msgid "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
msgid "Session not valid on or after current time + this value (Format: hours=1;minutes=2;seconds=3)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:211
|
#: src/pages/providers/saml/SAMLProviderForm.ts:212
|
||||||
msgid "Session valid not on or after"
|
msgid "Session valid not on or after"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:163
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:186
|
||||||
msgid "Set HTTP-Basic Authentication"
|
msgid "Set HTTP-Basic Authentication"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:166
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:189
|
||||||
msgid "Set a custom HTTP-Basic Authentication header based on values from authentik."
|
msgid "Set a custom HTTP-Basic Authentication header based on values from authentik."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2784,7 +2811,7 @@ msgstr ""
|
||||||
msgid "Sign up."
|
msgid "Sign up."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:238
|
#: src/pages/providers/saml/SAMLProviderForm.ts:239
|
||||||
#: src/pages/sources/saml/SAMLSourceForm.ts:195
|
#: src/pages/sources/saml/SAMLSourceForm.ts:195
|
||||||
msgid "Signature algorithm"
|
msgid "Signature algorithm"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -2801,7 +2828,7 @@ msgstr ""
|
||||||
msgid "Single Prompts that can be used for Prompt Stages."
|
msgid "Single Prompts that can be used for Prompt Stages."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:150
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:173
|
||||||
msgid "Skip path regex"
|
msgid "Skip path regex"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2939,7 +2966,7 @@ msgstr ""
|
||||||
msgid "Subject"
|
msgid "Subject"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:198
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:208
|
||||||
msgid "Subject mode"
|
msgid "Subject mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3013,7 +3040,7 @@ msgid "Successfully created prompt."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:49
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:49
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:49
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:51
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:46
|
#: src/pages/providers/saml/SAMLProviderForm.ts:46
|
||||||
msgid "Successfully created provider."
|
msgid "Successfully created provider."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3149,7 +3176,7 @@ msgid "Successfully updated prompt."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:46
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:46
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:46
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:48
|
||||||
#: src/pages/providers/saml/SAMLProviderForm.ts:43
|
#: src/pages/providers/saml/SAMLProviderForm.ts:43
|
||||||
msgid "Successfully updated provider."
|
msgid "Successfully updated provider."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -3246,7 +3273,7 @@ msgstr ""
|
||||||
msgid "System Tasks"
|
msgid "System Tasks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/outposts/ServiceConnectionDockerForm.ts:92
|
#: src/pages/outposts/ServiceConnectionDockerForm.ts:91
|
||||||
msgid "TLS Authentication Certificate"
|
msgid "TLS Authentication Certificate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3298,7 +3325,7 @@ msgstr ""
|
||||||
msgid "The URL \"{0}\" was not found."
|
msgid "The URL \"{0}\" was not found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:123
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:131
|
||||||
msgid "The external URL you'll access the outpost at."
|
msgid "The external URL you'll access the outpost at."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3383,7 +3410,7 @@ msgstr ""
|
||||||
msgid "Token expiry"
|
msgid "Token expiry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:136
|
#: src/pages/providers/oauth2/OAuth2ProviderForm.ts:144
|
||||||
msgid "Token validity"
|
msgid "Token validity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3604,7 +3631,7 @@ msgstr ""
|
||||||
msgid "Update {0}"
|
msgid "Update {0}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:107
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:82
|
||||||
msgid "Upstream host that the requests are forwarded to."
|
msgid "Upstream host that the requests are forwarded to."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3690,11 +3717,11 @@ msgstr ""
|
||||||
msgid "User's display name."
|
msgid "User's display name."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:67
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:69
|
||||||
msgid "User/Group Attribute used for the password part of the HTTP-Basic Header."
|
msgid "User/Group Attribute used for the password part of the HTTP-Basic Header."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:61
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:63
|
||||||
msgid "User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used."
|
msgid "User/Group Attribute used for the user part of the HTTP-Basic Header. If not set, the user's Email address is used."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3735,7 +3762,7 @@ msgstr ""
|
||||||
msgid "Valid redirect URLs after a successful authorization flow. Also specify any origins here for Implicit flows."
|
msgid "Valid redirect URLs after a successful authorization flow. Also specify any origins here for Implicit flows."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/pages/providers/proxy/ProxyProviderForm.ts:116
|
#: src/pages/providers/proxy/ProxyProviderForm.ts:91
|
||||||
msgid "Validate SSL Certificates of upstream servers."
|
msgid "Validate SSL Certificates of upstream servers."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -129,11 +129,21 @@ export class OAuth2ProviderFormPage extends Form<OAuth2Provider> {
|
||||||
${t`Advanced protocol settings`}
|
${t`Advanced protocol settings`}
|
||||||
</span>
|
</span>
|
||||||
<div slot="body" class="pf-c-form">
|
<div slot="body" class="pf-c-form">
|
||||||
|
<ak-form-element-horizontal
|
||||||
|
label=${t`Access code validity`}
|
||||||
|
?required=${true}
|
||||||
|
name="accessCodeValidity">
|
||||||
|
<input type="text" value="${first(this.provider?.accessCodeValidity, "minutes=1")}" class="pf-c-form-control" required>
|
||||||
|
<p class="pf-c-form__helper-text">${t`Configure how long access codes are valid for.`}</p>
|
||||||
|
<p class="pf-c-form__helper-text">${t`(Format: hours=-1;minutes=-2;seconds=-3).`}</p>
|
||||||
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`Token validity`}
|
label=${t`Token validity`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="tokenValidity">
|
name="tokenValidity">
|
||||||
<input type="text" value="${this.provider?.tokenValidity || "minutes=10"}" class="pf-c-form-control" required>
|
<input type="text" value="${first(this.provider?.tokenValidity, "minutes=10")}" class="pf-c-form-control" required>
|
||||||
|
<p class="pf-c-form__helper-text">${t`Configure how long refresh tokens and their id_tokens are valid for.`}</p>
|
||||||
|
<p class="pf-c-form__helper-text">${t`(Format: hours=-1;minutes=-2;seconds=-3).`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`JWT Algorithm`}
|
label=${t`JWT Algorithm`}
|
||||||
|
|
|
@ -19,6 +19,7 @@ export class ProxyProviderFormPage extends Form<ProxyProvider> {
|
||||||
}).then(provider => {
|
}).then(provider => {
|
||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
this.showHttpBasic = first(provider.basicAuthEnabled, true);
|
this.showHttpBasic = first(provider.basicAuthEnabled, true);
|
||||||
|
this.showInternalServer = first(!provider.forwardAuthMode, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +29,9 @@ export class ProxyProviderFormPage extends Form<ProxyProvider> {
|
||||||
@property({type: Boolean})
|
@property({type: Boolean})
|
||||||
showHttpBasic = true;
|
showHttpBasic = true;
|
||||||
|
|
||||||
|
@property({type: Boolean})
|
||||||
|
showInternalServer = true;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.provider) {
|
if (this.provider) {
|
||||||
return t`Successfully updated provider.`;
|
return t`Successfully updated provider.`;
|
||||||
|
@ -67,6 +71,28 @@ export class ProxyProviderFormPage extends Form<ProxyProvider> {
|
||||||
</ak-form-element-horizontal>`;
|
</ak-form-element-horizontal>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderInternalServer(): TemplateResult {
|
||||||
|
if (!this.showInternalServer) {
|
||||||
|
return html``;
|
||||||
|
}
|
||||||
|
return html`<ak-form-element-horizontal
|
||||||
|
label=${t`Internal host`}
|
||||||
|
?required=${true}
|
||||||
|
name="internalHost">
|
||||||
|
<input type="text" value="${ifDefined(this.provider?.internalHost)}" class="pf-c-form-control" required>
|
||||||
|
<p class="pf-c-form__helper-text">${t`Upstream host that the requests are forwarded to.`}</p>
|
||||||
|
</ak-form-element-horizontal>
|
||||||
|
<ak-form-element-horizontal name="internalHostSslValidation">
|
||||||
|
<div class="pf-c-check">
|
||||||
|
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.provider?.internalHostSslValidation, true)}>
|
||||||
|
<label class="pf-c-check__label">
|
||||||
|
${t`Internal host SSL Validation`}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<p class="pf-c-form__helper-text">${t`Validate SSL Certificates of upstream servers.`}</p>
|
||||||
|
</ak-form-element-horizontal>`;
|
||||||
|
}
|
||||||
|
|
||||||
renderForm(): TemplateResult {
|
renderForm(): TemplateResult {
|
||||||
return html`<form class="pf-c-form pf-m-horizontal">
|
return html`<form class="pf-c-form pf-m-horizontal">
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
|
@ -97,22 +123,6 @@ export class ProxyProviderFormPage extends Form<ProxyProvider> {
|
||||||
${t`Protocol settings`}
|
${t`Protocol settings`}
|
||||||
</span>
|
</span>
|
||||||
<div slot="body" class="pf-c-form">
|
<div slot="body" class="pf-c-form">
|
||||||
<ak-form-element-horizontal
|
|
||||||
label=${t`Internal host`}
|
|
||||||
?required=${true}
|
|
||||||
name="internalHost">
|
|
||||||
<input type="text" value="${ifDefined(this.provider?.internalHost)}" class="pf-c-form-control" required>
|
|
||||||
<p class="pf-c-form__helper-text">${t`Upstream host that the requests are forwarded to.`}</p>
|
|
||||||
</ak-form-element-horizontal>
|
|
||||||
<ak-form-element-horizontal name="internalHostSslValidation">
|
|
||||||
<div class="pf-c-check">
|
|
||||||
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.provider?.internalHostSslValidation, true)}>
|
|
||||||
<label class="pf-c-check__label">
|
|
||||||
${t`Internal host SSL Validation`}
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<p class="pf-c-form__helper-text">${t`Validate SSL Certificates of upstream servers.`}</p>
|
|
||||||
</ak-form-element-horizontal>
|
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`External host`}
|
label=${t`External host`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
|
@ -120,6 +130,21 @@ export class ProxyProviderFormPage extends Form<ProxyProvider> {
|
||||||
<input type="text" value="${ifDefined(this.provider?.externalHost)}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.provider?.externalHost)}" class="pf-c-form-control" required>
|
||||||
<p class="pf-c-form__helper-text">${t`The external URL you'll access the outpost at.`}</p>
|
<p class="pf-c-form__helper-text">${t`The external URL you'll access the outpost at.`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
|
<ak-form-element-horizontal name="forwardAuthMode">
|
||||||
|
<div class="pf-c-check">
|
||||||
|
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.provider?.forwardAuthMode, false)} @change=${(ev: Event) => {
|
||||||
|
const el = ev.target as HTMLInputElement;
|
||||||
|
this.showInternalServer = !el.checked;
|
||||||
|
}}>
|
||||||
|
<label class="pf-c-check__label">
|
||||||
|
${t`Enable forward-auth mode`}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<p class="pf-c-form__helper-text">
|
||||||
|
${t`Enable this if you don't want to use this provider as a proxy, and want to use it with Traefik's forwardAuth or nginx's auth_request.`}
|
||||||
|
</p>
|
||||||
|
</ak-form-element-horizontal>
|
||||||
|
${this.renderInternalServer()}
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>
|
||||||
|
|
||||||
|
|
|
@ -189,7 +189,8 @@ export class SAMLProviderFormPage extends Form<SAMLProvider> {
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="assertionValidNotBefore">
|
name="assertionValidNotBefore">
|
||||||
<input type="text" value="${this.provider?.assertionValidNotBefore || "minutes=-5"}" class="pf-c-form-control" required>
|
<input type="text" value="${this.provider?.assertionValidNotBefore || "minutes=-5"}" class="pf-c-form-control" required>
|
||||||
<p class="pf-c-form__helper-text">${t`Assertion valid not before current time + this value (Format: hours=-1;minutes=-2;seconds=-3).`}</p>
|
<p class="pf-c-form__helper-text">${t`Configure the maximum allowed time drift for an asseration.`}</p>
|
||||||
|
<p class="pf-c-form__helper-text">${t`(Format: hours=-1;minutes=-2;seconds=-3).`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`Assertion valid not on or after`}
|
label=${t`Assertion valid not on or after`}
|
||||||
|
|
|
@ -4,9 +4,9 @@ import { customElement, property } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
import { Form } from "../../../elements/forms/Form";
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
|
import { first } from "../../../utils";
|
||||||
|
|
||||||
@customElement("ak-stage-user-login-form")
|
@customElement("ak-stage-user-login-form")
|
||||||
export class UserLoginStageForm extends Form<UserLoginStage> {
|
export class UserLoginStageForm extends Form<UserLoginStage> {
|
||||||
|
@ -52,7 +52,7 @@ export class UserLoginStageForm extends Form<UserLoginStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${first(this.stage?.name, "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -62,9 +62,10 @@ export class UserLoginStageForm extends Form<UserLoginStage> {
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`Session duration`}
|
label=${t`Session duration`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="privateKey">
|
name="sessionDuration">
|
||||||
<input type="text" value="${ifDefined(this.stage?.sessionDuration || "seconds=0")}" class="pf-c-form-control" required>
|
<input type="text" value="${first(this.stage?.sessionDuration, "seconds=0")}" class="pf-c-form-control" required>
|
||||||
<p class="pf-c-form__helper-text">${t`Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3).`}</p>
|
<p class="pf-c-form__helper-text">${t`Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed.`}</p>
|
||||||
|
<p class="pf-c-form__helper-text">${t`(Format: hours=-1;minutes=-2;seconds=-3).`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>
|
</ak-form-group>
|
||||||
|
|
|
@ -20,7 +20,7 @@ Add the following block to your `.env` file:
|
||||||
AUTHENTIK_IMAGE=docker.beryju.org/authentik/server
|
AUTHENTIK_IMAGE=docker.beryju.org/authentik/server
|
||||||
AUTHENTIK_IMAGE_STATIC=docker.beryju.org/authentik/static
|
AUTHENTIK_IMAGE_STATIC=docker.beryju.org/authentik/static
|
||||||
AUTHENTIK_TAG=gh-next
|
AUTHENTIK_TAG=gh-next
|
||||||
AUTHENTIK_OUTPOSTS__DOCKER_IMAGE_BASE=docker.beryju.org/authentik/outpost
|
AUTHENTIK_OUTPOSTS__DOCKER_IMAGE_BASE=docker.beryju.org/authentik/outpost-%(type)s:gh-next
|
||||||
```
|
```
|
||||||
|
|
||||||
Afterwards, run the upgrade commands from the latest releasae notes.
|
Afterwards, run the upgrade commands from the latest releasae notes.
|
||||||
|
@ -32,7 +32,7 @@ Add the following block to your `values.yml` file:
|
||||||
image:
|
image:
|
||||||
name: docker.beryju.org/authentik/server
|
name: docker.beryju.org/authentik/server
|
||||||
name_static: docker.beryju.org/authentik/static
|
name_static: docker.beryju.org/authentik/static
|
||||||
name_outposts: docker.beryju.org/authentik/outpost
|
name_outposts: docker.beryju.org/authentik/outpost-%(type)s:gh-next
|
||||||
tag: gh-next
|
tag: gh-next
|
||||||
# pullPolicy: Always to ensure you always get the latest version
|
# pullPolicy: Always to ensure you always get the latest version
|
||||||
pullPolicy: Always
|
pullPolicy: Always
|
||||||
|
|
|
@ -37,7 +37,10 @@ It is also recommended to configure global email credentials. These are used by
|
||||||
image:
|
image:
|
||||||
name: beryju/authentik
|
name: beryju/authentik
|
||||||
name_static: beryju/authentik-static
|
name_static: beryju/authentik-static
|
||||||
name_outposts: beryju/authentik # Prefix used for Outpost deployments, Outpost type and version is appended
|
# Image used for managed outposts. Placeholders:
|
||||||
|
# %(type)s: Outpost type; proxy, ldap, etc
|
||||||
|
# %(version)s: Current version; 2021.4.1
|
||||||
|
name_outposts: "beryju/authentik-%(type)s:%(version)s"
|
||||||
tag: 2021.4.4
|
tag: 2021.4.4
|
||||||
|
|
||||||
serverReplicas: 1
|
serverReplicas: 1
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
---
|
|
||||||
title: Proxy Outpost
|
|
||||||
---
|
|
||||||
|
|
||||||
The proxy outpost sets the following headers:
|
|
||||||
|
|
||||||
```
|
|
||||||
X-Auth-Username: akadmin # The username of the currently logged in user
|
|
||||||
X-Forwarded-Email: root@localhost # The email address of the currently logged in user
|
|
||||||
X-Forwarded-Preferred-Username: akadmin # The username of the currently logged in user
|
|
||||||
X-Forwarded-User: 900347b8a29876b45ca6f75722635ecfedf0e931c6022e3a29a8aa13fb5516fb # The hashed identifier of the currently logged in user.
|
|
||||||
```
|
|
||||||
|
|
||||||
Additionally, you can set `additionalHeaders` on groups or users to set additional headers.
|
|
||||||
|
|
||||||
If you enable *Set HTTP-Basic Authentication* option, the HTTP Authorization header is being set.
|
|
|
@ -0,0 +1,229 @@
|
||||||
|
---
|
||||||
|
title: Proxy Outpost
|
||||||
|
---
|
||||||
|
|
||||||
|
The proxy outpost sets the following headers:
|
||||||
|
|
||||||
|
```
|
||||||
|
X-Auth-Username: akadmin # The username of the currently logged in user
|
||||||
|
X-Forwarded-Email: root@localhost # The email address of the currently logged in user
|
||||||
|
X-Forwarded-Preferred-Username: akadmin # The username of the currently logged in user
|
||||||
|
X-Forwarded-User: 900347b8a29876b45ca6f75722635ecfedf0e931c6022e3a29a8aa13fb5516fb # The hashed identifier of the currently logged in user.
|
||||||
|
```
|
||||||
|
|
||||||
|
Additionally, you can set `additionalHeaders` on groups or users to set additional headers.
|
||||||
|
|
||||||
|
If you enable *Set HTTP-Basic Authentication* option, the HTTP Authorization header is being set.
|
||||||
|
|
||||||
|
# Forward auth
|
||||||
|
|
||||||
|
To use forward auth instead of proxying, you have to change a couple of settings. In the Proxy Provider, make sure to enable `Enable forward-auth mode` on the provider.
|
||||||
|
|
||||||
|
## Nginx
|
||||||
|
|
||||||
|
import Tabs from '@theme/Tabs';
|
||||||
|
import TabItem from '@theme/TabItem';
|
||||||
|
|
||||||
|
<Tabs
|
||||||
|
defaultValue="standalone-nginx"
|
||||||
|
values={[
|
||||||
|
{label: 'Standalone nginx', value: 'standalone-nginx'},
|
||||||
|
{label: 'Ingress', value: 'ingress'},
|
||||||
|
]}>
|
||||||
|
<TabItem value="standalone-nginx">
|
||||||
|
|
||||||
|
```
|
||||||
|
location /akprox {
|
||||||
|
proxy_pass http://*ip of your outpost*:4180;
|
||||||
|
proxy_set_header X-Forwarded-Host $http_host;
|
||||||
|
error_page 401 = @akprox_signin;
|
||||||
|
}
|
||||||
|
|
||||||
|
location @akprox_signin {
|
||||||
|
internal;
|
||||||
|
add_header Set-Cookie $auth_cookie;
|
||||||
|
return 302 /akprox/start?rd=$escaped_request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
auth_request /akprox/auth?nginx;
|
||||||
|
# All your other options...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="ingress">
|
||||||
|
Create a new ingress for the outpost
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: authentik-outpost
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: *external host that you configured in authentik*
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- backend:
|
||||||
|
serviceName: authentik-outpost-*uuid of the service generated by authentik*
|
||||||
|
servicePort: 4180
|
||||||
|
path: /akprox
|
||||||
|
```
|
||||||
|
|
||||||
|
This ingress handles authentication requests, and the sign-in flow.
|
||||||
|
|
||||||
|
Add these annotations to the ingress you want to protect
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
nginx.ingress.kubernetes.io/auth-url: http://*external host that you configured in authentik*:4180/akprox/auth?nginx
|
||||||
|
nginx.ingress.kubernetes.io/auth-signin: http://*external host that you configured in authentik*:4180/akprox/start?rd=$escaped_request_uri
|
||||||
|
nginx.ingress.kubernetes.io/auth-snippet: |
|
||||||
|
proxy_set_header X-Forwarded-Host $http_host;
|
||||||
|
```
|
||||||
|
</TabItem>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
## Traefik
|
||||||
|
|
||||||
|
<Tabs
|
||||||
|
defaultValue="standalone-traefik"
|
||||||
|
values={[
|
||||||
|
{label: 'Standalone traefik', value: 'standalone-traefik'},
|
||||||
|
{label: 'docker-compose', value: 'docker-compose'},
|
||||||
|
{label: 'Ingress', value: 'ingress'},
|
||||||
|
]}>
|
||||||
|
<TabItem value="standalone-traefik">
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
http:
|
||||||
|
middlewares:
|
||||||
|
authentik:
|
||||||
|
forwardAuth:
|
||||||
|
address: http://authentik-outpost-*uuid of the service generated by authentik*:4180/akprox/auth?traefik
|
||||||
|
trustForwardHeader: true
|
||||||
|
authResponseHeaders:
|
||||||
|
- Set-Cookie
|
||||||
|
- X-Auth-Username
|
||||||
|
- X-Forwarded-Email
|
||||||
|
- X-Forwarded-Preferred-Username
|
||||||
|
- X-Forwarded-User
|
||||||
|
routers:
|
||||||
|
default-router:
|
||||||
|
rule: "Host(`*external host that you configured in authentik*`)"
|
||||||
|
middlewares:
|
||||||
|
- name: authentik
|
||||||
|
priority: 10
|
||||||
|
services: # Unchanged
|
||||||
|
default-router-auth
|
||||||
|
match: "Host(`*external host that you configured in authentik*`) && PathPrefix(`/akprox/`)"
|
||||||
|
priority: 15
|
||||||
|
services: http://*ip of your outpost*:4180/akprox
|
||||||
|
```
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="docker-compose">
|
||||||
|
```yaml
|
||||||
|
version: '3.7'
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
image: traefik:v2.2
|
||||||
|
container_name: traefik
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
labels:
|
||||||
|
traefik.enable: true
|
||||||
|
traefik.http.routers.api.rule: Host(`traefik.example.com`)
|
||||||
|
traefik.http.routers.api.entrypoints: https
|
||||||
|
traefik.http.routers.api.service: api@internal
|
||||||
|
traefik.http.routers.api.tls: true
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
- 443:443
|
||||||
|
command:
|
||||||
|
- '--api'
|
||||||
|
- '--log=true'
|
||||||
|
- '--log.level=DEBUG'
|
||||||
|
- '--log.filepath=/var/log/traefik.log'
|
||||||
|
- '--providers.docker=true'
|
||||||
|
- '--providers.docker.exposedByDefault=false'
|
||||||
|
- '--entrypoints.http=true'
|
||||||
|
- '--entrypoints.http.address=:80'
|
||||||
|
- '--entrypoints.http.http.redirections.entrypoint.to=https'
|
||||||
|
- '--entrypoints.http.http.redirections.entrypoint.scheme=https'
|
||||||
|
- '--entrypoints.https=true'
|
||||||
|
- '--entrypoints.https.address=:443'
|
||||||
|
|
||||||
|
authentik_proxy:
|
||||||
|
image: beryju/authentik-proxy:2021.4.4
|
||||||
|
ports:
|
||||||
|
- 4180:4180
|
||||||
|
- 4443:4443
|
||||||
|
environment:
|
||||||
|
AUTHENTIK_HOST: https://your-authentik.tld
|
||||||
|
AUTHENTIK_INSECURE: "false"
|
||||||
|
AUTHENTIK_TOKEN: token-generated-by-authentik
|
||||||
|
labels:
|
||||||
|
traefik.enable: true
|
||||||
|
traefik.port: 4180
|
||||||
|
traefik.http.routers.authentik.rule: Host(`*external host that you configured in authentik*`) && PathPrefix(`/akprox/`)
|
||||||
|
traefik.http.routers.authentik.entrypoints: https
|
||||||
|
traefik.http.routers.authentik.tls: true
|
||||||
|
traefik.http.middlewares.authentik.forwardauth.address: http://authentik_proxy:4180/akprox/auth?traefik
|
||||||
|
traefik.http.middlewares.authentik.forwardauth.trustForwardHeader: true
|
||||||
|
traefik.http.middlewares.authentik.forwardauth.authResponseHeaders: Set-Cookie,X-Auth-Username,X-Forwarded-Email,X-Forwarded-Preferred-Username,X-Forwarded-User
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
whoami:
|
||||||
|
image: containous/whoami
|
||||||
|
labels:
|
||||||
|
traefik.enable: true
|
||||||
|
traefik.http.routers.whoami.rule: Host(`*external host that you configured in authentik*`)
|
||||||
|
traefik.http.routers.whoami.entrypoints: https
|
||||||
|
traefik.http.routers.whoami.tls: true
|
||||||
|
traefik.http.routers.whoami.middlewares: authentik@docker
|
||||||
|
restart: unless-stopped
|
||||||
|
```
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="ingress">
|
||||||
|
Create a middleware:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: authentik
|
||||||
|
spec:
|
||||||
|
forwardAuth:
|
||||||
|
address: http://authentik-outpost-*uuid of the service generated by authentik*:4180/akprox/auth?traefik
|
||||||
|
trustForwardHeader: true
|
||||||
|
authResponseHeaders:
|
||||||
|
- Set-Cookie
|
||||||
|
- X-Auth-Username
|
||||||
|
- X-Forwarded-Email
|
||||||
|
- X-Forwarded-Preferred-Username
|
||||||
|
- X-Forwarded-User
|
||||||
|
```
|
||||||
|
|
||||||
|
Add the following settings to your IngressRoute
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
spec:
|
||||||
|
routes:
|
||||||
|
- kind: Rule
|
||||||
|
match: "Host(`*external host that you configured in authentik*`)"
|
||||||
|
middlewares:
|
||||||
|
- name: authentik
|
||||||
|
priority: 10
|
||||||
|
services: # Unchanged
|
||||||
|
- kind: Rule
|
||||||
|
match: "Host(`*external host that you configured in authentik*`) && PathPrefix(`/akprox/`)"
|
||||||
|
priority: 15
|
||||||
|
services:
|
||||||
|
- kind: Service
|
||||||
|
name: authentik-outpost-*uuid of the service generated by authentik*
|
||||||
|
port: 4180
|
||||||
|
```
|
||||||
|
</TabItem>
|
||||||
|
</Tabs>
|
|
@ -112,6 +112,22 @@ slug: "2021.4"
|
||||||
- web/admin: only pre-select items when creating a new object
|
- web/admin: only pre-select items when creating a new object
|
||||||
- web/flows: fix Sentry not being loaded correctly
|
- web/flows: fix Sentry not being loaded correctly
|
||||||
|
|
||||||
|
## Fixed in 2021.4.5
|
||||||
|
|
||||||
|
- core: fix text on error pages being hard to read
|
||||||
|
- outposts: only kill docker container if its running
|
||||||
|
- root: add middleware to properly report websocket connection to sentry
|
||||||
|
- root: don't use .error of structlog to not send to sentry
|
||||||
|
- stages/email: catch ValueError when global email settings are invalid
|
||||||
|
- stages/invitation: accept token from prompt_data
|
||||||
|
- stages/invitation: fix token not being loaded correctly from query string
|
||||||
|
- web: fix text-colour for form help text
|
||||||
|
- web: ignore network errors for sentry
|
||||||
|
- web/admin: don't show docker certs as required
|
||||||
|
- web/flows: fix redirect loop when sentry is enabled on flow views
|
||||||
|
- web/flows: include ShadyDOM, always enable ShadyDOM for flow interface, improve compatibility with password
|
||||||
|
- web/flows/identification: fix phrasing account recovery
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
This release does not introduce any new requirements.
|
This release does not introduce any new requirements.
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -11,7 +11,7 @@
|
||||||
"serve": "docusaurus serve"
|
"serve": "docusaurus serve"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/preset-classic": "2.0.0-alpha.73",
|
"@docusaurus/preset-classic": "2.0.0-alpha.74",
|
||||||
"@mdx-js/react": "^1.6.22",
|
"@mdx-js/react": "^1.6.22",
|
||||||
"clsx": "^1.1.1",
|
"clsx": "^1.1.1",
|
||||||
"postcss": "^8.2.13",
|
"postcss": "^8.2.13",
|
||||||
|
|
Reference in New Issue