diff --git a/authentik/api/v3/urls.py b/authentik/api/v3/urls.py index d4e1e2a07..d6989460d 100644 --- a/authentik/api/v3/urls.py +++ b/authentik/api/v3/urls.py @@ -49,11 +49,12 @@ from authentik.policies.hibp.api import HaveIBeenPwendPolicyViewSet from authentik.policies.password.api import PasswordPolicyViewSet from authentik.policies.reputation.api import ReputationPolicyViewSet, ReputationViewSet from authentik.providers.ldap.api import LDAPOutpostConfigViewSet, LDAPProviderViewSet -from authentik.providers.oauth2.api.provider import OAuth2ProviderViewSet -from authentik.providers.oauth2.api.scope import ScopeMappingViewSet +from authentik.providers.oauth2.api.providers import OAuth2ProviderViewSet +from authentik.providers.oauth2.api.scopes import ScopeMappingViewSet from authentik.providers.oauth2.api.tokens import AuthorizationCodeViewSet, RefreshTokenViewSet 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.oauth.api.source import OAuthSourceViewSet from authentik.sources.oauth.api.source_connection import UserOAuthSourceConnectionViewSet diff --git a/authentik/core/api/utils.py b/authentik/core/api/utils.py index 40c9e9e1d..cf1870197 100644 --- a/authentik/core/api/utils.py +++ b/authentik/core/api/utils.py @@ -2,7 +2,7 @@ from typing import Any 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 @@ -23,6 +23,12 @@ class PassiveSerializer(Serializer): 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): """Add verbose names to response""" diff --git a/authentik/providers/oauth2/api/provider.py b/authentik/providers/oauth2/api/providers.py similarity index 76% rename from authentik/providers/oauth2/api/provider.py rename to authentik/providers/oauth2/api/providers.py index 7ee52209d..d929b93b5 100644 --- a/authentik/providers/oauth2/api/provider.py +++ b/authentik/providers/oauth2/api/providers.py @@ -8,11 +8,12 @@ from rest_framework.request import Request from rest_framework.response import Response from rest_framework.viewsets import ModelViewSet +from authentik.api.decorators import permission_required from authentik.core.api.providers import ProviderSerializer 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.providers.oauth2.models import OAuth2Provider +from authentik.providers.oauth2.models import OAuth2Provider, RefreshToken, ScopeMapping class OAuth2ProviderSerializer(ProviderSerializer): @@ -115,7 +116,7 @@ class OAuth2ProviderViewSet(UsedByMixin, ModelViewSet): ) data["logout"] = request.build_absolute_uri( reverse( - "authentik_core:if-session-end", + "authentik_providers_oauth2:end-session", kwargs={"application_slug": provider.application.slug}, ) ) @@ -128,3 +129,28 @@ class OAuth2ProviderViewSet(UsedByMixin, ModelViewSet): except Provider.application.RelatedObjectDoesNotExist: # pylint: disable=no-member pass 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) diff --git a/authentik/providers/oauth2/api/scope.py b/authentik/providers/oauth2/api/scopes.py similarity index 100% rename from authentik/providers/oauth2/api/scope.py rename to authentik/providers/oauth2/api/scopes.py diff --git a/authentik/providers/oauth2/api/tokens.py b/authentik/providers/oauth2/api/tokens.py index b65679658..882c28e57 100644 --- a/authentik/providers/oauth2/api/tokens.py +++ b/authentik/providers/oauth2/api/tokens.py @@ -12,7 +12,7 @@ from rest_framework.viewsets import GenericViewSet from authentik.core.api.used_by import UsedByMixin from authentik.core.api.users import UserSerializer 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 diff --git a/authentik/providers/oauth2/models.py b/authentik/providers/oauth2/models.py index 3b9136567..2b6e77a0c 100644 --- a/authentik/providers/oauth2/models.py +++ b/authentik/providers/oauth2/models.py @@ -128,7 +128,7 @@ class ScopeMapping(PropertyMapping): @property def serializer(self) -> type[Serializer]: - from authentik.providers.oauth2.api.scope import ScopeMappingSerializer + from authentik.providers.oauth2.api.scopes import ScopeMappingSerializer return ScopeMappingSerializer @@ -300,7 +300,7 @@ class OAuth2Provider(Provider): @property def serializer(self) -> type[Serializer]: - from authentik.providers.oauth2.api.provider import OAuth2ProviderSerializer + from authentik.providers.oauth2.api.providers import OAuth2ProviderSerializer return OAuth2ProviderSerializer diff --git a/authentik/providers/oauth2/tests/test_api.py b/authentik/providers/oauth2/tests/test_api.py new file mode 100644 index 000000000..4f93c902e --- /dev/null +++ b/authentik/providers/oauth2/tests/test_api.py @@ -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/") diff --git a/authentik/providers/oauth2/views/provider.py b/authentik/providers/oauth2/views/provider.py index 80080cc40..a23b14f31 100644 --- a/authentik/providers/oauth2/views/provider.py +++ b/authentik/providers/oauth2/views/provider.py @@ -52,7 +52,7 @@ class ProviderInfoView(View): ), "end_session_endpoint": self.request.build_absolute_uri( reverse( - "authentik_core:if-session-end", + "authentik_providers_oauth2:end-session", kwargs={"application_slug": provider.application.slug}, ) ), diff --git a/authentik/providers/saml/api/__init__.py b/authentik/providers/saml/api/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/authentik/providers/saml/api/property_mapping.py b/authentik/providers/saml/api/property_mapping.py new file mode 100644 index 000000000..33c1e0cc4 --- /dev/null +++ b/authentik/providers/saml/api/property_mapping.py @@ -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"] diff --git a/authentik/providers/saml/api.py b/authentik/providers/saml/api/providers.py similarity index 85% rename from authentik/providers/saml/api.py rename to authentik/providers/saml/api/providers.py index 70a86a8cf..7024932a3 100644 --- a/authentik/providers/saml/api.py +++ b/authentik/providers/saml/api/providers.py @@ -7,15 +7,8 @@ from django.http.response import Http404, HttpResponse from django.shortcuts import get_object_or_404 from django.urls import reverse 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.utils import ( - OpenApiParameter, - OpenApiResponse, - extend_schema, - extend_schema_field, -) +from drf_spectacular.utils import OpenApiParameter, OpenApiResponse, extend_schema from rest_framework.decorators import action from rest_framework.fields import CharField, FileField, SerializerMethodField from rest_framework.parsers import MultiPartParser @@ -28,15 +21,16 @@ from rest_framework.viewsets import ModelViewSet from structlog.stdlib import get_logger 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.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.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_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 LOGGER = get_logger() @@ -236,34 +230,31 @@ class SAMLProviderViewSet(UsedByMixin, ModelViewSet): ) return Response(status=204) - -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"] + @permission_required( + "authentik_providers_saml.view_samlprovider", + ) + @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: SAMLProvider = self.get_object() + processor = AssertionProcessor(provider, request._request, AuthNRequest()) + attributes = processor.get_attributes() + name_id = processor.get_name_id() + data = [] + for attribute in attributes: + item = {"Value": []} + item.update(attribute.attrib) + for value in attribute: + item["Value"].append(value.text) + data.append(item) + serializer = PropertyMappingPreviewSerializer( + instance={"preview": {"attributes": data, "nameID": name_id.text}} + ) + return Response(serializer.data) diff --git a/authentik/providers/saml/models.py b/authentik/providers/saml/models.py index 172ff956c..19c7e4395 100644 --- a/authentik/providers/saml/models.py +++ b/authentik/providers/saml/models.py @@ -164,7 +164,7 @@ class SAMLProvider(Provider): @property def serializer(self) -> type[Serializer]: - from authentik.providers.saml.api import SAMLProviderSerializer + from authentik.providers.saml.api.providers import SAMLProviderSerializer return SAMLProviderSerializer @@ -193,7 +193,7 @@ class SAMLPropertyMapping(PropertyMapping): @property def serializer(self) -> type[Serializer]: - from authentik.providers.saml.api import SAMLPropertyMappingSerializer + from authentik.providers.saml.api.property_mapping import SAMLPropertyMappingSerializer return SAMLPropertyMappingSerializer diff --git a/authentik/providers/saml/tests/test_api.py b/authentik/providers/saml/tests/test_api.py index ecbe5227c..36d61af66 100644 --- a/authentik/providers/saml/tests/test_api.py +++ b/authentik/providers/saml/tests/test_api.py @@ -1,13 +1,15 @@ """SAML Provider API Tests""" +from json import loads from tempfile import TemporaryFile 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.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 @@ -107,3 +109,24 @@ class TestSAMLProviderAPI(APITestCase): format="multipart", ) 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], + ) diff --git a/authentik/sources/saml/api/source.py b/authentik/sources/saml/api/source.py index 4a70b42eb..4d4abbaac 100644 --- a/authentik/sources/saml/api/source.py +++ b/authentik/sources/saml/api/source.py @@ -8,7 +8,7 @@ from rest_framework.viewsets import ModelViewSet from authentik.core.api.sources import SourceSerializer 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.processors.metadata import MetadataProcessor diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 0cbff2795..a09808f34 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -988,11 +988,11 @@ msgstr "" msgid "Proxy Providers" msgstr "" -#: authentik/providers/saml/api.py:225 +#: authentik/providers/saml/api.py:227 msgid "Invalid XML Syntax" msgstr "" -#: authentik/providers/saml/api.py:235 +#: authentik/providers/saml/api.py:237 #, python-format msgid "Failed to import Metadata: %(message)s" msgstr "" diff --git a/schema.yml b/schema.yml index 467a281fe..73ca76df9 100644 --- a/schema.yml +++ b/schema.yml @@ -14663,6 +14663,36 @@ paths: schema: $ref: '#/components/schemas/GenericError' 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/: get: operationId: providers_oauth2_setup_urls_retrieve @@ -15424,6 +15454,36 @@ paths: schema: $ref: '#/components/schemas/GenericError' 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/: get: operationId: providers_saml_used_by_list @@ -35719,6 +35779,17 @@ components: - pk - verbose_name - 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: type: object description: Result of a Property-mapping test @@ -36455,6 +36526,8 @@ components: minLength: 1 authorization_flow: type: string + minLength: 1 + description: Visible in the URL. file: type: string format: binary diff --git a/tests/e2e/test_provider_oauth2_grafana.py b/tests/e2e/test_provider_oauth2_grafana.py index 776a31363..80ebe41e2 100644 --- a/tests/e2e/test_provider_oauth2_grafana.py +++ b/tests/e2e/test_provider_oauth2_grafana.py @@ -57,7 +57,7 @@ class TestProviderOAuth2OAuth(SeleniumTestCase): "GF_AUTH_GENERIC_OAUTH_API_URL": (self.url("authentik_providers_oauth2:userinfo")), "GF_AUTH_SIGNOUT_REDIRECT_URL": ( self.url( - "authentik_core:if-session-end", + "authentik_providers_oauth2:end-session", application_slug=self.app_slug, ) ), diff --git a/web/src/admin/applications/ApplicationForm.ts b/web/src/admin/applications/ApplicationForm.ts index c3e34bba2..3e2df4d3b 100644 --- a/web/src/admin/applications/ApplicationForm.ts +++ b/web/src/admin/applications/ApplicationForm.ts @@ -192,7 +192,7 @@ export class ApplicationForm extends ModelForm { diff --git a/web/src/admin/applications/ApplicationViewPage.ts b/web/src/admin/applications/ApplicationViewPage.ts index 2c2cec801..ffd80733a 100644 --- a/web/src/admin/applications/ApplicationViewPage.ts +++ b/web/src/admin/applications/ApplicationViewPage.ts @@ -122,8 +122,13 @@ export class ApplicationViewPage extends AKElement {
${this.application.providerObj?.name} (${this.application.providerObj?.verboseName}) diff --git a/web/src/admin/providers/ProviderViewPage.ts b/web/src/admin/providers/ProviderViewPage.ts index 9631d3ba2..3b8188698 100644 --- a/web/src/admin/providers/ProviderViewPage.ts +++ b/web/src/admin/providers/ProviderViewPage.ts @@ -8,8 +8,6 @@ import "@goauthentik/elements/EmptyState"; import "@goauthentik/elements/PageHeader"; import "@goauthentik/elements/buttons/SpinnerButton"; -import { t } from "@lingui/macro"; - import { CSSResult, TemplateResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; @@ -70,25 +68,6 @@ export class ProviderViewPage extends AKElement { description=${ifDefined(this.provider?.verboseName)} > - -
- ${this.renderProvider()} -
-
-
-
- - -
-
-
-
`; + ${this.renderProvider()}`; } } diff --git a/web/src/admin/providers/ldap/LDAPProviderViewPage.ts b/web/src/admin/providers/ldap/LDAPProviderViewPage.ts index d094bd3de..b3b8a310f 100644 --- a/web/src/admin/providers/ldap/LDAPProviderViewPage.ts +++ b/web/src/admin/providers/ldap/LDAPProviderViewPage.ts @@ -80,13 +80,33 @@ export class LDAPProviderViewPage extends AKElement { if (!this.provider) { return html``; } - return html`${ - this.provider?.assignedApplicationName - ? html`` - : html`
- ${t`Warning: Provider is not used by an Application.`} -
` + return html` +
+ ${this.renderTabOverview()} +
+
+
+
+ + +
+
+
+
`; + } + + renderTabOverview(): TemplateResult { + if (!this.provider) { + return html``; } + return html` ${ this.provider?.outpostSet.length < 1 ? html`
diff --git a/web/src/admin/providers/oauth2/OAuth2ProviderViewPage.ts b/web/src/admin/providers/oauth2/OAuth2ProviderViewPage.ts index d85ff6846..009efcd19 100644 --- a/web/src/admin/providers/oauth2/OAuth2ProviderViewPage.ts +++ b/web/src/admin/providers/oauth2/OAuth2ProviderViewPage.ts @@ -16,6 +16,7 @@ import { t } from "@lingui/macro"; import { CSSResult, TemplateResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; +import { until } from "lit/directives/until.js"; import AKGlobal from "@goauthentik/common/styles/authentik.css"; import PFBanner from "@patternfly/patternfly/components/Banner/banner.css"; @@ -79,6 +80,35 @@ export class OAuth2ProviderViewPage extends AKElement { } render(): TemplateResult { + if (!this.provider) { + return html``; + } + return html` +
+ ${this.renderTabOverview()} +
+
+ ${this.renderTabPreview()} +
+
+
+
+ + +
+
+
+
`; + } + + renderTabOverview(): TemplateResult { if (!this.provider) { return html``; } @@ -277,4 +307,30 @@ export class OAuth2ProviderViewPage extends AKElement {
`; } + + renderTabPreview(): TemplateResult { + if (!this.provider) { + return html``; + } + return html`
+
+
+ ${t`Example JWT payload (for currently authenticated user)`} +
+
+ ${until( + new ProvidersApi(DEFAULT_CONFIG) + .providersOauth2PreviewUserRetrieve({ + id: this.provider?.pk, + }) + .then((data) => { + return html`
${JSON.stringify(data.preview, null, 4)}
`; + }), + )} +
+
+
`; + } } diff --git a/web/src/admin/providers/proxy/ProxyProviderViewPage.ts b/web/src/admin/providers/proxy/ProxyProviderViewPage.ts index a8acd2c26..185fcc3b3 100644 --- a/web/src/admin/providers/proxy/ProxyProviderViewPage.ts +++ b/web/src/admin/providers/proxy/ProxyProviderViewPage.ts @@ -171,6 +171,32 @@ export class ProxyProviderViewPage extends AKElement { } render(): TemplateResult { + if (!this.provider) { + return html``; + } + return html` +
+ ${this.renderTabOverview()} +
+
+
+
+ + +
+
+
+
`; + } + + renderTabOverview(): TemplateResult { if (!this.provider) { return html``; } diff --git a/web/src/admin/providers/saml/SAMLProviderViewPage.ts b/web/src/admin/providers/saml/SAMLProviderViewPage.ts index 9bdc451ef..1d027d27b 100644 --- a/web/src/admin/providers/saml/SAMLProviderViewPage.ts +++ b/web/src/admin/providers/saml/SAMLProviderViewPage.ts @@ -25,12 +25,21 @@ import PFContent from "@patternfly/patternfly/components/Content/content.css"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; import PFForm from "@patternfly/patternfly/components/Form/form.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 PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; import { CryptoApi, ProvidersApi, SAMLProvider } from "@goauthentik/api"; +interface SAMLPreviewAttribute { + attributes: { + Name: string; + Value: string[]; + }[]; + nameID: string; +} + @customElement("ak-provider-saml-view") export class SAMLProviderViewPage extends AKElement { @property() @@ -58,6 +67,7 @@ export class SAMLProviderViewPage extends AKElement { PFGrid, PFContent, PFCard, + PFList, PFDescriptionList, PFForm, PFFormControl, @@ -134,6 +144,36 @@ export class SAMLProviderViewPage extends AKElement { } render(): TemplateResult { + if (!this.provider) { + return html``; + } + return html` +
+ ${this.renderTabOverview()} +
+ ${this.renderTabMetadata()} +
+ ${this.renderTabPreview()} +
+
+
+
+ + +
+
+
+
`; + } + + renderTabOverview(): TemplateResult { if (!this.provider) { return html``; } @@ -220,104 +260,184 @@ export class SAMLProviderViewPage extends AKElement { ${ this.provider.assignedApplicationName ? html`
` : html`` } `; } + + renderTabMetadata(): TemplateResult { + if (!this.provider) { + return html``; + } + return html` + ${this.provider.assignedApplicationName + ? html`
+
+
+
${t`SAML Metadata`}
+
+ + ${t`Download`} + + { + return navigator.clipboard.writeText( + this.provider?.urlDownloadMetadata || "", + ); + }} + > + ${t`Copy download URL`} + +
+ +
+
+
` + : html``} + `; + } + + renderTabPreview(): TemplateResult { + if (!this.provider) { + return html``; + } + return html`
+
+
${t`Example SAML attributes`}
+ ${until( + new ProvidersApi(DEFAULT_CONFIG) + .providersSamlPreviewUserRetrieve({ + id: this.provider?.pk, + }) + .then((data) => { + const d = data.preview as SAMLPreviewAttribute; + return html` +
+
+
+
+ ${t`NameID attribute`} +
+
+
+ ${d.nameID} +
+
+
+
+
+
+
+ ${d.attributes.map((attr) => { + return html`
+
+ ${attr.Name} +
+
+
+
    + ${attr.Value.map((value) => { + return html` +
  • ${value}
  • + `; + })} +
+
+
+
`; + })} +
+
+ `; + }), + )} +
+
`; + } } diff --git a/web/src/elements/Diagram.ts b/web/src/elements/Diagram.ts index 71a986ca6..e54f7c350 100644 --- a/web/src/elements/Diagram.ts +++ b/web/src/elements/Diagram.ts @@ -35,7 +35,7 @@ export class Diagram extends AKElement { const matcher = window.matchMedia("(prefers-color-scheme: light)"); const handler = (ev?: MediaQueryListEvent) => { mermaid.initialize({ - logLevel: "error", + logLevel: 3, startOnLoad: false, theme: ev?.matches || matcher.matches ? "default" : "dark", flowchart: { diff --git a/web/src/locales/de.po b/web/src/locales/de.po index 61ebfb233..bcc8ba322 100644 --- a/web/src/locales/de.po +++ b/web/src/locales/de.po @@ -956,7 +956,10 @@ msgstr "Ändern Sie Ihr Passwort" #: src/admin/applications/ApplicationViewPage.ts #: src/admin/flows/FlowViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -1357,6 +1360,7 @@ msgstr "Kopieren" #~ msgid "Copy Key" #~ msgstr "Kopiere Schlüssel" +#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Copy download URL" msgstr "Download URL kopieren" @@ -1895,7 +1899,6 @@ msgstr "Zertifikat herunterladen" msgid "Download Private key" msgstr "Privaten Schlüssel herunterladen" -#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Download signing certificate" msgstr "Signierzertifikat herunterladen" @@ -2171,6 +2174,14 @@ msgstr "Ereignisse" msgid "Everything is ok." 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 @@ -3472,6 +3483,8 @@ msgstr "Nachrichten" #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.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 msgid "Metadata" msgstr "Metadaten" @@ -3649,6 +3662,10 @@ msgstr "NameID Richtlinie" msgid "NameID Property Mapping" msgstr "NameID Eigenschaft" +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "NameID attribute" +msgstr "" + #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts msgid "Native application" msgstr "" @@ -4142,7 +4159,10 @@ msgstr "Outposts sind Installationen von authentik-Komponenten, die Unterstützu #: src/admin/AdminInterface.ts #: src/admin/applications/ApplicationViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -4378,6 +4398,11 @@ msgstr "Erstellt durch Authentik" msgid "Pre-authentication flow" 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/stages/captcha/CaptchaStageForm.ts msgid "Private Key" @@ -6970,7 +6995,6 @@ msgstr "Warnung: Keine Einladungsphase ist an einen Ablauf gebunden. Einladungen msgid "Warning: Policy is not assigned." msgstr "Warnung: Keine Richtlinie zugewiesen" -#: src/admin/providers/ldap/LDAPProviderViewPage.ts #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts #: src/admin/providers/proxy/ProxyProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts diff --git a/web/src/locales/en.po b/web/src/locales/en.po index 927803ea2..207ab1446 100644 --- a/web/src/locales/en.po +++ b/web/src/locales/en.po @@ -950,7 +950,10 @@ msgstr "Change your password" #: src/admin/applications/ApplicationViewPage.ts #: src/admin/flows/FlowViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -1361,6 +1364,7 @@ msgstr "Copy" #~ msgid "Copy Key" #~ msgstr "Copy Key" +#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Copy download URL" msgstr "Copy download URL" @@ -1915,7 +1919,6 @@ msgstr "Download Certificate" msgid "Download Private key" msgstr "Download Private key" -#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Download signing certificate" msgstr "Download signing certificate" @@ -2203,6 +2206,14 @@ msgstr "Events" msgid "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 @@ -3528,6 +3539,8 @@ msgstr "Messages" #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.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 msgid "Metadata" msgstr "Metadata" @@ -3706,6 +3719,10 @@ msgstr "NameID Policy" msgid "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 msgid "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/applications/ApplicationViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -4463,6 +4483,11 @@ msgstr "Powered by authentik" msgid "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/stages/captcha/CaptchaStageForm.ts 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." msgstr "Warning: Policy is not assigned." -#: src/admin/providers/ldap/LDAPProviderViewPage.ts #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts #: src/admin/providers/proxy/ProxyProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts diff --git a/web/src/locales/es.po b/web/src/locales/es.po index e149212bb..225ab3d5e 100644 --- a/web/src/locales/es.po +++ b/web/src/locales/es.po @@ -934,7 +934,10 @@ msgstr "Cambia tu contraseña" #: src/admin/applications/ApplicationViewPage.ts #: src/admin/flows/FlowViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -1333,6 +1336,7 @@ msgstr "Copiar" #~ msgid "Copy Key" #~ msgstr "Copiar clave" +#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Copy download URL" msgstr "Copiar URL de descarga" @@ -1871,7 +1875,6 @@ msgstr "Descargar certificado" msgid "Download Private key" msgstr "Descargar clave privada" -#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Download signing certificate" msgstr "Descargar certificado de firma" @@ -2147,6 +2150,14 @@ msgstr "Eventos" msgid "Everything is ok." 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 @@ -3448,6 +3459,8 @@ msgstr "Mensajes" #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.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 msgid "Metadata" msgstr "Metadatos" @@ -3625,6 +3638,10 @@ msgstr "Política de NameID" msgid "NameID Property Mapping" msgstr "Mapeo de propiedades NameID" +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "NameID attribute" +msgstr "" + #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts msgid "Native application" msgstr "" @@ -4118,7 +4135,10 @@ msgstr "Los puestos avanzados son implementaciones de componentes auténticos pa #: src/admin/AdminInterface.ts #: src/admin/applications/ApplicationViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -4354,6 +4374,11 @@ msgstr "Desarrollado por authentik" msgid "Pre-authentication flow" 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/stages/captcha/CaptchaStageForm.ts 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." msgstr "Advertencia: la política no está asignada." -#: src/admin/providers/ldap/LDAPProviderViewPage.ts #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts #: src/admin/providers/proxy/ProxyProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts diff --git a/web/src/locales/fr_FR.po b/web/src/locales/fr_FR.po index e12cf013a..d5bcb5f9d 100644 --- a/web/src/locales/fr_FR.po +++ b/web/src/locales/fr_FR.po @@ -939,7 +939,10 @@ msgstr "Changer votre mot de pass" #: src/admin/applications/ApplicationViewPage.ts #: src/admin/flows/FlowViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -1338,6 +1341,7 @@ msgstr "Copier" #~ msgid "Copy Key" #~ msgstr "Copier la clé" +#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Copy download URL" msgstr "Copier l'URL de téléchargement" @@ -1874,7 +1878,6 @@ msgstr "Télécharger le certificat" msgid "Download Private key" msgstr "Télécharger la clé privée" -#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Download signing certificate" msgstr "Télécharger le certificat de signature" @@ -2150,6 +2153,14 @@ msgstr "Évènements" msgid "Everything is ok." 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 @@ -3449,6 +3460,8 @@ msgstr "Messages" #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.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 msgid "Metadata" msgstr "Métadonnées" @@ -3626,6 +3639,10 @@ msgstr "Politique NameID" msgid "NameID Property Mapping" msgstr "Mappage de la propriété NameID" +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "NameID attribute" +msgstr "" + #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts msgid "Native application" msgstr "" @@ -4119,7 +4136,10 @@ msgstr "Les avant-postes sont des déploiements de composants Authentik pour pre #: src/admin/AdminInterface.ts #: src/admin/applications/ApplicationViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -4355,6 +4375,11 @@ msgstr "Propulsé par authentik" msgid "Pre-authentication flow" 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/stages/captcha/CaptchaStageForm.ts 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." msgstr "Avertissement : la politique n'est pas assignée." -#: src/admin/providers/ldap/LDAPProviderViewPage.ts #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts #: src/admin/providers/proxy/ProxyProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts diff --git a/web/src/locales/pl.po b/web/src/locales/pl.po index 12ac9610a..aef9b3701 100644 --- a/web/src/locales/pl.po +++ b/web/src/locales/pl.po @@ -938,7 +938,10 @@ msgstr "Zmień swoje hasło" #: src/admin/applications/ApplicationViewPage.ts #: src/admin/flows/FlowViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -1339,6 +1342,7 @@ msgstr "Kopiuj" #~ msgid "Copy Key" #~ msgstr "Kopiuj klucz" +#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Copy download URL" msgstr "Skopiuj URL pobierania" @@ -1877,7 +1881,6 @@ msgstr "Pobierz certyfikat" msgid "Download Private key" msgstr "Pobierz klucz prywatny" -#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Download signing certificate" msgstr "Pobierz certyfikat podpisywania" @@ -2153,6 +2156,14 @@ msgstr "Zdarzenia" msgid "Everything is ok." 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 @@ -3456,6 +3467,8 @@ msgstr "Wiadomości" #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.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 msgid "Metadata" msgstr "Metadane" @@ -3633,6 +3646,10 @@ msgstr "Zasada NameID" msgid "NameID Property Mapping" msgstr "Mapowanie właściwości NameID" +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "NameID attribute" +msgstr "" + #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts msgid "Native application" msgstr "" @@ -4126,7 +4143,10 @@ msgstr "Placówki (Outposts) to wdrożenia komponentów uwierzytelniających do #: src/admin/AdminInterface.ts #: src/admin/applications/ApplicationViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -4364,6 +4384,11 @@ msgstr "Napędzane przez authentik" msgid "Pre-authentication flow" 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/stages/captcha/CaptchaStageForm.ts 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." msgstr "Ostrzeżenie: zasada nie jest przypisana." -#: src/admin/providers/ldap/LDAPProviderViewPage.ts #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts #: src/admin/providers/proxy/ProxyProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts diff --git a/web/src/locales/pseudo-LOCALE.po b/web/src/locales/pseudo-LOCALE.po index 544012574..938a737bc 100644 --- a/web/src/locales/pseudo-LOCALE.po +++ b/web/src/locales/pseudo-LOCALE.po @@ -942,7 +942,10 @@ msgstr "" #: src/admin/applications/ApplicationViewPage.ts #: src/admin/flows/FlowViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -1349,6 +1352,7 @@ msgstr "" #~ msgid "Copy Key" #~ msgstr "" +#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Copy download URL" msgstr "" @@ -1901,7 +1905,6 @@ msgstr "" msgid "Download Private key" msgstr "" -#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Download signing certificate" msgstr "" @@ -2189,6 +2192,14 @@ msgstr "" msgid "Everything is ok." 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 @@ -3510,6 +3521,8 @@ msgstr "" #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.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 msgid "Metadata" msgstr "" @@ -3688,6 +3701,10 @@ msgstr "" msgid "NameID Property Mapping" msgstr "" +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "NameID attribute" +msgstr "" + #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts msgid "Native application" msgstr "" @@ -4195,7 +4212,10 @@ msgstr "" #: src/admin/AdminInterface.ts #: src/admin/applications/ApplicationViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -4443,6 +4463,11 @@ msgstr "" msgid "Pre-authentication flow" msgstr "" +#: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "Preview" +msgstr "" + #: src/admin/crypto/CertificateKeyPairForm.ts #: src/admin/stages/captcha/CaptchaStageForm.ts msgid "Private Key" @@ -7096,7 +7121,6 @@ msgstr "" msgid "Warning: Policy is not assigned." msgstr "" -#: src/admin/providers/ldap/LDAPProviderViewPage.ts #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts #: src/admin/providers/proxy/ProxyProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts diff --git a/web/src/locales/tr.po b/web/src/locales/tr.po index 2900a9407..5cc1c20e0 100644 --- a/web/src/locales/tr.po +++ b/web/src/locales/tr.po @@ -934,7 +934,10 @@ msgstr "Parolanızı değiştirin" #: src/admin/applications/ApplicationViewPage.ts #: src/admin/flows/FlowViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -1333,6 +1336,7 @@ msgstr "Kopya" #~ msgid "Copy Key" #~ msgstr "Anahtar Kopyala" +#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Copy download URL" msgstr "İndirme URL'sini" @@ -1871,7 +1875,6 @@ msgstr "Sertifikayı İndirin" msgid "Download Private key" msgstr "Indir Özel anahtar" -#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Download signing certificate" msgstr "İmzalama sertifikasını indirme" @@ -2147,6 +2150,14 @@ msgstr "Olaylar" msgid "Everything is ok." 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 @@ -3448,6 +3459,8 @@ msgstr "İletiler" #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.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 msgid "Metadata" msgstr "Meta veriler" @@ -3625,6 +3638,10 @@ msgstr "NameID İlkesi" msgid "NameID Property Mapping" msgstr "NameID Özellik Eşlemesi" +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "NameID attribute" +msgstr "" + #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts msgid "Native application" msgstr "" @@ -4118,7 +4135,10 @@ msgstr "Outposts, ters proxy'ler gibi farklı ortamları ve protokolleri destekl #: src/admin/AdminInterface.ts #: src/admin/applications/ApplicationViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -4354,6 +4374,11 @@ msgstr "Auentik tarafından desteklenmektedir" msgid "Pre-authentication flow" 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/stages/captcha/CaptchaStageForm.ts 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." msgstr "Uyarı: İlke atanmamış." -#: src/admin/providers/ldap/LDAPProviderViewPage.ts #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts #: src/admin/providers/proxy/ProxyProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts diff --git a/web/src/locales/zh-Hans.po b/web/src/locales/zh-Hans.po index 0a6b966b4..102857100 100644 --- a/web/src/locales/zh-Hans.po +++ b/web/src/locales/zh-Hans.po @@ -940,7 +940,10 @@ msgstr "更改您的密码" #: src/admin/applications/ApplicationViewPage.ts #: src/admin/flows/FlowViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -1341,6 +1344,7 @@ msgstr "复制" #~ msgid "Copy Key" #~ msgstr "复制密钥" +#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Copy download URL" msgstr "复制下载 URL" @@ -1879,7 +1883,6 @@ msgstr "下载证书" msgid "Download Private key" msgstr "下载私钥" -#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Download signing certificate" msgstr "下载签名证书" @@ -2155,6 +2158,14 @@ msgstr "事件" msgid "Everything is ok." 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 @@ -3456,6 +3467,8 @@ msgstr "消息" #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.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 msgid "Metadata" msgstr "元数据" @@ -3633,6 +3646,10 @@ msgstr "NameID 策略" msgid "NameID Property Mapping" msgstr "NameID 属性映射" +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "NameID attribute" +msgstr "" + #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts msgid "Native application" msgstr "" @@ -4126,7 +4143,10 @@ msgstr "前哨是对 authentik 组件的部署,用于支持不同的环境和 #: src/admin/AdminInterface.ts #: src/admin/applications/ApplicationViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -4362,6 +4382,11 @@ msgstr "由 authentik 强力驱动" msgid "Pre-authentication flow" msgstr "身份验证前流程" +#: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "Preview" +msgstr "" + #: src/admin/crypto/CertificateKeyPairForm.ts #: src/admin/stages/captcha/CaptchaStageForm.ts msgid "Private Key" @@ -6954,7 +6979,6 @@ msgstr "警告:没有邀请阶段绑定到任何流程。邀请将无法按预 msgid "Warning: Policy is not assigned." msgstr "警告:策略未分配。" -#: src/admin/providers/ldap/LDAPProviderViewPage.ts #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts #: src/admin/providers/proxy/ProxyProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts diff --git a/web/src/locales/zh-Hant.po b/web/src/locales/zh-Hant.po index ccc8dd4f4..9fb453634 100644 --- a/web/src/locales/zh-Hant.po +++ b/web/src/locales/zh-Hant.po @@ -940,7 +940,10 @@ msgstr "更改你的密码" #: src/admin/applications/ApplicationViewPage.ts #: src/admin/flows/FlowViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -1341,6 +1344,7 @@ msgstr "复制" #~ msgid "Copy Key" #~ msgstr "复制密钥" +#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Copy download URL" msgstr "复制下载 URL" @@ -1879,7 +1883,6 @@ msgstr "下载证书" msgid "Download Private key" msgstr "下载私钥" -#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Download signing certificate" msgstr "下载签名证书" @@ -2155,6 +2158,14 @@ msgstr "事件" msgid "Everything is ok." 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 @@ -3456,6 +3467,8 @@ msgstr "信息" #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.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 msgid "Metadata" msgstr "元数据" @@ -3633,6 +3646,10 @@ msgstr "NameID 政策" msgid "NameID Property Mapping" msgstr "nameID 属性映射" +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "NameID attribute" +msgstr "" + #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts msgid "Native application" msgstr "" @@ -4126,7 +4143,10 @@ msgstr "Outpost 是对 authentik 组件的部署,以支持不同的环境和 #: src/admin/AdminInterface.ts #: src/admin/applications/ApplicationViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -4362,6 +4382,11 @@ msgstr "由 authentik 强力驱动" msgid "Pre-authentication flow" msgstr "身份验证前流程" +#: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "Preview" +msgstr "" + #: src/admin/crypto/CertificateKeyPairForm.ts #: src/admin/stages/captcha/CaptchaStageForm.ts msgid "Private Key" @@ -6954,7 +6979,6 @@ msgstr "警告:没有邀请阶段绑定到任何流程。邀请将无法按预 msgid "Warning: Policy is not assigned." msgstr "警告:策略未分配。" -#: src/admin/providers/ldap/LDAPProviderViewPage.ts #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts #: src/admin/providers/proxy/ProxyProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts diff --git a/web/src/locales/zh_TW.po b/web/src/locales/zh_TW.po index ebcc0cea3..9c2dc292b 100644 --- a/web/src/locales/zh_TW.po +++ b/web/src/locales/zh_TW.po @@ -940,7 +940,10 @@ msgstr "更改你的密码" #: src/admin/applications/ApplicationViewPage.ts #: src/admin/flows/FlowViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -1341,6 +1344,7 @@ msgstr "复制" #~ msgid "Copy Key" #~ msgstr "复制密钥" +#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Copy download URL" msgstr "复制下载 URL" @@ -1879,7 +1883,6 @@ msgstr "下载证书" msgid "Download Private key" msgstr "下载私钥" -#: src/admin/providers/saml/SAMLProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts msgid "Download signing certificate" msgstr "下载签名证书" @@ -2155,6 +2158,14 @@ msgstr "事件" msgid "Everything is ok." 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 @@ -3456,6 +3467,8 @@ msgstr "信息" #: src/admin/applications/wizard/saml/TypeSAMLImportApplicationWizardPage.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 msgid "Metadata" msgstr "元数据" @@ -3633,6 +3646,10 @@ msgstr "NameID 政策" msgid "NameID Property Mapping" msgstr "nameID 属性映射" +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "NameID attribute" +msgstr "" + #: src/admin/applications/wizard/oauth/TypeOAuthApplicationWizardPage.ts msgid "Native application" msgstr "" @@ -4126,7 +4143,10 @@ msgstr "Outpost 是对 authentik 组件的部署,以支持不同的环境和 #: src/admin/AdminInterface.ts #: src/admin/applications/ApplicationViewPage.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/oauth/OAuthSourceViewPage.ts #: src/admin/sources/plex/PlexSourceViewPage.ts @@ -4362,6 +4382,11 @@ msgstr "由 authentik 强力驱动" msgid "Pre-authentication flow" msgstr "身份验证前流程" +#: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts +#: src/admin/providers/saml/SAMLProviderViewPage.ts +msgid "Preview" +msgstr "" + #: src/admin/crypto/CertificateKeyPairForm.ts #: src/admin/stages/captcha/CaptchaStageForm.ts msgid "Private Key" @@ -6954,7 +6979,6 @@ msgstr "警告:没有邀请阶段绑定到任何流程。邀请将无法按预 msgid "Warning: Policy is not assigned." msgstr "警告:策略未分配。" -#: src/admin/providers/ldap/LDAPProviderViewPage.ts #: src/admin/providers/oauth2/OAuth2ProviderViewPage.ts #: src/admin/providers/proxy/ProxyProviderViewPage.ts #: src/admin/providers/saml/SAMLProviderViewPage.ts diff --git a/website/docs/releases/v2022.12.md b/website/docs/releases/v2022.12.md index 21d5320b1..421a35440 100644 --- a/website/docs/releases/v2022.12.md +++ b/website/docs/releases/v2022.12.md @@ -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/). +- 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 This release does not introduce any new requirements.