providers: add preview for mappings (#4254)
* preview Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: show provider page on application page Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * use oauth2 end session url instead of direct interface Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * dont show provider page on application page for now Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * add UI for preview Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * translate and release notes Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * fix lint Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * separate saml api files Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * add api tests Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		| @ -49,11 +49,12 @@ from authentik.policies.hibp.api import HaveIBeenPwendPolicyViewSet | |||||||
| from authentik.policies.password.api import PasswordPolicyViewSet | from authentik.policies.password.api import PasswordPolicyViewSet | ||||||
| from authentik.policies.reputation.api import ReputationPolicyViewSet, ReputationViewSet | from authentik.policies.reputation.api import ReputationPolicyViewSet, ReputationViewSet | ||||||
| from authentik.providers.ldap.api import LDAPOutpostConfigViewSet, LDAPProviderViewSet | from authentik.providers.ldap.api import LDAPOutpostConfigViewSet, LDAPProviderViewSet | ||||||
| from authentik.providers.oauth2.api.provider import OAuth2ProviderViewSet | from authentik.providers.oauth2.api.providers import OAuth2ProviderViewSet | ||||||
| from authentik.providers.oauth2.api.scope import ScopeMappingViewSet | from authentik.providers.oauth2.api.scopes import ScopeMappingViewSet | ||||||
| from authentik.providers.oauth2.api.tokens import AuthorizationCodeViewSet, RefreshTokenViewSet | from authentik.providers.oauth2.api.tokens import AuthorizationCodeViewSet, RefreshTokenViewSet | ||||||
| from authentik.providers.proxy.api import ProxyOutpostConfigViewSet, ProxyProviderViewSet | from authentik.providers.proxy.api import ProxyOutpostConfigViewSet, ProxyProviderViewSet | ||||||
| from authentik.providers.saml.api import SAMLPropertyMappingViewSet, SAMLProviderViewSet | from authentik.providers.saml.api.property_mapping import SAMLPropertyMappingViewSet | ||||||
|  | from authentik.providers.saml.api.providers import SAMLProviderViewSet | ||||||
| from authentik.sources.ldap.api import LDAPPropertyMappingViewSet, LDAPSourceViewSet | from authentik.sources.ldap.api import LDAPPropertyMappingViewSet, LDAPSourceViewSet | ||||||
| from authentik.sources.oauth.api.source import OAuthSourceViewSet | from authentik.sources.oauth.api.source import OAuthSourceViewSet | ||||||
| from authentik.sources.oauth.api.source_connection import UserOAuthSourceConnectionViewSet | from authentik.sources.oauth.api.source_connection import UserOAuthSourceConnectionViewSet | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| from typing import Any | from typing import Any | ||||||
|  |  | ||||||
| from django.db.models import Model | from django.db.models import Model | ||||||
| from rest_framework.fields import CharField, IntegerField | from rest_framework.fields import CharField, IntegerField, JSONField | ||||||
| from rest_framework.serializers import Serializer, SerializerMethodField, ValidationError | from rest_framework.serializers import Serializer, SerializerMethodField, ValidationError | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -23,6 +23,12 @@ class PassiveSerializer(Serializer): | |||||||
|         return Model() |         return Model() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PropertyMappingPreviewSerializer(PassiveSerializer): | ||||||
|  |     """Preview how the current user is mapped via the property mappings selected in a provider""" | ||||||
|  |  | ||||||
|  |     preview = JSONField(read_only=True) | ||||||
|  |  | ||||||
|  |  | ||||||
| class MetaNameSerializer(PassiveSerializer): | class MetaNameSerializer(PassiveSerializer): | ||||||
|     """Add verbose names to response""" |     """Add verbose names to response""" | ||||||
|  |  | ||||||
|  | |||||||
| @ -8,11 +8,12 @@ from rest_framework.request import Request | |||||||
| from rest_framework.response import Response | from rest_framework.response import Response | ||||||
| from rest_framework.viewsets import ModelViewSet | from rest_framework.viewsets import ModelViewSet | ||||||
| 
 | 
 | ||||||
|  | from authentik.api.decorators import permission_required | ||||||
| from authentik.core.api.providers import ProviderSerializer | from authentik.core.api.providers import ProviderSerializer | ||||||
| from authentik.core.api.used_by import UsedByMixin | from authentik.core.api.used_by import UsedByMixin | ||||||
| from authentik.core.api.utils import PassiveSerializer | from authentik.core.api.utils import PassiveSerializer, PropertyMappingPreviewSerializer | ||||||
| from authentik.core.models import Provider | from authentik.core.models import Provider | ||||||
| from authentik.providers.oauth2.models import OAuth2Provider | from authentik.providers.oauth2.models import OAuth2Provider, RefreshToken, ScopeMapping | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class OAuth2ProviderSerializer(ProviderSerializer): | class OAuth2ProviderSerializer(ProviderSerializer): | ||||||
| @ -115,7 +116,7 @@ class OAuth2ProviderViewSet(UsedByMixin, ModelViewSet): | |||||||
|             ) |             ) | ||||||
|             data["logout"] = request.build_absolute_uri( |             data["logout"] = request.build_absolute_uri( | ||||||
|                 reverse( |                 reverse( | ||||||
|                     "authentik_core:if-session-end", |                     "authentik_providers_oauth2:end-session", | ||||||
|                     kwargs={"application_slug": provider.application.slug}, |                     kwargs={"application_slug": provider.application.slug}, | ||||||
|                 ) |                 ) | ||||||
|             ) |             ) | ||||||
| @ -128,3 +129,28 @@ class OAuth2ProviderViewSet(UsedByMixin, ModelViewSet): | |||||||
|         except Provider.application.RelatedObjectDoesNotExist:  # pylint: disable=no-member |         except Provider.application.RelatedObjectDoesNotExist:  # pylint: disable=no-member | ||||||
|             pass |             pass | ||||||
|         return Response(data) |         return Response(data) | ||||||
|  | 
 | ||||||
|  |     @permission_required( | ||||||
|  |         "authentik_providers_oauth2.view_oauth2provider", | ||||||
|  |     ) | ||||||
|  |     @extend_schema( | ||||||
|  |         responses={ | ||||||
|  |             200: PropertyMappingPreviewSerializer(), | ||||||
|  |             400: OpenApiResponse(description="Bad request"), | ||||||
|  |         }, | ||||||
|  |     ) | ||||||
|  |     @action(detail=True, methods=["GET"]) | ||||||
|  |     # pylint: disable=invalid-name, unused-argument | ||||||
|  |     def preview_user(self, request: Request, pk: int) -> Response: | ||||||
|  |         """Preview user data for provider""" | ||||||
|  |         provider: OAuth2Provider = self.get_object() | ||||||
|  |         temp_token = RefreshToken() | ||||||
|  |         temp_token.scope = ScopeMapping.objects.filter(provider=provider).values_list( | ||||||
|  |             "scope_name", flat=True | ||||||
|  |         ) | ||||||
|  |         temp_token.provider = provider | ||||||
|  |         temp_token.user = request.user | ||||||
|  |         serializer = PropertyMappingPreviewSerializer( | ||||||
|  |             instance={"preview": temp_token.create_id_token(request.user, request).to_dict()} | ||||||
|  |         ) | ||||||
|  |         return Response(serializer.data) | ||||||
| @ -12,7 +12,7 @@ from rest_framework.viewsets import GenericViewSet | |||||||
| from authentik.core.api.used_by import UsedByMixin | from authentik.core.api.used_by import UsedByMixin | ||||||
| from authentik.core.api.users import UserSerializer | from authentik.core.api.users import UserSerializer | ||||||
| from authentik.core.api.utils import MetaNameSerializer | from authentik.core.api.utils import MetaNameSerializer | ||||||
| from authentik.providers.oauth2.api.provider import OAuth2ProviderSerializer | from authentik.providers.oauth2.api.providers import OAuth2ProviderSerializer | ||||||
| from authentik.providers.oauth2.models import AuthorizationCode, RefreshToken | from authentik.providers.oauth2.models import AuthorizationCode, RefreshToken | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -128,7 +128,7 @@ class ScopeMapping(PropertyMapping): | |||||||
|  |  | ||||||
|     @property |     @property | ||||||
|     def serializer(self) -> type[Serializer]: |     def serializer(self) -> type[Serializer]: | ||||||
|         from authentik.providers.oauth2.api.scope import ScopeMappingSerializer |         from authentik.providers.oauth2.api.scopes import ScopeMappingSerializer | ||||||
|  |  | ||||||
|         return ScopeMappingSerializer |         return ScopeMappingSerializer | ||||||
|  |  | ||||||
| @ -300,7 +300,7 @@ class OAuth2Provider(Provider): | |||||||
|  |  | ||||||
|     @property |     @property | ||||||
|     def serializer(self) -> type[Serializer]: |     def serializer(self) -> type[Serializer]: | ||||||
|         from authentik.providers.oauth2.api.provider import OAuth2ProviderSerializer |         from authentik.providers.oauth2.api.providers import OAuth2ProviderSerializer | ||||||
|  |  | ||||||
|         return OAuth2ProviderSerializer |         return OAuth2ProviderSerializer | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										47
									
								
								authentik/providers/oauth2/tests/test_api.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								authentik/providers/oauth2/tests/test_api.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | |||||||
|  | """Test OAuth2 API""" | ||||||
|  | from json import loads | ||||||
|  |  | ||||||
|  | from django.urls import reverse | ||||||
|  | from rest_framework.test import APITestCase | ||||||
|  |  | ||||||
|  | from authentik.blueprints.tests import apply_blueprint | ||||||
|  | from authentik.core.models import Application | ||||||
|  | from authentik.core.tests.utils import create_test_admin_user, create_test_flow | ||||||
|  | from authentik.lib.generators import generate_id, generate_key | ||||||
|  | from authentik.providers.oauth2.models import OAuth2Provider, ScopeMapping | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestAPI(APITestCase): | ||||||
|  |     """Test api view""" | ||||||
|  |  | ||||||
|  |     @apply_blueprint("system/providers-oauth2.yaml") | ||||||
|  |     def setUp(self) -> None: | ||||||
|  |         self.provider: OAuth2Provider = OAuth2Provider.objects.create( | ||||||
|  |             name="test", | ||||||
|  |             client_id=generate_id(), | ||||||
|  |             client_secret=generate_key(), | ||||||
|  |             authorization_flow=create_test_flow(), | ||||||
|  |             redirect_uris="http://testserver", | ||||||
|  |         ) | ||||||
|  |         self.provider.property_mappings.set(ScopeMapping.objects.all()) | ||||||
|  |         self.app = Application.objects.create(name="test", slug="test", provider=self.provider) | ||||||
|  |         self.user = create_test_admin_user() | ||||||
|  |         self.client.force_login(self.user) | ||||||
|  |  | ||||||
|  |     def test_preview(self): | ||||||
|  |         """Test Preview API Endpoint""" | ||||||
|  |         response = self.client.get( | ||||||
|  |             reverse("authentik_api:oauth2provider-preview-user", kwargs={"pk": self.provider.pk}) | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(response.status_code, 200) | ||||||
|  |         body = loads(response.content.decode())["preview"] | ||||||
|  |         self.assertEqual(body["iss"], "http://testserver/application/o/test/") | ||||||
|  |  | ||||||
|  |     def test_setup_urls(self): | ||||||
|  |         """Test Setup URLs API Endpoint""" | ||||||
|  |         response = self.client.get( | ||||||
|  |             reverse("authentik_api:oauth2provider-setup-urls", kwargs={"pk": self.provider.pk}) | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(response.status_code, 200) | ||||||
|  |         body = loads(response.content.decode()) | ||||||
|  |         self.assertEqual(body["issuer"], "http://testserver/application/o/test/") | ||||||
| @ -52,7 +52,7 @@ class ProviderInfoView(View): | |||||||
|             ), |             ), | ||||||
|             "end_session_endpoint": self.request.build_absolute_uri( |             "end_session_endpoint": self.request.build_absolute_uri( | ||||||
|                 reverse( |                 reverse( | ||||||
|                     "authentik_core:if-session-end", |                     "authentik_providers_oauth2:end-session", | ||||||
|                     kwargs={"application_slug": provider.application.slug}, |                     kwargs={"application_slug": provider.application.slug}, | ||||||
|                 ) |                 ) | ||||||
|             ), |             ), | ||||||
|  | |||||||
							
								
								
									
										0
									
								
								authentik/providers/saml/api/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								authentik/providers/saml/api/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										42
									
								
								authentik/providers/saml/api/property_mapping.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								authentik/providers/saml/api/property_mapping.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,42 @@ | |||||||
