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:
Jens L 2022-12-21 12:13:11 +01:00 committed by GitHub
parent 0181a90d98
commit 609f95ac97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 886 additions and 227 deletions

View File

@ -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

View File

@ -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"""

View File

@ -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)

View File

@ -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

View File

@ -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

View 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/")

View File

@ -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},
)
),

View File

View 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"]

View File

@ -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)

View File

@ -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

View File

@ -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],
)

View File

@ -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

View File

@ -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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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 ""

View File

@ -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

View File

@ -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,
)
),

View File

@ -192,7 +192,7 @@ export class ApplicationForm extends ModelForm<Application, string> {
<input
type="checkbox"
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>
</div>

View File

@ -122,8 +122,13 @@ export class ApplicationViewPage extends AKElement {
<dd class="pf-c-description-list__description">
<div class="pf-c-description-list__text">
<a
href="#/core/providers/${this.application
.providerObj?.pk}"
href=${`#/core/applications/${
this.application.slug
};${encodeURIComponent(
JSON.stringify({
page: "page-provider",
}),
)}`}
>
${this.application.providerObj?.name}
(${this.application.providerObj?.verboseName})

View File

@ -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)}
>
</ak-page-header>
<ak-tabs>
<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>`;
${this.renderProvider()}`;
}
}

View File

@ -80,13 +80,33 @@ export class LDAPProviderViewPage extends AKElement {
if (!this.provider) {
return html``;
}
return html`${
this.provider?.assignedApplicationName
? html``
: html`<div slot="header" class="pf-c-banner pf-m-warning">
${t`Warning: Provider is not used by an Application.`}
</div>`
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) {
return html``;
}
return html`
${
this.provider?.outpostSet.length < 1
? html`<div slot="header" class="pf-c-banner pf-m-warning">

View File

@ -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` <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) {
return html``;
}
@ -277,4 +307,30 @@ export class OAuth2ProviderViewPage extends AKElement {
</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>`;
}
}

View File

@ -171,6 +171,32 @@ export class ProxyProviderViewPage extends AKElement {
}
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) {
return html``;
}

View File

@ -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` <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) {
return html``;
}
@ -220,104 +260,184 @@ export class SAMLProviderViewPage extends AKElement {
${
this.provider.assignedApplicationName
? 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__body">
<form class="pf-c-form">
<div class="pf-c-form__group">
<label class="pf-c-form__label">
<span class="pf-c-form__label-text"
>${t`EntityID/Issuer`}</span
>
</label>
<input
class="pf-c-form-control"
readonly
type="text"
value="${ifDefined(this.provider?.issuer)}"
/>
</div>
<div class="pf-c-form__group">
<label class="pf-c-form__label">
<span class="pf-c-form__label-text"
>${t`SSO URL (Post)`}</span
>
</label>
<input
class="pf-c-form-control"
readonly
type="text"
value="${ifDefined(this.provider.urlSsoPost)}"
/>
</div>
<div class="pf-c-form__group">
<label class="pf-c-form__label">
<span class="pf-c-form__label-text"
>${t`SSO URL (Redirect)`}</span
>
</label>
<input
class="pf-c-form-control"
readonly
type="text"
value="${ifDefined(this.provider.urlSsoRedirect)}"
/>
</div>
<div class="pf-c-form__group">
<label class="pf-c-form__label">
<span class="pf-c-form__label-text"
>${t`SSO URL (IdP-initiated Login)`}</span
>
</label>
<input
class="pf-c-form-control"
readonly
type="text"
value="${ifDefined(this.provider.urlSsoInit)}"
/>
</div>
</form>
</div>
<div class="pf-c-card__title">${t`SAML Configuration`}</div>
<div class="pf-c-card__body">
<form class="pf-c-form">
<div class="pf-c-form__group">
<label class="pf-c-form__label">
<span class="pf-c-form__label-text"
>${t`EntityID/Issuer`}</span
>
</label>
<input
class="pf-c-form-control"
readonly
type="text"
value="${ifDefined(this.provider?.issuer)}"
/>
</div>
<div class="pf-c-form__group">
<label class="pf-c-form__label">
<span class="pf-c-form__label-text"
>${t`SSO URL (Post)`}</span
>
</label>
<input
class="pf-c-form-control"
readonly
type="text"
value="${ifDefined(this.provider.urlSsoPost)}"
/>
</div>
<div class="pf-c-form__group">
<label class="pf-c-form__label">
<span class="pf-c-form__label-text"
>${t`SSO URL (Redirect)`}</span
>
</label>
<input
class="pf-c-form-control"
readonly
type="text"
value="${ifDefined(this.provider.urlSsoRedirect)}"
/>
</div>
<div class="pf-c-form__group">
<label class="pf-c-form__label">
<span class="pf-c-form__label-text"
>${t`SSO URL (IdP-initiated Login)`}</span
>
</label>
<input
class="pf-c-form-control"
readonly
type="text"
value="${ifDefined(this.provider.urlSsoInit)}"
/>
</div>
</form>
</div>
<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">
${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>`
</div>`
: html``
}
</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>`;
}
}

View File

@ -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: {

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 dinvitation na é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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.