|  | """SAML Property mappings API Views""" | ||||||
|  | from django_filters.filters import AllValuesMultipleFilter | ||||||
|  | from django_filters.filterset import FilterSet | ||||||
|  | from drf_spectacular.types import OpenApiTypes | ||||||
|  | from drf_spectacular.utils import extend_schema_field | ||||||
|  | from rest_framework.viewsets import ModelViewSet | ||||||
|  |  | ||||||
|  | from authentik.core.api.propertymappings import PropertyMappingSerializer | ||||||
|  | from authentik.core.api.used_by import UsedByMixin | ||||||
|  | from authentik.providers.saml.models import SAMLPropertyMapping | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class SAMLPropertyMappingSerializer(PropertyMappingSerializer): | ||||||
|  |     """SAMLPropertyMapping Serializer""" | ||||||
|  |  | ||||||
|  |     class Meta: | ||||||
|  |  | ||||||
|  |         model = SAMLPropertyMapping | ||||||
|  |         fields = PropertyMappingSerializer.Meta.fields + [ | ||||||
|  |             "saml_name", | ||||||
|  |             "friendly_name", | ||||||
|  |         ] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class SAMLPropertyMappingFilter(FilterSet): | ||||||
|  |     """Filter for SAMLPropertyMapping""" | ||||||
|  |  | ||||||
|  |     managed = extend_schema_field(OpenApiTypes.STR)(AllValuesMultipleFilter(field_name="managed")) | ||||||
|  |  | ||||||
|  |     class Meta: | ||||||
|  |         model = SAMLPropertyMapping | ||||||
|  |         fields = "__all__" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class SAMLPropertyMappingViewSet(UsedByMixin, ModelViewSet): | ||||||
|  |     """SAMLPropertyMapping Viewset""" | ||||||
|  |  | ||||||
|  |     queryset = SAMLPropertyMapping.objects.all() | ||||||
|  |     serializer_class = SAMLPropertyMappingSerializer | ||||||
|  |     filterset_class = SAMLPropertyMappingFilter | ||||||
|  |     search_fields = ["name"] | ||||||
|  |     ordering = ["name"] | ||||||
| @ -7,15 +7,8 @@ from django.http.response import Http404, HttpResponse | |||||||
| from django.shortcuts import get_object_or_404 | from django.shortcuts import get_object_or_404 | ||||||
| from django.urls import reverse | from django.urls import reverse | ||||||
| from django.utils.translation import gettext_lazy as _ | from django.utils.translation import gettext_lazy as _ | ||||||
| from django_filters.filters import AllValuesMultipleFilter |  | ||||||
| from django_filters.filterset import FilterSet |  | ||||||
| from drf_spectacular.types import OpenApiTypes | from drf_spectacular.types import OpenApiTypes | ||||||
| from drf_spectacular.utils import ( | from drf_spectacular.utils import OpenApiParameter, OpenApiResponse, extend_schema | ||||||
|     OpenApiParameter, |  | ||||||
|     OpenApiResponse, |  | ||||||
|     extend_schema, |  | ||||||
|     extend_schema_field, |  | ||||||
| ) |  | ||||||
| from rest_framework.decorators import action | from rest_framework.decorators import action | ||||||
| from rest_framework.fields import CharField, FileField, SerializerMethodField | from rest_framework.fields import CharField, FileField, SerializerMethodField | ||||||
| from rest_framework.parsers import MultiPartParser | from rest_framework.parsers import MultiPartParser | ||||||
| @ -28,15 +21,16 @@ from rest_framework.viewsets import ModelViewSet | |||||||
| from structlog.stdlib import get_logger | from structlog.stdlib import get_logger | ||||||
| 
 | 
 | ||||||
| from authentik.api.decorators import permission_required | from authentik.api.decorators import permission_required | ||||||
| from authentik.core.api.propertymappings import PropertyMappingSerializer |  | ||||||
| from authentik.core.api.providers import ProviderSerializer | from authentik.core.api.providers import ProviderSerializer | ||||||
| from authentik.core.api.used_by import UsedByMixin | from authentik.core.api.used_by import UsedByMixin | ||||||
| from authentik.core.api.utils import PassiveSerializer | from authentik.core.api.utils import PassiveSerializer, PropertyMappingPreviewSerializer | ||||||
| from authentik.core.models import Provider | from authentik.core.models import Provider | ||||||
| from authentik.flows.models import Flow, FlowDesignation | from authentik.flows.models import Flow, FlowDesignation | ||||||
| from authentik.providers.saml.models import SAMLPropertyMapping, SAMLProvider | from authentik.providers.saml.models import SAMLProvider | ||||||
|  | from authentik.providers.saml.processors.assertion import AssertionProcessor | ||||||
| from authentik.providers.saml.processors.metadata import MetadataProcessor | from authentik.providers.saml.processors.metadata import MetadataProcessor | ||||||
| from authentik.providers.saml.processors.metadata_parser import ServiceProviderMetadataParser | from authentik.providers.saml.processors.metadata_parser import ServiceProviderMetadataParser | ||||||
|  | from authentik.providers.saml.processors.request_parser import AuthNRequest | ||||||
| from authentik.sources.saml.processors.constants import SAML_BINDING_POST, SAML_BINDING_REDIRECT | from authentik.sources.saml.processors.constants import SAML_BINDING_POST, SAML_BINDING_REDIRECT | ||||||
| 
 | 
 | ||||||
| LOGGER = get_logger() | LOGGER = get_logger() | ||||||
| @ -236,34 +230,31 @@ class SAMLProviderViewSet(UsedByMixin, ModelViewSet): | |||||||
|             ) |             ) | ||||||
|         return Response(status=204) |         return Response(status=204) | ||||||
| 
 | 
 | ||||||
| 
 |     @permission_required( | ||||||
| class SAMLPropertyMappingSerializer(PropertyMappingSerializer): |         "authentik_providers_saml.view_samlprovider", | ||||||
|     """SAMLPropertyMapping Serializer""" |     ) | ||||||
| 
 |     @extend_schema( | ||||||
|     class Meta: |         responses={ | ||||||
| 
 |             200: PropertyMappingPreviewSerializer(), | ||||||
|         model = SAMLPropertyMapping |             400: OpenApiResponse(description="Bad request"), | ||||||
|         fields = PropertyMappingSerializer.Meta.fields + [ |         }, | ||||||
|             "saml_name", |     ) | ||||||
|             "friendly_name", |     @action(detail=True, methods=["GET"]) | ||||||
|         ] |     # pylint: disable=invalid-name, unused-argument | ||||||
| 
 |     def preview_user(self, request: Request, pk: int) -> Response: | ||||||
| 
 |         """Preview user data for provider""" | ||||||
| class SAMLPropertyMappingFilter(FilterSet): |         provider: SAMLProvider = self.get_object() | ||||||
|     """Filter for SAMLPropertyMapping""" |         processor = AssertionProcessor(provider, request._request, AuthNRequest()) | ||||||
| 
 |         attributes = processor.get_attributes() | ||||||
|     managed = extend_schema_field(OpenApiTypes.STR)(AllValuesMultipleFilter(field_name="managed")) |         name_id = processor.get_name_id() | ||||||
| 
 |         data = [] | ||||||
|     class Meta: |         for attribute in attributes: | ||||||
|         model = SAMLPropertyMapping |             item = {"Value": []} | ||||||
|         fields = "__all__" |             item.update(attribute.attrib) | ||||||
| 
 |             for value in attribute: | ||||||
| 
 |                 item["Value"].append(value.text) | ||||||
| class SAMLPropertyMappingViewSet(UsedByMixin, ModelViewSet): |             data.append(item) | ||||||
|     """SAMLPropertyMapping Viewset""" |         serializer = PropertyMappingPreviewSerializer( | ||||||
| 
 |             instance={"preview": {"attributes": data, "nameID": name_id.text}} | ||||||
|     queryset = SAMLPropertyMapping.objects.all() |         ) | ||||||
|     serializer_class = SAMLPropertyMappingSerializer |         return Response(serializer.data) | ||||||
|     filterset_class = SAMLPropertyMappingFilter |  | ||||||
|     search_fields = ["name"] |  | ||||||
|     ordering = ["name"] |  | ||||||
| @ -164,7 +164,7 @@ class SAMLProvider(Provider): | |||||||
|  |  | ||||||
|     @property |     @property | ||||||
|     def serializer(self) -> type[Serializer]: |     def serializer(self) -> type[Serializer]: | ||||||
|         from authentik.providers.saml.api import SAMLProviderSerializer |         from authentik.providers.saml.api.providers import SAMLProviderSerializer | ||||||
|  |  | ||||||
|         return SAMLProviderSerializer |         return SAMLProviderSerializer | ||||||
|  |  | ||||||
| @ -193,7 +193,7 @@ class SAMLPropertyMapping(PropertyMapping): | |||||||
|  |  | ||||||
|     @property |     @property | ||||||
|     def serializer(self) -> type[Serializer]: |     def serializer(self) -> type[Serializer]: | ||||||
|         from authentik.providers.saml.api import SAMLPropertyMappingSerializer |         from authentik.providers.saml.api.property_mapping import SAMLPropertyMappingSerializer | ||||||
|  |  | ||||||
|         return SAMLPropertyMappingSerializer |         return SAMLPropertyMappingSerializer | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,13 +1,15 @@ | |||||||
| """SAML Provider API Tests""" | """SAML Provider API Tests""" | ||||||
|  | from json import loads | ||||||
| from tempfile import TemporaryFile | from tempfile import TemporaryFile | ||||||
|  |  | ||||||
| from django.urls import reverse | from django.urls import reverse | ||||||
| from rest_framework.test import APITestCase | from rest_framework.test import APITestCase | ||||||
|  |  | ||||||
|  | from authentik.blueprints.tests import apply_blueprint | ||||||
| from authentik.core.models import Application | from authentik.core.models import Application | ||||||
| from authentik.core.tests.utils import create_test_admin_user, create_test_flow | from authentik.core.tests.utils import create_test_admin_user, create_test_flow | ||||||
| from authentik.flows.models import FlowDesignation | from authentik.flows.models import FlowDesignation | ||||||
| from authentik.providers.saml.models import SAMLProvider | from authentik.providers.saml.models import SAMLPropertyMapping, SAMLProvider | ||||||
| from authentik.providers.saml.tests.test_metadata import METADATA_SIMPLE | from authentik.providers.saml.tests.test_metadata import METADATA_SIMPLE | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -107,3 +109,24 @@ class TestSAMLProviderAPI(APITestCase): | |||||||
|             format="multipart", |             format="multipart", | ||||||
|         ) |         ) | ||||||
|         self.assertEqual(400, response.status_code) |         self.assertEqual(400, response.status_code) | ||||||
|  |  | ||||||
|  |     @apply_blueprint("system/providers-saml.yaml") | ||||||
|  |     def test_preview(self): | ||||||
|  |         """Test Preview API Endpoint""" | ||||||
|  |         provider: SAMLProvider = SAMLProvider.objects.create( | ||||||
|  |             name="test", | ||||||
|  |             authorization_flow=create_test_flow(), | ||||||
|  |         ) | ||||||
|  |         provider.property_mappings.set(SAMLPropertyMapping.objects.all()) | ||||||
|  |         Application.objects.create(name="test", provider=provider, slug="test") | ||||||
|  |         response = self.client.get( | ||||||
|  |             reverse("authentik_api:samlprovider-preview-user", kwargs={"pk": provider.pk}) | ||||||
|  |         ) | ||||||
|  |         self.assertEqual(response.status_code, 200) | ||||||
|  |         body = loads(response.content.decode())["preview"]["attributes"] | ||||||
|  |         self.assertEqual( | ||||||
|  |             [x for x in body if x["Name"] == "http://schemas.goauthentik.io/2021/02/saml/username"][ | ||||||
|  |                 0 | ||||||
|  |             ]["Value"], | ||||||
|  |             [self.user.username], | ||||||
|  |         ) | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ from rest_framework.viewsets import ModelViewSet | |||||||
|  |  | ||||||
| from authentik.core.api.sources import SourceSerializer | from authentik.core.api.sources import SourceSerializer | ||||||
| from authentik.core.api.used_by import UsedByMixin | from authentik.core.api.used_by import UsedByMixin | ||||||
| from authentik.providers.saml.api import SAMLMetadataSerializer | from authentik.providers.saml.api.providers import SAMLMetadataSerializer | ||||||
| from authentik.sources.saml.models import SAMLSource | from authentik.sources.saml.models import SAMLSource | ||||||
| from authentik.sources.saml.processors.metadata import MetadataProcessor | from authentik.sources.saml.processors.metadata import MetadataProcessor | ||||||
|  |  | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ msgid "" | |||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: PACKAGE VERSION\n" | "Project-Id-Version: PACKAGE VERSION\n" | ||||||
| "Report-Msgid-Bugs-To: \n" | "Report-Msgid-Bugs-To: \n" | ||||||
| "POT-Creation-Date: 2022-12-15 15:01+0000\n" | "POT-Creation-Date: 2022-12-20 23:41+0000\n" | ||||||
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | "Language-Team: LANGUAGE <LL@li.org>\n" | ||||||
| @ -988,11 +988,11 @@ msgstr "" | |||||||
| msgid "Proxy Providers" | msgid "Proxy Providers" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: authentik/providers/saml/api.py:225 | #: authentik/providers/saml/api.py:227 | ||||||
| msgid "Invalid XML Syntax" | msgid "Invalid XML Syntax" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: authentik/providers/saml/api.py:235 | #: authentik/providers/saml/api.py:237 | ||||||
| #, python-format | #, python-format | ||||||
| msgid "Failed to import Metadata: %(message)s" | msgid "Failed to import Metadata: %(message)s" | ||||||
| msgstr "" | msgstr "" | ||||||
|  | |||||||
							
								
								
									
										73
									
								
								schema.yml
									
									
									
									
									
								
							
							
						
						
									
										73
									
								
								schema.yml
									
									
									
									
									
								
							| @ -14663,6 +14663,36 @@ paths: | |||||||
|               schema: |               schema: | ||||||
|                 $ref: '#/components/schemas/GenericError' |                 $ref: '#/components/schemas/GenericError' | ||||||
|           description: '' |           description: '' | ||||||
|  |   /providers/oauth2/{id}/preview_user/: | ||||||
|  |     get: | ||||||
|  |       operationId: providers_oauth2_preview_user_retrieve | ||||||
|  |       description: Preview user data for provider | ||||||
|  |       parameters: | ||||||
|  |       - in: path | ||||||
|  |         name: id | ||||||
|  |         schema: | ||||||
|  |           type: integer | ||||||
|  |         description: A unique integer value identifying this OAuth2/OpenID Provider. | ||||||
|  |         required: true | ||||||
|  |       tags: | ||||||
|  |       - providers | ||||||
|  |       security: | ||||||
|  |       - authentik: [] | ||||||
|  |       responses: | ||||||
|  |         '200': | ||||||
|  |           content: | ||||||
|  |             application/json: | ||||||
|  |               schema: | ||||||
|  |                 $ref: '#/components/schemas/PropertyMappingPreview' | ||||||
|  |           description: '' | ||||||
|  |         '400': | ||||||
|  |           description: Bad request | ||||||
|  |         '403': | ||||||
|  |           content: | ||||||
|  |             application/json: | ||||||
|  |               schema: | ||||||
|  |                 $ref: '#/components/schemas/GenericError' | ||||||
|  |           description: '' | ||||||
|   /providers/oauth2/{id}/setup_urls/: |   /providers/oauth2/{id}/setup_urls/: | ||||||
|     get: |     get: | ||||||
|       operationId: providers_oauth2_setup_urls_retrieve |       operationId: providers_oauth2_setup_urls_retrieve | ||||||
| @ -15424,6 +15454,36 @@ paths: | |||||||
|               schema: |               schema: | ||||||
|                 $ref: '#/components/schemas/GenericError' |                 $ref: '#/components/schemas/GenericError' | ||||||
|           description: '' |           description: '' | ||||||
|  |   /providers/saml/{id}/preview_user/: | ||||||
|  |     get: | ||||||
|  |       operationId: providers_saml_preview_user_retrieve | ||||||
|  |       description: Preview user data for provider | ||||||
|  |       parameters: | ||||||
|  |       - in: path | ||||||
|  |         name: id | ||||||
|  |         schema: | ||||||
|  |           type: integer | ||||||
|  |         description: A unique integer value identifying this SAML Provider. | ||||||
|  |         required: true | ||||||
|  |       tags: | ||||||
|  |       - providers | ||||||
|  |       security: | ||||||
|  |       - authentik: [] | ||||||
|  |       responses: | ||||||
|  |         '200': | ||||||
|  |           content: | ||||||
|  |             application/json: | ||||||
|  |               schema: | ||||||
|  |                 $ref: '#/components/schemas/PropertyMappingPreview' | ||||||
|  |           description: '' | ||||||
|  |         '400': | ||||||
|  |           description: Bad request | ||||||
|  |         '403': | ||||||
|  |           content: | ||||||
|  |             application/json: | ||||||
|  |               schema: | ||||||
|  |                 $ref: '#/components/schemas/GenericError' | ||||||
|  |           description: '' | ||||||
|   /providers/saml/{id}/used_by/: |   /providers/saml/{id}/used_by/: | ||||||
|     get: |     get: | ||||||
|       operationId: providers_saml_used_by_list |       operationId: providers_saml_used_by_list | ||||||
| @ -35719,6 +35779,17 @@ components: | |||||||
|       - pk |       - pk | ||||||
|       - verbose_name |       - verbose_name | ||||||
|       - verbose_name_plural |       - verbose_name_plural | ||||||
|  |     PropertyMappingPreview: | ||||||
|  |       type: object | ||||||
|  |       description: Preview how the current user is mapped via the property mappings | ||||||
|  |         selected in a provider | ||||||
|  |       properties: | ||||||
|  |         preview: | ||||||
|  |           type: object | ||||||
|  |           additionalProperties: {} | ||||||
|  |           readOnly: true | ||||||
|  |       required: | ||||||
|  |       - preview | ||||||
|     PropertyMappingTestResult: |     PropertyMappingTestResult: | ||||||
|       type: object |       type: object | ||||||
|       description: Result of a Property-mapping test |       description: Result of a Property-mapping test | ||||||
| @ -36455,6 +36526,8 @@ components: | |||||||
|           minLength: 1 |           minLength: 1 | ||||||
|         authorization_flow: |         authorization_flow: | ||||||
|           type: string |           type: string | ||||||
|  |           minLength: 1 | ||||||
|  |           description: Visible in the URL. | ||||||
|         file: |         file: | ||||||
|           type: string |           type: string | ||||||
|           format: binary |           format: binary | ||||||
|  | |||||||
| @ -57,7 +57,7 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): | |||||||
|                 "GF_AUTH_GENERIC_OAUTH_API_URL": (self.url("authentik_providers_oauth2:userinfo")), |                 "GF_AUTH_GENERIC_OAUTH_API_URL": (self.url("authentik_providers_oauth2:userinfo")), | ||||||
|                 "GF_AUTH_SIGNOUT_REDIRECT_URL": ( |                 "GF_AUTH_SIGNOUT_REDIRECT_URL": ( | ||||||
|                     self.url( |                     self.url( | ||||||
|                         "authentik_core:if-session-end", |                         "authentik_providers_oauth2:end-session", | ||||||
|                         application_slug=self.app_slug, |                         application_slug=self.app_slug, | ||||||
|                     ) |                     ) | ||||||
|                 ), |                 ), | ||||||
|  | |||||||
| @ -192,7 +192,7 @@ export class ApplicationForm extends ModelForm<Application, string> { | |||||||
|                             <input |                             <input | ||||||
|                                 type="checkbox" |                                 type="checkbox" | ||||||
|                                 class="pf-c-check__input" |                                 class="pf-c-check__input" | ||||||
|                                 ?checked=${first(this.instance?.openInNewTab, true)} |                                 ?checked=${first(this.instance?.openInNewTab, false)} | ||||||
|                             /> |                             /> | ||||||
|                             <label class="pf-c-check__label"> ${t`Open in new tab`} </label> |                             <label class="pf-c-check__label"> ${t`Open in new tab`} </label> | ||||||
|                         </div> |                         </div> | ||||||
|  | |||||||
| @ -122,8 +122,13 @@ export class ApplicationViewPage extends AKElement { | |||||||
|                                           <dd class="pf-c-description-list__description"> |                                           <dd class="pf-c-description-list__description"> | ||||||
|                                               <div class="pf-c-description-list__text"> |                                               <div class="pf-c-description-list__text"> | ||||||
|                                                   <a |                                                   <a | ||||||
|                                                       href="#/core/providers/${this.application |                                                       href=${`#/core/applications/${ | ||||||
|                                                           .providerObj?.pk}" |                                                           this.application.slug | ||||||
|  |                                                       };${encodeURIComponent( | ||||||
|  |                                                           JSON.stringify({ | ||||||
|  |                                                               page: "page-provider", | ||||||
|  |                                                           }), | ||||||
|  |                                                       )}`} | ||||||
|                                                   > |                                                   > | ||||||
|                                                       ${this.application.providerObj?.name} |                                                       ${this.application.providerObj?.name} | ||||||
|                                                       (${this.application.providerObj?.verboseName}) |                                                       (${this.application.providerObj?.verboseName}) | ||||||
|  | |||||||
| @ -8,8 +8,6 @@ import "@goauthentik/elements/EmptyState"; | |||||||
| import "@goauthentik/elements/PageHeader"; | import "@goauthentik/elements/PageHeader"; | ||||||
| import "@goauthentik/elements/buttons/SpinnerButton"; | import "@goauthentik/elements/buttons/SpinnerButton"; | ||||||
|  |  | ||||||
| import { t } from "@lingui/macro"; |  | ||||||
|  |  | ||||||
| import { CSSResult, TemplateResult, html } from "lit"; | import { CSSResult, TemplateResult, html } from "lit"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
| import { ifDefined } from "lit/directives/if-defined.js"; | import { ifDefined } from "lit/directives/if-defined.js"; | ||||||
| @ -70,25 +68,6 @@ export class ProviderViewPage extends AKElement { | |||||||
|                 description=${ifDefined(this.provider?.verboseName)} |                 description=${ifDefined(this.provider?.verboseName)} | ||||||
|             > |             > | ||||||
|             </ak-page-header> |             </ak-page-header> | ||||||
|             <ak-tabs> |             ${this.renderProvider()}`; | ||||||
|                 <section slot="page-overview" data-tab-title="${t`Overview`}"> |  | ||||||
|                     ${this.renderProvider()} |  | ||||||
|                 </section> |  | ||||||
|                 <section |  | ||||||
|                     slot="page-changelog" |  | ||||||
|                     data-tab-title="${t`Changelog`}" |  | ||||||
|                     class="pf-c-page__main-section pf-m-no-padding-mobile" |  | ||||||
|                 > |  | ||||||
|                     <div class="pf-c-card"> |  | ||||||
|                         <div class="pf-c-card__body"> |  | ||||||
|                             <ak-object-changelog |  | ||||||
|                                 targetModelPk=${this.provider?.pk || ""} |  | ||||||
|                                 targetModelName=${this.provider?.metaModelName || ""} |  | ||||||
|                             > |  | ||||||
|                             </ak-object-changelog> |  | ||||||
|                         </div> |  | ||||||
|                     </div> |  | ||||||
|                 </section> |  | ||||||
|             </ak-tabs>`; |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -80,13 +80,33 @@ export class LDAPProviderViewPage extends AKElement { | |||||||
|         if (!this.provider) { |         if (!this.provider) { | ||||||
|             return html``; |             return html``; | ||||||
|         } |         } | ||||||
|         return html`${ |         return html` <ak-tabs> | ||||||
|             this.provider?.assignedApplicationName |             <section slot="page-overview" data-tab-title="${t`Overview`}"> | ||||||
|                 ? html`` |                 ${this.renderTabOverview()} | ||||||
|                 : html`<div slot="header" class="pf-c-banner pf-m-warning"> |             </section> | ||||||
|                       ${t`Warning: Provider is not used by an Application.`} |             <section | ||||||
|                   </div>` |                 slot="page-changelog" | ||||||
|  |                 data-tab-title="${t`Changelog`}" | ||||||
|  |                 class="pf-c-page__main-section pf-m-no-padding-mobile" | ||||||
|  |             > | ||||||
|  |                 <div class="pf-c-card"> | ||||||
|  |                     <div class="pf-c-card__body"> | ||||||
|  |                         <ak-object-changelog | ||||||
|  |                             targetModelPk=${this.provider?.pk || ""} | ||||||
|  |                             targetModelName=${this.provider?.metaModelName || ""} | ||||||
|  |                         > | ||||||
|  |                         </ak-object-changelog> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </section> | ||||||
|  |         </ak-tabs>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     renderTabOverview(): TemplateResult { | ||||||
|  |         if (!this.provider) { | ||||||
|  |             return html``; | ||||||
|         } |         } | ||||||
|  |         return html` | ||||||
|             ${ |             ${ | ||||||
|                 this.provider?.outpostSet.length < 1 |                 this.provider?.outpostSet.length < 1 | ||||||
|                     ? html`<div slot="header" class="pf-c-banner pf-m-warning"> |                     ? html`<div slot="header" class="pf-c-banner pf-m-warning"> | ||||||
|  | |||||||
| @ -16,6 +16,7 @@ import { t } from "@lingui/macro"; | |||||||
|  |  | ||||||
| import { CSSResult, TemplateResult, html } from "lit"; | import { CSSResult, TemplateResult, html } from "lit"; | ||||||
| import { customElement, property } from "lit/decorators.js"; | import { customElement, property } from "lit/decorators.js"; | ||||||
|  | import { until } from "lit/directives/until.js"; | ||||||
|  |  | ||||||
| import AKGlobal from "@goauthentik/common/styles/authentik.css"; | import AKGlobal from "@goauthentik/common/styles/authentik.css"; | ||||||
| import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; | import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; | ||||||
| @ -79,6 +80,35 @@ export class OAuth2ProviderViewPage extends AKElement { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     render(): TemplateResult { |     render(): TemplateResult { | ||||||
|  |         if (!this.provider) { | ||||||
|  |             return html``; | ||||||
|  |         } | ||||||
|  |         return html` <ak-tabs> | ||||||
|  |             <section slot="page-overview" data-tab-title="${t`Overview`}"> | ||||||
|  |                 ${this.renderTabOverview()} | ||||||
|  |             </section> | ||||||
|  |             <section slot="page-preview" data-tab-title="${t`Preview`}"> | ||||||
|  |                 ${this.renderTabPreview()} | ||||||
|  |             </section> | ||||||
|  |             <section | ||||||
|  |                 slot="page-changelog" | ||||||
|  |                 data-tab-title="${t`Changelog`}" | ||||||
|  |                 class="pf-c-page__main-section pf-m-no-padding-mobile" | ||||||
|  |             > | ||||||
|  |                 <div class="pf-c-card"> | ||||||
|  |                     <div class="pf-c-card__body"> | ||||||
|  |                         <ak-object-changelog | ||||||
|  |                             targetModelPk=${this.provider?.pk || ""} | ||||||
|  |                             targetModelName=${this.provider?.metaModelName || ""} | ||||||
|  |                         > | ||||||
|  |                         </ak-object-changelog> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </section> | ||||||
|  |         </ak-tabs>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     renderTabOverview(): TemplateResult { | ||||||
|         if (!this.provider) { |         if (!this.provider) { | ||||||
|             return html``; |             return html``; | ||||||
|         } |         } | ||||||
| @ -277,4 +307,30 @@ export class OAuth2ProviderViewPage extends AKElement { | |||||||
|                 </div> |                 </div> | ||||||
|             </div>`; |             </div>`; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderTabPreview(): TemplateResult { | ||||||
|  |         if (!this.provider) { | ||||||
|  |             return html``; | ||||||
|  |         } | ||||||
|  |         return html` <div | ||||||
|  |             class="pf-c-page__main-section pf-m-no-padding-mobile pf-l-grid pf-m-gutter" | ||||||
|  |         > | ||||||
|  |             <div class="pf-c-card"> | ||||||
|  |                 <div class="pf-c-card__title"> | ||||||
|  |                     ${t`Example JWT payload (for currently authenticated user)`} | ||||||
|  |                 </div> | ||||||
|  |                 <div class="pf-c-card__body"> | ||||||
|  |                     ${until( | ||||||
|  |                         new ProvidersApi(DEFAULT_CONFIG) | ||||||
|  |                             .providersOauth2PreviewUserRetrieve({ | ||||||
|  |                                 id: this.provider?.pk, | ||||||
|  |                             }) | ||||||
|  |                             .then((data) => { | ||||||
|  |                                 return html`<pre>${JSON.stringify(data.preview, null, 4)}</pre>`; | ||||||
|  |                             }), | ||||||
|  |                     )} | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |         </div>`; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -171,6 +171,32 @@ export class ProxyProviderViewPage extends AKElement { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     render(): TemplateResult { |     render(): TemplateResult { | ||||||
|  |         if (!this.provider) { | ||||||
|  |             return html``; | ||||||
|  |         } | ||||||
|  |         return html` <ak-tabs> | ||||||
|  |             <section slot="page-overview" data-tab-title="${t`Overview`}"> | ||||||
|  |                 ${this.renderTabOverview()} | ||||||
|  |             </section> | ||||||
|  |             <section | ||||||
|  |                 slot="page-changelog" | ||||||
|  |                 data-tab-title="${t`Changelog`}" | ||||||
|  |                 class="pf-c-page__main-section pf-m-no-padding-mobile" | ||||||
|  |             > | ||||||
|  |                 <div class="pf-c-card"> | ||||||
|  |                     <div class="pf-c-card__body"> | ||||||
|  |                         <ak-object-changelog | ||||||
|  |                             targetModelPk=${this.provider?.pk || ""} | ||||||
|  |                             targetModelName=${this.provider?.metaModelName || ""} | ||||||
|  |                         > | ||||||
|  |                         </ak-object-changelog> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </section> | ||||||
|  |         </ak-tabs>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     renderTabOverview(): TemplateResult { | ||||||
|         if (!this.provider) { |         if (!this.provider) { | ||||||
|             return html``; |             return html``; | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -25,12 +25,21 @@ import PFContent from "@patternfly/patternfly/components/Content/content.css"; | |||||||
| import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; | import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; | ||||||
| import PFForm from "@patternfly/patternfly/components/Form/form.css"; | import PFForm from "@patternfly/patternfly/components/Form/form.css"; | ||||||
| import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css"; | import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css"; | ||||||
|  | import PFList from "@patternfly/patternfly/components/List/List.css"; | ||||||
| import PFPage from "@patternfly/patternfly/components/Page/page.css"; | import PFPage from "@patternfly/patternfly/components/Page/page.css"; | ||||||
| import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; | ||||||
| import PFBase from "@patternfly/patternfly/patternfly-base.css"; | import PFBase from "@patternfly/patternfly/patternfly-base.css"; | ||||||
|  |  | ||||||
| import { CryptoApi, ProvidersApi, SAMLProvider } from "@goauthentik/api"; | import { CryptoApi, ProvidersApi, SAMLProvider } from "@goauthentik/api"; | ||||||
|  |  | ||||||
|  | interface SAMLPreviewAttribute { | ||||||
|  |     attributes: { | ||||||
|  |         Name: string; | ||||||
|  |         Value: string[]; | ||||||
|  |     }[]; | ||||||
|  |     nameID: string; | ||||||
|  | } | ||||||
|  |  | ||||||
| @customElement("ak-provider-saml-view") | @customElement("ak-provider-saml-view") | ||||||
| export class SAMLProviderViewPage extends AKElement { | export class SAMLProviderViewPage extends AKElement { | ||||||
|     @property() |     @property() | ||||||
| @ -58,6 +67,7 @@ export class SAMLProviderViewPage extends AKElement { | |||||||
|             PFGrid, |             PFGrid, | ||||||
|             PFContent, |             PFContent, | ||||||
|             PFCard, |             PFCard, | ||||||
|  |             PFList, | ||||||
|             PFDescriptionList, |             PFDescriptionList, | ||||||
|             PFForm, |             PFForm, | ||||||
|             PFFormControl, |             PFFormControl, | ||||||
| @ -134,6 +144,36 @@ export class SAMLProviderViewPage extends AKElement { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     render(): TemplateResult { |     render(): TemplateResult { | ||||||
|  |         if (!this.provider) { | ||||||
|  |             return html``; | ||||||
|  |         } | ||||||
|  |         return html` <ak-tabs> | ||||||
|  |             <section slot="page-overview" data-tab-title="${t`Overview`}"> | ||||||
|  |                 ${this.renderTabOverview()} | ||||||
|  |             </section> | ||||||
|  |             ${this.renderTabMetadata()} | ||||||
|  |             <section slot="page-preview" data-tab-title="${t`Preview`}"> | ||||||
|  |                 ${this.renderTabPreview()} | ||||||
|  |             </section> | ||||||
|  |             <section | ||||||
|  |                 slot="page-changelog" | ||||||
|  |                 data-tab-title="${t`Changelog`}" | ||||||
|  |                 class="pf-c-page__main-section pf-m-no-padding-mobile" | ||||||
|  |             > | ||||||
|  |                 <div class="pf-c-card"> | ||||||
|  |                     <div class="pf-c-card__body"> | ||||||
|  |                         <ak-object-changelog | ||||||
|  |                             targetModelPk=${this.provider?.pk || ""} | ||||||
|  |                             targetModelName=${this.provider?.metaModelName || ""} | ||||||
|  |                         > | ||||||
|  |                         </ak-object-changelog> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </section> | ||||||
|  |         </ak-tabs>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     renderTabOverview(): TemplateResult { | ||||||
|         if (!this.provider) { |         if (!this.provider) { | ||||||
|             return html``; |             return html``; | ||||||
|         } |         } | ||||||
| @ -220,104 +260,184 @@ export class SAMLProviderViewPage extends AKElement { | |||||||
|                 ${ |                 ${ | ||||||
|                     this.provider.assignedApplicationName |                     this.provider.assignedApplicationName | ||||||
|                         ? html` <div class="pf-c-card pf-l-grid__item pf-m-12-col"> |                         ? html` <div class="pf-c-card pf-l-grid__item pf-m-12-col"> | ||||||
|                                   <div class="pf-c-card__title">${t`SAML Configuration`}</div> |                               <div class="pf-c-card__title">${t`SAML Configuration`}</div> | ||||||
|                                   <div class="pf-c-card__body"> |                               <div class="pf-c-card__body"> | ||||||
|                                       <form class="pf-c-form"> |                                   <form class="pf-c-form"> | ||||||
|                                           <div class="pf-c-form__group"> |                                       <div class="pf-c-form__group"> | ||||||
|                                               <label class="pf-c-form__label"> |                                           <label class="pf-c-form__label"> | ||||||
|                                                   <span class="pf-c-form__label-text" |                                               <span class="pf-c-form__label-text" | ||||||
|                                                       >${t`EntityID/Issuer`}</span |                                                   >${t`EntityID/Issuer`}</span | ||||||
|                                                   > |                                               > | ||||||
|                                               </label> |                                           </label> | ||||||
|                                               <input |                                           <input | ||||||
|                                                   class="pf-c-form-control" |                                               class="pf-c-form-control" | ||||||
|                                                   readonly |                                               readonly | ||||||
|                                                   type="text" |                                               type="text" | ||||||
|                                                   value="${ifDefined(this.provider?.issuer)}" |                                               value="${ifDefined(this.provider?.issuer)}" | ||||||
|                                               /> |                                           /> | ||||||
|                                           </div> |                                       </div> | ||||||
|                                           <div class="pf-c-form__group"> |                                       <div class="pf-c-form__group"> | ||||||
|                                               <label class="pf-c-form__label"> |                                           <label class="pf-c-form__label"> | ||||||
|                                                   <span class="pf-c-form__label-text" |                                               <span class="pf-c-form__label-text" | ||||||
|                                                       >${t`SSO URL (Post)`}</span |                                                   >${t`SSO URL (Post)`}</span | ||||||
|                                                   > |                                               > | ||||||
|                                               </label> |                                           </label> | ||||||
|                                               <input |                                           <input | ||||||
|                                                   class="pf-c-form-control" |                                               class="pf-c-form-control" | ||||||
|                                                   readonly |                                               readonly | ||||||
|                                                   type="text" |                                               type="text" | ||||||
|                                                   value="${ifDefined(this.provider.urlSsoPost)}" |                                               value="${ifDefined(this.provider.urlSsoPost)}" | ||||||
|                                               /> |                                           /> | ||||||
|                                           </div> |                                       </div> | ||||||
|                                           <div class="pf-c-form__group"> |                                       <div class="pf-c-form__group"> | ||||||
|                                               <label class="pf-c-form__label"> |                                           <label class="pf-c-form__label"> | ||||||
|                                                   <span class="pf-c-form__label-text" |                                               <span class="pf-c-form__label-text" | ||||||
|                                                       >${t`SSO URL (Redirect)`}</span |                                                   >${t`SSO URL (Redirect)`}</span | ||||||
|                                                   > |                                               > | ||||||
|                                               </label> |                                           </label> | ||||||
|                                               <input |                                           <input | ||||||
|                                                   class="pf-c-form-control" |                                               class="pf-c-form-control" | ||||||
|                                                   readonly |                                               readonly | ||||||
|                                                   type="text" |                                               type="text" | ||||||
|                                                   value="${ifDefined(this.provider.urlSsoRedirect)}" |                                               value="${ifDefined(this.provider.urlSsoRedirect)}" | ||||||
|                                               /> |                                           /> | ||||||
|                                           </div> |                                       </div> | ||||||
|                                           <div class="pf-c-form__group"> |                                       <div class="pf-c-form__group"> | ||||||
|                                               <label class="pf-c-form__label"> |                                           <label class="pf-c-form__label"> | ||||||
|                                                   <span class="pf-c-form__label-text" |                                               <span class="pf-c-form__label-text" | ||||||
|                                                       >${t`SSO URL (IdP-initiated Login)`}</span |                                                   >${t`SSO URL (IdP-initiated Login)`}</span | ||||||
|                                                   > |                                               > | ||||||
|                                               </label> |                                           </label> | ||||||
|                                               <input |                                           <input | ||||||
|                                                   class="pf-c-form-control" |                                               class="pf-c-form-control" | ||||||
|                                                   readonly |                                               readonly | ||||||
|                                                   type="text" |                                               type="text" | ||||||
|                                                   value="${ifDefined(this.provider.urlSsoInit)}" |                                               value="${ifDefined(this.provider.urlSsoInit)}" | ||||||
|                                               /> |                                           /> | ||||||
|                                           </div> |                                       </div> | ||||||
|                                       </form> |                                   </form> | ||||||
|                                   </div> |  | ||||||
|                               </div> |                               </div> | ||||||
|                               <div class="pf-c-card pf-l-grid__item pf-m-12-col"> |                           </div>` | ||||||
|                                   <div class="pf-c-card__title">${t`SAML Metadata`}</div> |  | ||||||
|                                   <div class="pf-c-card__body"> |  | ||||||
|                                       ${until( |  | ||||||
|                                           new ProvidersApi(DEFAULT_CONFIG) |  | ||||||
|                                               .providersSamlMetadataRetrieve({ |  | ||||||
|                                                   id: this.provider.pk || 0, |  | ||||||
|                                               }) |  | ||||||
|                                               .then((m) => { |  | ||||||
|                                                   return html`<ak-codemirror |  | ||||||
|                                                       mode="xml" |  | ||||||
|                                                       ?readOnly=${true} |  | ||||||
|                                                       value="${ifDefined(m.metadata)}" |  | ||||||
|                                                   ></ak-codemirror>`; |  | ||||||
|                                               }), |  | ||||||
|                                       )} |  | ||||||
|                                   </div> |  | ||||||
|                                   <div class="pf-c-card__footer"> |  | ||||||
|                                       <a |  | ||||||
|                                           class="pf-c-button pf-m-primary" |  | ||||||
|                                           target="_blank" |  | ||||||
|                                           href=${this.provider.urlDownloadMetadata} |  | ||||||
|                                       > |  | ||||||
|                                           ${t`Download`} |  | ||||||
|                                       </a> |  | ||||||
|                                       <ak-action-button |  | ||||||
|                                           class="pf-m-secondary" |  | ||||||
|                                           .apiRequest=${() => { |  | ||||||
|                                               return navigator.clipboard.writeText( |  | ||||||
|                                                   this.provider?.urlDownloadMetadata || "", |  | ||||||
|                                               ); |  | ||||||
|                                           }} |  | ||||||
|                                       > |  | ||||||
|                                           ${t`Copy download URL`} |  | ||||||
|                                       </ak-action-button> |  | ||||||
|                                   </div> |  | ||||||
|                               </div>` |  | ||||||
|                         : html`` |                         : html`` | ||||||
|                 } |                 } | ||||||
|             </div> |             </div> | ||||||
|         </div>`; |         </div>`; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderTabMetadata(): TemplateResult { | ||||||
|  |         if (!this.provider) { | ||||||
|  |             return html``; | ||||||
|  |         } | ||||||
|  |         return html` | ||||||
|  |             ${this.provider.assignedApplicationName | ||||||
|  |                 ? html` <section slot="page-metadata" data-tab-title="${t`Metadata`}"> | ||||||
|  |                       <div | ||||||
|  |                           class="pf-c-page__main-section pf-m-no-padding-mobile pf-l-grid pf-m-gutter" | ||||||
|  |                       > | ||||||
|  |                           <div class="pf-c-card pf-l-grid__item pf-m-12-col"> | ||||||
|  |                               <div class="pf-c-card__title">${t`SAML Metadata`}</div> | ||||||
|  |                               <div class="pf-c-card__body"> | ||||||
|  |                                   <a | ||||||
|  |                                       class="pf-c-button pf-m-primary" | ||||||
|  |                                       target="_blank" | ||||||
|  |                                       href=${this.provider.urlDownloadMetadata} | ||||||
|  |                                   > | ||||||
|  |                                       ${t`Download`} | ||||||
|  |                                   </a> | ||||||
|  |                                   <ak-action-button | ||||||
|  |                                       class="pf-m-secondary" | ||||||
|  |                                       .apiRequest=${() => { | ||||||
|  |                                           return navigator.clipboard.writeText( | ||||||
|  |                                               this.provider?.urlDownloadMetadata || "", | ||||||
|  |                                           ); | ||||||
|  |                                       }} | ||||||
|  |                                   > | ||||||
|  |                                       ${t`Copy download URL`} | ||||||
|  |                                   </ak-action-button> | ||||||
|  |                               </div> | ||||||
|  |                               <div class="pf-c-card__footer"> | ||||||
|  |                                   ${until( | ||||||
|  |                                       new ProvidersApi(DEFAULT_CONFIG) | ||||||
|  |                                           .providersSamlMetadataRetrieve({ | ||||||
|  |                                               id: this.provider.pk || 0, | ||||||
|  |                                           }) | ||||||
|  |                                           .then((m) => { | ||||||
|  |                                               return html`<ak-codemirror | ||||||
|  |                                                   mode="xml" | ||||||
|  |                                                   ?readOnly=${true} | ||||||
|  |                                                   value="${ifDefined(m.metadata)}" | ||||||
|  |                                               ></ak-codemirror>`; | ||||||
|  |                                           }), | ||||||
|  |                                   )} | ||||||
|  |                               </div> | ||||||
|  |                           </div> | ||||||
|  |                       </div> | ||||||
|  |                   </section>` | ||||||
|  |                 : html``} | ||||||
|  |         `; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     renderTabPreview(): TemplateResult { | ||||||
|  |         if (!this.provider) { | ||||||
|  |             return html``; | ||||||
|  |         } | ||||||
|  |         return html` <div | ||||||
|  |             class="pf-c-page__main-section pf-m-no-padding-mobile pf-l-grid pf-m-gutter" | ||||||
|  |         > | ||||||
|  |             <div class="pf-c-card"> | ||||||
|  |                 <div class="pf-c-card__title">${t`Example SAML attributes`}</div> | ||||||
|  |                 ${until( | ||||||
|  |                     new ProvidersApi(DEFAULT_CONFIG) | ||||||
|  |                         .providersSamlPreviewUserRetrieve({ | ||||||
|  |                             id: this.provider?.pk, | ||||||
|  |                         }) | ||||||
|  |                         .then((data) => { | ||||||
|  |                             const d = data.preview as SAMLPreviewAttribute; | ||||||
|  |                             return html` | ||||||
|  |                                 <div class="pf-c-card__body"> | ||||||
|  |                                     <dl class="pf-c-description-list pf-m-2-col-on-lg"> | ||||||
|  |                                         <div class="pf-c-description-list__group"> | ||||||
|  |                                             <dt class="pf-c-description-list__term"> | ||||||
|  |                                                 <span class="pf-c-description-list__text" | ||||||
|  |                                                     >${t`NameID attribute`}</span | ||||||
|  |                                                 > | ||||||
|  |                                             </dt> | ||||||
|  |                                             <dd class="pf-c-description-list__description"> | ||||||
|  |                                                 <div class="pf-c-description-list__text"> | ||||||
|  |                                                     ${d.nameID} | ||||||
|  |                                                 </div> | ||||||
|  |                                             </dd> | ||||||
|  |                                         </div> | ||||||
|  |                                     </dl> | ||||||
|  |                                 </div> | ||||||
|  |                                 <div class="pf-c-card__body"> | ||||||
|  |                                     <dl class="pf-c-description-list pf-m-2-col-on-lg"> | ||||||
|  |                                         ${d.attributes.map((attr) => { | ||||||
|  |                                             return html` <div class="pf-c-description-list__group"> | ||||||
|  |                                                 <dt class="pf-c-description-list__term"> | ||||||
|  |                                                     <span class="pf-c-description-list__text" | ||||||
|  |                                                         >${attr.Name}</span | ||||||
|  |                                                     > | ||||||
|  |                                                 </dt> | ||||||
|  |                                                 <dd class="pf-c-description-list__description"> | ||||||
|  |                                                     <div class="pf-c-description-list__text"> | ||||||
|  |                                                         <ul class="pf-c-list"> | ||||||
|  |                                                             ${attr.Value.map((value) => { | ||||||
|  |                                                                 return html` | ||||||
|  |                                                                     <li><pre>${value}</pre></li> | ||||||
|  |                                                                 `; | ||||||
|  |                                                             })} | ||||||
|  |                                                         </ul> | ||||||
|  |                                                     </div> | ||||||
|  |                                                 </dd> | ||||||
|  |                                             </div>`; | ||||||
|  |                                         })} | ||||||
|  |                                     </dl> | ||||||
|  |                                 </div> | ||||||
|  |                             `; | ||||||
|  |                         }), | ||||||
|  |                 )} | ||||||
|  |             </div> | ||||||
|  |         </div>`; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -35,7 +35,7 @@ export class Diagram extends AKElement { | |||||||
|         const matcher = window.matchMedia("(prefers-color-scheme: light)"); |         const matcher = window.matchMedia("(prefers-color-scheme: light)"); | ||||||
|         const handler = (ev?: MediaQueryListEvent) => { |         const handler = (ev?: MediaQueryListEvent) => { | ||||||
|             mermaid.initialize({ |             mermaid.initialize({ | ||||||
|                 logLevel: "error", |                 logLevel: 3, | ||||||
|                 startOnLoad: false, |                 startOnLoad: false, | ||||||
|                 theme: ev?.matches || matcher.matches ? "default" : "dark", |                 theme: ev?.matches || matcher.matches ? "default" : "dark", | ||||||
|                 flowchart: { |                 flowchart: { | ||||||
|  | |||||||
| @ -956,7 +956,10 @@ msgstr "Ändern Sie Ihr Passwort" | |||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/flows/FlowViewPage.ts | #: src/admin/flows/FlowViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -1357,6 +1360,7 @@ msgstr "Kopieren" | |||||||
| #~ msgid "Copy Key" | #~ msgid "Copy Key" | ||||||
| #~ msgstr "Kopiere Schlüssel" | #~ msgstr "Kopiere Schlüssel" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Copy download URL" | msgid "Copy download URL" | ||||||
| msgstr "Download URL kopieren" | msgstr "Download URL kopieren" | ||||||
| @ -1895,7 +1899,6 @@ msgstr "Zertifikat herunterladen" | |||||||
| msgid "Download Private key" | msgid "Download Private key" | ||||||
| msgstr "Privaten Schlüssel herunterladen" | msgstr "Privaten Schlüssel herunterladen" | ||||||
|  |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Download signing certificate" | msgid "Download signing certificate" | ||||||
| msgstr "Signierzertifikat herunterladen" | msgstr "Signierzertifikat herunterladen" | ||||||
| @ -2171,6 +2174,14 @@ msgstr "Ereignisse" | |||||||
| msgid "Everything is ok." | msgid "Everything is ok." | ||||||
| msgstr "Alles funktioniert." | msgstr "Alles funktioniert." | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | msgid "Example JWT payload (for currently authenticated user)" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Example SAML attributes" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| @ -3472,6 +3483,8 @@ msgstr "Nachrichten" | |||||||
|  |  | ||||||
| #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderImportForm.ts | #: src/admin/providers/saml/SAMLProviderImportForm.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/saml/SAMLSourceViewPage.ts | #: src/admin/sources/saml/SAMLSourceViewPage.ts | ||||||
| msgid "Metadata" | msgid "Metadata" | ||||||
| msgstr "Metadaten" | msgstr "Metadaten" | ||||||
| @ -3649,6 +3662,10 @@ msgstr "NameID Richtlinie" | |||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "NameID Eigenschaft" | msgstr "NameID Eigenschaft" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "NameID attribute" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | ||||||
| msgid "Native application" | msgid "Native application" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -4142,7 +4159,10 @@ msgstr "Outposts sind Installationen von authentik-Komponenten, die Unterstützu | |||||||
| #: src/admin/AdminInterface.ts | #: src/admin/AdminInterface.ts | ||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -4378,6 +4398,11 @@ msgstr "Erstellt durch Authentik" | |||||||
| msgid "Pre-authentication flow" | msgid "Pre-authentication flow" | ||||||
| msgstr "Vor-Authentifizierungs Ablauf" | msgstr "Vor-Authentifizierungs Ablauf" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Preview" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/crypto/CertificateKeyPairForm.ts | #: src/admin/crypto/CertificateKeyPairForm.ts | ||||||
| #: src/admin/stages/captcha/CaptchaStageForm.ts | #: src/admin/stages/captcha/CaptchaStageForm.ts | ||||||
| msgid "Private Key" | msgid "Private Key" | ||||||
| @ -6970,7 +6995,6 @@ msgstr "Warnung: Keine Einladungsphase ist an einen Ablauf gebunden. Einladungen | |||||||
| msgid "Warning: Policy is not assigned." | msgid "Warning: Policy is not assigned." | ||||||
| msgstr "Warnung: Keine Richtlinie zugewiesen" | msgstr "Warnung: Keine Richtlinie zugewiesen" | ||||||
|  |  | ||||||
| #: src/admin/providers/ldap/LDAPProviderViewPage.ts |  | ||||||
| #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/admin/providers/proxy/ProxyProviderViewPage.ts | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | |||||||
| @ -950,7 +950,10 @@ msgstr "Change your password" | |||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/flows/FlowViewPage.ts | #: src/admin/flows/FlowViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -1361,6 +1364,7 @@ msgstr "Copy" | |||||||
| #~ msgid "Copy Key" | #~ msgid "Copy Key" | ||||||
| #~ msgstr "Copy Key" | #~ msgstr "Copy Key" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Copy download URL" | msgid "Copy download URL" | ||||||
| msgstr "Copy download URL" | msgstr "Copy download URL" | ||||||
| @ -1915,7 +1919,6 @@ msgstr "Download Certificate" | |||||||
| msgid "Download Private key" | msgid "Download Private key" | ||||||
| msgstr "Download Private key" | msgstr "Download Private key" | ||||||
|  |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Download signing certificate" | msgid "Download signing certificate" | ||||||
| msgstr "Download signing certificate" | msgstr "Download signing certificate" | ||||||
| @ -2203,6 +2206,14 @@ msgstr "Events" | |||||||
| msgid "Everything is ok." | msgid "Everything is ok." | ||||||
| msgstr "Everything is ok." | msgstr "Everything is ok." | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | msgid "Example JWT payload (for currently authenticated user)" | ||||||
|  | msgstr "Example JWT payload (for currently authenticated user)" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Example SAML attributes" | ||||||
|  | msgstr "Example SAML attributes" | ||||||
|  |  | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| @ -3528,6 +3539,8 @@ msgstr "Messages" | |||||||
|  |  | ||||||
| #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderImportForm.ts | #: src/admin/providers/saml/SAMLProviderImportForm.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/saml/SAMLSourceViewPage.ts | #: src/admin/sources/saml/SAMLSourceViewPage.ts | ||||||
| msgid "Metadata" | msgid "Metadata" | ||||||
| msgstr "Metadata" | msgstr "Metadata" | ||||||
| @ -3706,6 +3719,10 @@ msgstr "NameID Policy" | |||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "NameID Property Mapping" | msgstr "NameID Property Mapping" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "NameID attribute" | ||||||
|  | msgstr "NameID attribute" | ||||||
|  |  | ||||||
| #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | ||||||
| msgid "Native application" | msgid "Native application" | ||||||
| msgstr "Native application" | msgstr "Native application" | ||||||
| @ -4213,7 +4230,10 @@ msgstr "Outposts are deployments of authentik components to support different en | |||||||
| #: src/admin/AdminInterface.ts | #: src/admin/AdminInterface.ts | ||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -4463,6 +4483,11 @@ msgstr "Powered by authentik" | |||||||
| msgid "Pre-authentication flow" | msgid "Pre-authentication flow" | ||||||
| msgstr "Pre-authentication flow" | msgstr "Pre-authentication flow" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Preview" | ||||||
|  | msgstr "Preview" | ||||||
|  |  | ||||||
| #: src/admin/crypto/CertificateKeyPairForm.ts | #: src/admin/crypto/CertificateKeyPairForm.ts | ||||||
| #: src/admin/stages/captcha/CaptchaStageForm.ts | #: src/admin/stages/captcha/CaptchaStageForm.ts | ||||||
| msgid "Private Key" | msgid "Private Key" | ||||||
| @ -7126,7 +7151,6 @@ msgstr "Warning: No invitation stage is bound to any flow. Invitations will not | |||||||
| msgid "Warning: Policy is not assigned." | msgid "Warning: Policy is not assigned." | ||||||
| msgstr "Warning: Policy is not assigned." | msgstr "Warning: Policy is not assigned." | ||||||
|  |  | ||||||
| #: src/admin/providers/ldap/LDAPProviderViewPage.ts |  | ||||||
| #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/admin/providers/proxy/ProxyProviderViewPage.ts | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | |||||||
| @ -934,7 +934,10 @@ msgstr "Cambia tu contraseña" | |||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/flows/FlowViewPage.ts | #: src/admin/flows/FlowViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -1333,6 +1336,7 @@ msgstr "Copiar" | |||||||
| #~ msgid "Copy Key" | #~ msgid "Copy Key" | ||||||
| #~ msgstr "Copiar clave" | #~ msgstr "Copiar clave" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Copy download URL" | msgid "Copy download URL" | ||||||
| msgstr "Copiar URL de descarga" | msgstr "Copiar URL de descarga" | ||||||
| @ -1871,7 +1875,6 @@ msgstr "Descargar certificado" | |||||||
| msgid "Download Private key" | msgid "Download Private key" | ||||||
| msgstr "Descargar clave privada" | msgstr "Descargar clave privada" | ||||||
|  |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Download signing certificate" | msgid "Download signing certificate" | ||||||
| msgstr "Descargar certificado de firma" | msgstr "Descargar certificado de firma" | ||||||
| @ -2147,6 +2150,14 @@ msgstr "Eventos" | |||||||
| msgid "Everything is ok." | msgid "Everything is ok." | ||||||
| msgstr "Está todo bien." | msgstr "Está todo bien." | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | msgid "Example JWT payload (for currently authenticated user)" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Example SAML attributes" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| @ -3448,6 +3459,8 @@ msgstr "Mensajes" | |||||||
|  |  | ||||||
| #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderImportForm.ts | #: src/admin/providers/saml/SAMLProviderImportForm.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/saml/SAMLSourceViewPage.ts | #: src/admin/sources/saml/SAMLSourceViewPage.ts | ||||||
| msgid "Metadata" | msgid "Metadata" | ||||||
| msgstr "Metadatos" | msgstr "Metadatos" | ||||||
| @ -3625,6 +3638,10 @@ msgstr "Política de NameID" | |||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "Mapeo de propiedades NameID" | msgstr "Mapeo de propiedades NameID" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "NameID attribute" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | ||||||
| msgid "Native application" | msgid "Native application" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -4118,7 +4135,10 @@ msgstr "Los puestos avanzados son implementaciones de componentes auténticos pa | |||||||
| #: src/admin/AdminInterface.ts | #: src/admin/AdminInterface.ts | ||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -4354,6 +4374,11 @@ msgstr "Desarrollado por authentik" | |||||||
| msgid "Pre-authentication flow" | msgid "Pre-authentication flow" | ||||||
| msgstr "Flujo de autenticación previa" | msgstr "Flujo de autenticación previa" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Preview" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/crypto/CertificateKeyPairForm.ts | #: src/admin/crypto/CertificateKeyPairForm.ts | ||||||
| #: src/admin/stages/captcha/CaptchaStageForm.ts | #: src/admin/stages/captcha/CaptchaStageForm.ts | ||||||
| msgid "Private Key" | msgid "Private Key" | ||||||
| @ -6946,7 +6971,6 @@ msgstr "Advertencia: ninguna etapa de invitación está vinculada a ningún fluj | |||||||
| msgid "Warning: Policy is not assigned." | msgid "Warning: Policy is not assigned." | ||||||
| msgstr "Advertencia: la política no está asignada." | msgstr "Advertencia: la política no está asignada." | ||||||
|  |  | ||||||
| #: src/admin/providers/ldap/LDAPProviderViewPage.ts |  | ||||||
| #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/admin/providers/proxy/ProxyProviderViewPage.ts | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | |||||||
| @ -939,7 +939,10 @@ msgstr "Changer votre mot de pass" | |||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/flows/FlowViewPage.ts | #: src/admin/flows/FlowViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -1338,6 +1341,7 @@ msgstr "Copier" | |||||||
| #~ msgid "Copy Key" | #~ msgid "Copy Key" | ||||||
| #~ msgstr "Copier la clé" | #~ msgstr "Copier la clé" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Copy download URL" | msgid "Copy download URL" | ||||||
| msgstr "Copier l'URL de téléchargement" | msgstr "Copier l'URL de téléchargement" | ||||||
| @ -1874,7 +1878,6 @@ msgstr "Télécharger le certificat" | |||||||
| msgid "Download Private key" | msgid "Download Private key" | ||||||
| msgstr "Télécharger la clé privée" | msgstr "Télécharger la clé privée" | ||||||
|  |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Download signing certificate" | msgid "Download signing certificate" | ||||||
| msgstr "Télécharger le certificat de signature" | msgstr "Télécharger le certificat de signature" | ||||||
| @ -2150,6 +2153,14 @@ msgstr "Évènements" | |||||||
| msgid "Everything is ok." | msgid "Everything is ok." | ||||||
| msgstr "Tout va bien." | msgstr "Tout va bien." | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | msgid "Example JWT payload (for currently authenticated user)" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Example SAML attributes" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| @ -3449,6 +3460,8 @@ msgstr "Messages" | |||||||
|  |  | ||||||
| #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderImportForm.ts | #: src/admin/providers/saml/SAMLProviderImportForm.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/saml/SAMLSourceViewPage.ts | #: src/admin/sources/saml/SAMLSourceViewPage.ts | ||||||
| msgid "Metadata" | msgid "Metadata" | ||||||
| msgstr "Métadonnées" | msgstr "Métadonnées" | ||||||
| @ -3626,6 +3639,10 @@ msgstr "Politique NameID" | |||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "Mappage de la propriété NameID" | msgstr "Mappage de la propriété NameID" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "NameID attribute" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | ||||||
| msgid "Native application" | msgid "Native application" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -4119,7 +4136,10 @@ msgstr "Les avant-postes sont des déploiements de composants Authentik pour pre | |||||||
| #: src/admin/AdminInterface.ts | #: src/admin/AdminInterface.ts | ||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -4355,6 +4375,11 @@ msgstr "Propulsé par authentik" | |||||||
| msgid "Pre-authentication flow" | msgid "Pre-authentication flow" | ||||||
| msgstr "Flux de pré-authentification" | msgstr "Flux de pré-authentification" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Preview" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/crypto/CertificateKeyPairForm.ts | #: src/admin/crypto/CertificateKeyPairForm.ts | ||||||
| #: src/admin/stages/captcha/CaptchaStageForm.ts | #: src/admin/stages/captcha/CaptchaStageForm.ts | ||||||
| msgid "Private Key" | msgid "Private Key" | ||||||
| @ -6937,7 +6962,6 @@ msgstr "Attention : aucune étape d’invitation n’a été ajoutée à aucun f | |||||||
| msgid "Warning: Policy is not assigned." | msgid "Warning: Policy is not assigned." | ||||||
| msgstr "Avertissement : la politique n'est pas assignée." | msgstr "Avertissement : la politique n'est pas assignée." | ||||||
|  |  | ||||||
| #: src/admin/providers/ldap/LDAPProviderViewPage.ts |  | ||||||
| #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/admin/providers/proxy/ProxyProviderViewPage.ts | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | |||||||
| @ -938,7 +938,10 @@ msgstr "Zmień swoje hasło" | |||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/flows/FlowViewPage.ts | #: src/admin/flows/FlowViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -1339,6 +1342,7 @@ msgstr "Kopiuj" | |||||||
| #~ msgid "Copy Key" | #~ msgid "Copy Key" | ||||||
| #~ msgstr "Kopiuj klucz" | #~ msgstr "Kopiuj klucz" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Copy download URL" | msgid "Copy download URL" | ||||||
| msgstr "Skopiuj URL pobierania" | msgstr "Skopiuj URL pobierania" | ||||||
| @ -1877,7 +1881,6 @@ msgstr "Pobierz certyfikat" | |||||||
| msgid "Download Private key" | msgid "Download Private key" | ||||||
| msgstr "Pobierz klucz prywatny" | msgstr "Pobierz klucz prywatny" | ||||||
|  |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Download signing certificate" | msgid "Download signing certificate" | ||||||
| msgstr "Pobierz certyfikat podpisywania" | msgstr "Pobierz certyfikat podpisywania" | ||||||
| @ -2153,6 +2156,14 @@ msgstr "Zdarzenia" | |||||||
| msgid "Everything is ok." | msgid "Everything is ok." | ||||||
| msgstr "Wszystko w porządku." | msgstr "Wszystko w porządku." | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | msgid "Example JWT payload (for currently authenticated user)" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Example SAML attributes" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| @ -3456,6 +3467,8 @@ msgstr "Wiadomości" | |||||||
|  |  | ||||||
| #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderImportForm.ts | #: src/admin/providers/saml/SAMLProviderImportForm.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/saml/SAMLSourceViewPage.ts | #: src/admin/sources/saml/SAMLSourceViewPage.ts | ||||||
| msgid "Metadata" | msgid "Metadata" | ||||||
| msgstr "Metadane" | msgstr "Metadane" | ||||||
| @ -3633,6 +3646,10 @@ msgstr "Zasada NameID" | |||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "Mapowanie właściwości NameID" | msgstr "Mapowanie właściwości NameID" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "NameID attribute" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | ||||||
| msgid "Native application" | msgid "Native application" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -4126,7 +4143,10 @@ msgstr "Placówki (Outposts) to wdrożenia komponentów uwierzytelniających do | |||||||
| #: src/admin/AdminInterface.ts | #: src/admin/AdminInterface.ts | ||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -4364,6 +4384,11 @@ msgstr "Napędzane przez authentik" | |||||||
| msgid "Pre-authentication flow" | msgid "Pre-authentication flow" | ||||||
| msgstr "Przepływ wstępnego uwierzytelniania" | msgstr "Przepływ wstępnego uwierzytelniania" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Preview" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/crypto/CertificateKeyPairForm.ts | #: src/admin/crypto/CertificateKeyPairForm.ts | ||||||
| #: src/admin/stages/captcha/CaptchaStageForm.ts | #: src/admin/stages/captcha/CaptchaStageForm.ts | ||||||
| msgid "Private Key" | msgid "Private Key" | ||||||
| @ -6956,7 +6981,6 @@ msgstr "Ostrzeżenie: żaden etap zaproszenia nie jest powiązany z żadnym prze | |||||||
| msgid "Warning: Policy is not assigned." | msgid "Warning: Policy is not assigned." | ||||||
| msgstr "Ostrzeżenie: zasada nie jest przypisana." | msgstr "Ostrzeżenie: zasada nie jest przypisana." | ||||||
|  |  | ||||||
| #: src/admin/providers/ldap/LDAPProviderViewPage.ts |  | ||||||
| #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/admin/providers/proxy/ProxyProviderViewPage.ts | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | |||||||
| @ -942,7 +942,10 @@ msgstr "" | |||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/flows/FlowViewPage.ts | #: src/admin/flows/FlowViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -1349,6 +1352,7 @@ msgstr "" | |||||||
| #~ msgid "Copy Key" | #~ msgid "Copy Key" | ||||||
| #~ msgstr "" | #~ msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Copy download URL" | msgid "Copy download URL" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -1901,7 +1905,6 @@ msgstr "" | |||||||
| msgid "Download Private key" | msgid "Download Private key" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Download signing certificate" | msgid "Download signing certificate" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -2189,6 +2192,14 @@ msgstr "" | |||||||
| msgid "Everything is ok." | msgid "Everything is ok." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | msgid "Example JWT payload (for currently authenticated user)" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Example SAML attributes" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| @ -3510,6 +3521,8 @@ msgstr "" | |||||||
|  |  | ||||||
| #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderImportForm.ts | #: src/admin/providers/saml/SAMLProviderImportForm.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/saml/SAMLSourceViewPage.ts | #: src/admin/sources/saml/SAMLSourceViewPage.ts | ||||||
| msgid "Metadata" | msgid "Metadata" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -3688,6 +3701,10 @@ msgstr "" | |||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "NameID attribute" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | ||||||
| msgid "Native application" | msgid "Native application" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -4195,7 +4212,10 @@ msgstr "" | |||||||
| #: src/admin/AdminInterface.ts | #: src/admin/AdminInterface.ts | ||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -4443,6 +4463,11 @@ msgstr "" | |||||||
| msgid "Pre-authentication flow" | msgid "Pre-authentication flow" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Preview" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/crypto/CertificateKeyPairForm.ts | #: src/admin/crypto/CertificateKeyPairForm.ts | ||||||
| #: src/admin/stages/captcha/CaptchaStageForm.ts | #: src/admin/stages/captcha/CaptchaStageForm.ts | ||||||
| msgid "Private Key" | msgid "Private Key" | ||||||
| @ -7096,7 +7121,6 @@ msgstr "" | |||||||
| msgid "Warning: Policy is not assigned." | msgid "Warning: Policy is not assigned." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/providers/ldap/LDAPProviderViewPage.ts |  | ||||||
| #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/admin/providers/proxy/ProxyProviderViewPage.ts | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | |||||||
| @ -934,7 +934,10 @@ msgstr "Parolanızı değiştirin" | |||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/flows/FlowViewPage.ts | #: src/admin/flows/FlowViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -1333,6 +1336,7 @@ msgstr "Kopya" | |||||||
| #~ msgid "Copy Key" | #~ msgid "Copy Key" | ||||||
| #~ msgstr "Anahtar Kopyala" | #~ msgstr "Anahtar Kopyala" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Copy download URL" | msgid "Copy download URL" | ||||||
| msgstr "İndirme URL'sini" | msgstr "İndirme URL'sini" | ||||||
| @ -1871,7 +1875,6 @@ msgstr "Sertifikayı İndirin" | |||||||
| msgid "Download Private key" | msgid "Download Private key" | ||||||
| msgstr "Indir Özel anahtar" | msgstr "Indir Özel anahtar" | ||||||
|  |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Download signing certificate" | msgid "Download signing certificate" | ||||||
| msgstr "İmzalama sertifikasını indirme" | msgstr "İmzalama sertifikasını indirme" | ||||||
| @ -2147,6 +2150,14 @@ msgstr "Olaylar" | |||||||
| msgid "Everything is ok." | msgid "Everything is ok." | ||||||
| msgstr "Her şey yolunda." | msgstr "Her şey yolunda." | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | msgid "Example JWT payload (for currently authenticated user)" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Example SAML attributes" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| @ -3448,6 +3459,8 @@ msgstr "İletiler" | |||||||
|  |  | ||||||
| #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderImportForm.ts | #: src/admin/providers/saml/SAMLProviderImportForm.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/saml/SAMLSourceViewPage.ts | #: src/admin/sources/saml/SAMLSourceViewPage.ts | ||||||
| msgid "Metadata" | msgid "Metadata" | ||||||
| msgstr "Meta veriler" | msgstr "Meta veriler" | ||||||
| @ -3625,6 +3638,10 @@ msgstr "NameID İlkesi" | |||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "NameID Özellik Eşlemesi" | msgstr "NameID Özellik Eşlemesi" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "NameID attribute" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | ||||||
| msgid "Native application" | msgid "Native application" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -4118,7 +4135,10 @@ msgstr "Outposts, ters proxy'ler gibi farklı ortamları ve protokolleri destekl | |||||||
| #: src/admin/AdminInterface.ts | #: src/admin/AdminInterface.ts | ||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -4354,6 +4374,11 @@ msgstr "Auentik tarafından desteklenmektedir" | |||||||
| msgid "Pre-authentication flow" | msgid "Pre-authentication flow" | ||||||
| msgstr "Ön kimlik doğrulama akışı" | msgstr "Ön kimlik doğrulama akışı" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Preview" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/crypto/CertificateKeyPairForm.ts | #: src/admin/crypto/CertificateKeyPairForm.ts | ||||||
| #: src/admin/stages/captcha/CaptchaStageForm.ts | #: src/admin/stages/captcha/CaptchaStageForm.ts | ||||||
| msgid "Private Key" | msgid "Private Key" | ||||||
| @ -6946,7 +6971,6 @@ msgstr "Uyarı: Hiçbir davetiye aşaması herhangi bir akışa bağlı değildi | |||||||
| msgid "Warning: Policy is not assigned." | msgid "Warning: Policy is not assigned." | ||||||
| msgstr "Uyarı: İlke atanmamış." | msgstr "Uyarı: İlke atanmamış." | ||||||
|  |  | ||||||
| #: src/admin/providers/ldap/LDAPProviderViewPage.ts |  | ||||||
| #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/admin/providers/proxy/ProxyProviderViewPage.ts | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | |||||||
| @ -940,7 +940,10 @@ msgstr "更改您的密码" | |||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/flows/FlowViewPage.ts | #: src/admin/flows/FlowViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -1341,6 +1344,7 @@ msgstr "复制" | |||||||
| #~ msgid "Copy Key" | #~ msgid "Copy Key" | ||||||
| #~ msgstr "复制密钥" | #~ msgstr "复制密钥" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Copy download URL" | msgid "Copy download URL" | ||||||
| msgstr "复制下载 URL" | msgstr "复制下载 URL" | ||||||
| @ -1879,7 +1883,6 @@ msgstr "下载证书" | |||||||
| msgid "Download Private key" | msgid "Download Private key" | ||||||
| msgstr "下载私钥" | msgstr "下载私钥" | ||||||
|  |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Download signing certificate" | msgid "Download signing certificate" | ||||||
| msgstr "下载签名证书" | msgstr "下载签名证书" | ||||||
| @ -2155,6 +2158,14 @@ msgstr "事件" | |||||||
| msgid "Everything is ok." | msgid "Everything is ok." | ||||||
| msgstr "一切正常。" | msgstr "一切正常。" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | msgid "Example JWT payload (for currently authenticated user)" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Example SAML attributes" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| @ -3456,6 +3467,8 @@ msgstr "消息" | |||||||
|  |  | ||||||
| #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderImportForm.ts | #: src/admin/providers/saml/SAMLProviderImportForm.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/saml/SAMLSourceViewPage.ts | #: src/admin/sources/saml/SAMLSourceViewPage.ts | ||||||
| msgid "Metadata" | msgid "Metadata" | ||||||
| msgstr "元数据" | msgstr "元数据" | ||||||
| @ -3633,6 +3646,10 @@ msgstr "NameID 策略" | |||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "NameID 属性映射" | msgstr "NameID 属性映射" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "NameID attribute" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | ||||||
| msgid "Native application" | msgid "Native application" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -4126,7 +4143,10 @@ msgstr "前哨是对 authentik 组件的部署,用于支持不同的环境和 | |||||||
| #: src/admin/AdminInterface.ts | #: src/admin/AdminInterface.ts | ||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -4362,6 +4382,11 @@ msgstr "由 authentik 强力驱动" | |||||||
| msgid "Pre-authentication flow" | msgid "Pre-authentication flow" | ||||||
| msgstr "身份验证前流程" | msgstr "身份验证前流程" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Preview" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/crypto/CertificateKeyPairForm.ts | #: src/admin/crypto/CertificateKeyPairForm.ts | ||||||
| #: src/admin/stages/captcha/CaptchaStageForm.ts | #: src/admin/stages/captcha/CaptchaStageForm.ts | ||||||
| msgid "Private Key" | msgid "Private Key" | ||||||
| @ -6954,7 +6979,6 @@ msgstr "警告:没有邀请阶段绑定到任何流程。邀请将无法按预 | |||||||
| msgid "Warning: Policy is not assigned." | msgid "Warning: Policy is not assigned." | ||||||
| msgstr "警告:策略未分配。" | msgstr "警告:策略未分配。" | ||||||
|  |  | ||||||
| #: src/admin/providers/ldap/LDAPProviderViewPage.ts |  | ||||||
| #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/admin/providers/proxy/ProxyProviderViewPage.ts | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | |||||||
| @ -940,7 +940,10 @@ msgstr "更改你的密码" | |||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/flows/FlowViewPage.ts | #: src/admin/flows/FlowViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -1341,6 +1344,7 @@ msgstr "复制" | |||||||
| #~ msgid "Copy Key" | #~ msgid "Copy Key" | ||||||
| #~ msgstr "复制密钥" | #~ msgstr "复制密钥" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Copy download URL" | msgid "Copy download URL" | ||||||
| msgstr "复制下载 URL" | msgstr "复制下载 URL" | ||||||
| @ -1879,7 +1883,6 @@ msgstr "下载证书" | |||||||
| msgid "Download Private key" | msgid "Download Private key" | ||||||
| msgstr "下载私钥" | msgstr "下载私钥" | ||||||
|  |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Download signing certificate" | msgid "Download signing certificate" | ||||||
| msgstr "下载签名证书" | msgstr "下载签名证书" | ||||||
| @ -2155,6 +2158,14 @@ msgstr "事件" | |||||||
| msgid "Everything is ok." | msgid "Everything is ok." | ||||||
| msgstr "一切正常。" | msgstr "一切正常。" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | msgid "Example JWT payload (for currently authenticated user)" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Example SAML attributes" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| @ -3456,6 +3467,8 @@ msgstr "信息" | |||||||
|  |  | ||||||
| #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderImportForm.ts | #: src/admin/providers/saml/SAMLProviderImportForm.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/saml/SAMLSourceViewPage.ts | #: src/admin/sources/saml/SAMLSourceViewPage.ts | ||||||
| msgid "Metadata" | msgid "Metadata" | ||||||
| msgstr "元数据" | msgstr "元数据" | ||||||
| @ -3633,6 +3646,10 @@ msgstr "NameID 政策" | |||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "nameID 属性映射" | msgstr "nameID 属性映射" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "NameID attribute" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | ||||||
| msgid "Native application" | msgid "Native application" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -4126,7 +4143,10 @@ msgstr "Outpost  是对 authentik 组件的部署,以支持不同的环境和 | |||||||
| #: src/admin/AdminInterface.ts | #: src/admin/AdminInterface.ts | ||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -4362,6 +4382,11 @@ msgstr "由 authentik 强力驱动" | |||||||
| msgid "Pre-authentication flow" | msgid "Pre-authentication flow" | ||||||
| msgstr "身份验证前流程" | msgstr "身份验证前流程" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Preview" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/crypto/CertificateKeyPairForm.ts | #: src/admin/crypto/CertificateKeyPairForm.ts | ||||||
| #: src/admin/stages/captcha/CaptchaStageForm.ts | #: src/admin/stages/captcha/CaptchaStageForm.ts | ||||||
| msgid "Private Key" | msgid "Private Key" | ||||||
| @ -6954,7 +6979,6 @@ msgstr "警告:没有邀请阶段绑定到任何流程。邀请将无法按预 | |||||||
| msgid "Warning: Policy is not assigned." | msgid "Warning: Policy is not assigned." | ||||||
| msgstr "警告:策略未分配。" | msgstr "警告:策略未分配。" | ||||||
|  |  | ||||||
| #: src/admin/providers/ldap/LDAPProviderViewPage.ts |  | ||||||
| #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/admin/providers/proxy/ProxyProviderViewPage.ts | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | |||||||
| @ -940,7 +940,10 @@ msgstr "更改你的密码" | |||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/flows/FlowViewPage.ts | #: src/admin/flows/FlowViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -1341,6 +1344,7 @@ msgstr "复制" | |||||||
| #~ msgid "Copy Key" | #~ msgid "Copy Key" | ||||||
| #~ msgstr "复制密钥" | #~ msgstr "复制密钥" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Copy download URL" | msgid "Copy download URL" | ||||||
| msgstr "复制下载 URL" | msgstr "复制下载 URL" | ||||||
| @ -1879,7 +1883,6 @@ msgstr "下载证书" | |||||||
| msgid "Download Private key" | msgid "Download Private key" | ||||||
| msgstr "下载私钥" | msgstr "下载私钥" | ||||||
|  |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts |  | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| msgid "Download signing certificate" | msgid "Download signing certificate" | ||||||
| msgstr "下载签名证书" | msgstr "下载签名证书" | ||||||
| @ -2155,6 +2158,14 @@ msgstr "事件" | |||||||
| msgid "Everything is ok." | msgid "Everything is ok." | ||||||
| msgstr "一切正常。" | msgstr "一切正常。" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | msgid "Example JWT payload (for currently authenticated user)" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Example SAML attributes" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| #: src/admin/events/EventInfo.ts | #: src/admin/events/EventInfo.ts | ||||||
| @ -3456,6 +3467,8 @@ msgstr "信息" | |||||||
|  |  | ||||||
| #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderImportForm.ts | #: src/admin/providers/saml/SAMLProviderImportForm.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/saml/SAMLSourceViewPage.ts | #: src/admin/sources/saml/SAMLSourceViewPage.ts | ||||||
| msgid "Metadata" | msgid "Metadata" | ||||||
| msgstr "元数据" | msgstr "元数据" | ||||||
| @ -3633,6 +3646,10 @@ msgstr "NameID 政策" | |||||||
| msgid "NameID Property Mapping" | msgid "NameID Property Mapping" | ||||||
| msgstr "nameID 属性映射" | msgstr "nameID 属性映射" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "NameID attribute" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts | ||||||
| msgid "Native application" | msgid "Native application" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -4126,7 +4143,10 @@ msgstr "Outpost  是对 authentik 组件的部署,以支持不同的环境和 | |||||||
| #: src/admin/AdminInterface.ts | #: src/admin/AdminInterface.ts | ||||||
| #: src/admin/applications/ApplicationViewPage.ts | #: src/admin/applications/ApplicationViewPage.ts | ||||||
| #: src/admin/groups/GroupViewPage.ts | #: src/admin/groups/GroupViewPage.ts | ||||||
| #: src/admin/providers/ProviderViewPage.ts | #: src/admin/providers/ldap/LDAPProviderViewPage.ts | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/admin/sources/ldap/LDAPSourceViewPage.ts | #: src/admin/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/admin/sources/oauth/OAuthSourceViewPage.ts | #: src/admin/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/admin/sources/plex/PlexSourceViewPage.ts | #: src/admin/sources/plex/PlexSourceViewPage.ts | ||||||
| @ -4362,6 +4382,11 @@ msgstr "由 authentik 强力驱动" | |||||||
| msgid "Pre-authentication flow" | msgid "Pre-authentication flow" | ||||||
| msgstr "身份验证前流程" | msgstr "身份验证前流程" | ||||||
|  |  | ||||||
|  | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
|  | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | msgid "Preview" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/admin/crypto/CertificateKeyPairForm.ts | #: src/admin/crypto/CertificateKeyPairForm.ts | ||||||
| #: src/admin/stages/captcha/CaptchaStageForm.ts | #: src/admin/stages/captcha/CaptchaStageForm.ts | ||||||
| msgid "Private Key" | msgid "Private Key" | ||||||
| @ -6954,7 +6979,6 @@ msgstr "警告:没有邀请阶段绑定到任何流程。邀请将无法按预 | |||||||
| msgid "Warning: Policy is not assigned." | msgid "Warning: Policy is not assigned." | ||||||
| msgstr "警告:策略未分配。" | msgstr "警告:策略未分配。" | ||||||
|  |  | ||||||
| #: src/admin/providers/ldap/LDAPProviderViewPage.ts |  | ||||||
| #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/admin/providers/proxy/ProxyProviderViewPage.ts | #: src/admin/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/admin/providers/saml/SAMLProviderViewPage.ts | #: src/admin/providers/saml/SAMLProviderViewPage.ts | ||||||
|  | |||||||
| @ -13,6 +13,10 @@ slug: "2022.12" | |||||||
|  |  | ||||||
|     The captcha stage now supports alternate compatible providers, like [hCaptcha](https://docs.hcaptcha.com/switch/) and [Turnstile](https://developers.cloudflare.com/turnstile/get-started/migrating-from-recaptcha/). |     The captcha stage now supports alternate compatible providers, like [hCaptcha](https://docs.hcaptcha.com/switch/) and [Turnstile](https://developers.cloudflare.com/turnstile/get-started/migrating-from-recaptcha/). | ||||||
|  |  | ||||||
|  | -   Preview for OAuth2 and SAML providers | ||||||
|  |  | ||||||
|  |     OAuth2 and SAML providers can now preview what the currently selected property/scope mappings's outcome will look like. This helps with seeing what data is sent to the client and implementing and testing custom mappings. | ||||||
|  |  | ||||||
| ## Upgrading | ## Upgrading | ||||||
|  |  | ||||||
| This release does not introduce any new requirements. | This release does not introduce any new requirements. | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Jens L
					Jens L