Compare commits
	
		
			1 Commits
		
	
	
		
			enterprise
			...
			providers/
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| faf8bf591f | 
@ -190,6 +190,7 @@ class SAMLProviderSerializer(ProviderSerializer):
 | 
			
		||||
            "sign_response",
 | 
			
		||||
            "sp_binding",
 | 
			
		||||
            "default_relay_state",
 | 
			
		||||
            "default_name_id_policy",
 | 
			
		||||
            "url_download_metadata",
 | 
			
		||||
            "url_sso_post",
 | 
			
		||||
            "url_sso_redirect",
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,31 @@
 | 
			
		||||
# Generated by Django 5.1.11 on 2025-06-18 09:27
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ("authentik_providers_saml", "0018_alter_samlprovider_acs_url"),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name="samlprovider",
 | 
			
		||||
            name="default_name_id_policy",
 | 
			
		||||
            field=models.TextField(
 | 
			
		||||
                choices=[
 | 
			
		||||
                    ("urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "Email"),
 | 
			
		||||
                    ("urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", "Persistent"),
 | 
			
		||||
                    ("urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", "X509"),
 | 
			
		||||
                    (
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName",
 | 
			
		||||
                        "Windows",
 | 
			
		||||
                    ),
 | 
			
		||||
                    ("urn:oasis:names:tc:SAML:2.0:nameid-format:transient", "Transient"),
 | 
			
		||||
                    ("urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "Unspecified"),
 | 
			
		||||
                ],
 | 
			
		||||
                default="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
 | 
			
		||||
            ),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@ -12,6 +12,7 @@ from authentik.core.models import PropertyMapping, Provider
 | 
			
		||||
from authentik.crypto.models import CertificateKeyPair
 | 
			
		||||
from authentik.lib.models import DomainlessURLValidator
 | 
			
		||||
from authentik.lib.utils.time import timedelta_string_validator
 | 
			
		||||
from authentik.sources.saml.models import SAMLNameIDPolicy
 | 
			
		||||
from authentik.sources.saml.processors.constants import (
 | 
			
		||||
    DSA_SHA1,
 | 
			
		||||
    ECDSA_SHA1,
 | 
			
		||||
@ -179,6 +180,9 @@ class SAMLProvider(Provider):
 | 
			
		||||
    default_relay_state = models.TextField(
 | 
			
		||||
        default="", blank=True, help_text=_("Default relay_state value for IDP-initiated logins")
 | 
			
		||||
    )
 | 
			
		||||
    default_name_id_policy = models.TextField(
 | 
			
		||||
        choices=SAMLNameIDPolicy.choices, default=SAMLNameIDPolicy.UNSPECIFIED
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    sign_assertion = models.BooleanField(default=True)
 | 
			
		||||
    sign_response = models.BooleanField(default=False)
 | 
			
		||||
 | 
			
		||||
@ -205,6 +205,13 @@ class AssertionProcessor:
 | 
			
		||||
    def get_name_id(self) -> Element:
 | 
			
		||||
        """Get NameID Element"""
 | 
			
		||||
        name_id = Element(f"{{{NS_SAML_ASSERTION}}}NameID")
 | 
			
		||||
        # For requests that don't specify a NameIDPolicy, check if we
 | 
			
		||||
        # can fall back to the provider default
 | 
			
		||||
        if (
 | 
			
		||||
            self.auth_n_request.name_id_policy == SAML_NAME_ID_FORMAT_UNSPECIFIED
 | 
			
		||||
            and self.provider.default_name_id_policy != SAML_NAME_ID_FORMAT_UNSPECIFIED
 | 
			
		||||
        ):
 | 
			
		||||
            self.auth_n_request.name_id_policy = self.provider.default_name_id_policy
 | 
			
		||||
        name_id.attrib["Format"] = self.auth_n_request.name_id_policy
 | 
			
		||||
        # persistent is used as a fallback, so always generate it
 | 
			
		||||
        persistent = self.http_request.user.uid
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,7 @@ from authentik.lib.xml import lxml_from_string
 | 
			
		||||
from authentik.providers.saml.exceptions import CannotHandleAssertion
 | 
			
		||||
from authentik.providers.saml.models import SAMLProvider
 | 
			
		||||
from authentik.providers.saml.utils.encoding import decode_base64_and_inflate
 | 
			
		||||
from authentik.sources.saml.models import SAMLNameIDPolicy
 | 
			
		||||
from authentik.sources.saml.processors.constants import (
 | 
			
		||||
    DSA_SHA1,
 | 
			
		||||
    NS_MAP,
 | 
			
		||||
@ -175,7 +176,9 @@ class AuthNRequestParser:
 | 
			
		||||
 | 
			
		||||
    def idp_initiated(self) -> AuthNRequest:
 | 
			
		||||
        """Create IdP Initiated AuthNRequest"""
 | 
			
		||||
        relay_state = None
 | 
			
		||||
        request = AuthNRequest(relay_state=None)
 | 
			
		||||
        if self.provider.default_relay_state != "":
 | 
			
		||||
            relay_state = self.provider.default_relay_state
 | 
			
		||||
        return AuthNRequest(relay_state=relay_state)
 | 
			
		||||
            request.relay_state = self.provider.default_relay_state
 | 
			
		||||
        if self.provider.default_name_id_policy != SAMLNameIDPolicy.UNSPECIFIED:
 | 
			
		||||
            request.name_id_policy = self.provider.default_name_id_policy
 | 
			
		||||
        return request
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,7 @@ from authentik.crypto.models import CertificateKeyPair
 | 
			
		||||
from authentik.flows.models import Flow
 | 
			
		||||
from authentik.providers.saml.models import SAMLBindings, SAMLPropertyMapping, SAMLProvider
 | 
			
		||||
from authentik.providers.saml.utils.encoding import PEM_FOOTER, PEM_HEADER
 | 
			
		||||
from authentik.sources.saml.models import SAMLNameIDPolicy
 | 
			
		||||
from authentik.sources.saml.processors.constants import (
 | 
			
		||||
    NS_MAP,
 | 
			
		||||
    NS_SAML_METADATA,
 | 
			
		||||
@ -46,6 +47,7 @@ class ServiceProviderMetadata:
 | 
			
		||||
 | 
			
		||||
    auth_n_request_signed: bool
 | 
			
		||||
    assertion_signed: bool
 | 
			
		||||
    name_id_policy: SAMLNameIDPolicy
 | 
			
		||||
 | 
			
		||||
    signing_keypair: CertificateKeyPair | None = None
 | 
			
		||||
 | 
			
		||||
@ -60,6 +62,7 @@ class ServiceProviderMetadata:
 | 
			
		||||
        provider.issuer = self.entity_id
 | 
			
		||||
        provider.sp_binding = self.acs_binding
 | 
			
		||||
        provider.acs_url = self.acs_location
 | 
			
		||||
        provider.default_name_id_policy = self.name_id_policy
 | 
			
		||||
        if self.signing_keypair and self.auth_n_request_signed:
 | 
			
		||||
            self.signing_keypair.name = f"Provider {name} - SAML Signing Certificate"
 | 
			
		||||
            self.signing_keypair.save()
 | 
			
		||||
@ -148,6 +151,11 @@ class ServiceProviderMetadataParser:
 | 
			
		||||
        if signing_keypair:
 | 
			
		||||
            self.check_signature(root, signing_keypair)
 | 
			
		||||
 | 
			
		||||
        name_id_format = descriptor.findall(f"{{{NS_SAML_METADATA}}}NameIDFormat")
 | 
			
		||||
        name_id_policy = SAMLNameIDPolicy.UNSPECIFIED
 | 
			
		||||
        if len(name_id_format) > 0:
 | 
			
		||||
            name_id_policy = SAMLNameIDPolicy(name_id_format[0].text)
 | 
			
		||||
 | 
			
		||||
        return ServiceProviderMetadata(
 | 
			
		||||
            entity_id=entity_id,
 | 
			
		||||
            acs_binding=acs_binding,
 | 
			
		||||
@ -155,4 +163,5 @@ class ServiceProviderMetadataParser:
 | 
			
		||||
            auth_n_request_signed=auth_n_request_signed,
 | 
			
		||||
            assertion_signed=assertion_signed,
 | 
			
		||||
            signing_keypair=signing_keypair,
 | 
			
		||||
            name_id_policy=name_id_policy,
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,7 @@
 | 
			
		||||
                     cacheDuration="PT604800S"
 | 
			
		||||
                     entityID="http://localhost:8080/saml/metadata">
 | 
			
		||||
    <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
 | 
			
		||||
        <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
 | 
			
		||||
        <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
 | 
			
		||||
        <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
 | 
			
		||||
                                     Location="http://localhost:8080/saml/acs"
 | 
			
		||||
                                     index="1" />
 | 
			
		||||
 | 
			
		||||
@ -14,6 +14,7 @@ from authentik.lib.xml import lxml_from_string
 | 
			
		||||
from authentik.providers.saml.models import SAMLBindings, SAMLPropertyMapping, SAMLProvider
 | 
			
		||||
from authentik.providers.saml.processors.metadata import MetadataProcessor
 | 
			
		||||
from authentik.providers.saml.processors.metadata_parser import ServiceProviderMetadataParser
 | 
			
		||||
from authentik.sources.saml.models import SAMLNameIDPolicy
 | 
			
		||||
from authentik.sources.saml.processors.constants import ECDSA_SHA256, NS_MAP, NS_SAML_METADATA
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -86,6 +87,7 @@ class TestServiceProviderMetadataParser(TestCase):
 | 
			
		||||
        self.assertEqual(provider.acs_url, "http://localhost:8080/saml/acs")
 | 
			
		||||
        self.assertEqual(provider.issuer, "http://localhost:8080/saml/metadata")
 | 
			
		||||
        self.assertEqual(provider.sp_binding, SAMLBindings.POST)
 | 
			
		||||
        self.assertEqual(provider.default_name_id_policy, SAMLNameIDPolicy.EMAIL)
 | 
			
		||||
        self.assertEqual(
 | 
			
		||||
            len(provider.property_mappings.all()),
 | 
			
		||||
            len(SAMLPropertyMapping.objects.exclude(managed__isnull=True)),
 | 
			
		||||
 | 
			
		||||
@ -166,6 +166,7 @@ SPECTACULAR_SETTINGS = {
 | 
			
		||||
        "UserVerificationEnum": "authentik.stages.authenticator_webauthn.models.UserVerification",
 | 
			
		||||
        "UserTypeEnum": "authentik.core.models.UserTypes",
 | 
			
		||||
        "OutgoingSyncDeleteAction": "authentik.lib.sync.outgoing.models.OutgoingSyncDeleteAction",
 | 
			
		||||
        "SAMLNameIDPolicyEnum": "authentik.sources.saml.models.SAMLNameIDPolicy",
 | 
			
		||||
    },
 | 
			
		||||
    "ENUM_ADD_EXPLICIT_BLANK_NULL_CHOICE": False,
 | 
			
		||||
    "ENUM_GENERATE_CHOICE_DESCRIPTION": False,
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,32 @@
 | 
			
		||||
# Generated by Django 5.1.11 on 2025-06-18 09:27
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ("authentik_sources_saml", "0019_migrate_usersamlsourceconnection_identifier"),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.AlterField(
 | 
			
		||||
            model_name="samlsource",
 | 
			
		||||
            name="name_id_policy",
 | 
			
		||||
            field=models.TextField(
 | 
			
		||||
                choices=[
 | 
			
		||||
                    ("urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "Email"),
 | 
			
		||||
                    ("urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", "Persistent"),
 | 
			
		||||
                    ("urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName", "X509"),
 | 
			
		||||
                    (
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName",
 | 
			
		||||
                        "Windows",
 | 
			
		||||
                    ),
 | 
			
		||||
                    ("urn:oasis:names:tc:SAML:2.0:nameid-format:transient", "Transient"),
 | 
			
		||||
                    ("urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "Unspecified"),
 | 
			
		||||
                ],
 | 
			
		||||
                default="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
 | 
			
		||||
                help_text="NameID Policy sent to the IdP. Can be unset, in which case no Policy is sent.",
 | 
			
		||||
            ),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@ -39,6 +39,7 @@ from authentik.sources.saml.processors.constants import (
 | 
			
		||||
    SAML_NAME_ID_FORMAT_EMAIL,
 | 
			
		||||
    SAML_NAME_ID_FORMAT_PERSISTENT,
 | 
			
		||||
    SAML_NAME_ID_FORMAT_TRANSIENT,
 | 
			
		||||
    SAML_NAME_ID_FORMAT_UNSPECIFIED,
 | 
			
		||||
    SAML_NAME_ID_FORMAT_WINDOWS,
 | 
			
		||||
    SAML_NAME_ID_FORMAT_X509,
 | 
			
		||||
    SHA1,
 | 
			
		||||
@ -73,6 +74,7 @@ class SAMLNameIDPolicy(models.TextChoices):
 | 
			
		||||
    X509 = SAML_NAME_ID_FORMAT_X509
 | 
			
		||||
    WINDOWS = SAML_NAME_ID_FORMAT_WINDOWS
 | 
			
		||||
    TRANSIENT = SAML_NAME_ID_FORMAT_TRANSIENT
 | 
			
		||||
    UNSPECIFIED = SAML_NAME_ID_FORMAT_UNSPECIFIED
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SAMLSource(Source):
 | 
			
		||||
 | 
			
		||||
@ -9233,6 +9233,18 @@
 | 
			
		||||
                    "type": "string",
 | 
			
		||||
                    "title": "Default relay state",
 | 
			
		||||
                    "description": "Default relay_state value for IDP-initiated logins"
 | 
			
		||||
                },
 | 
			
		||||
                "default_name_id_policy": {
 | 
			
		||||
                    "type": "string",
 | 
			
		||||
                    "enum": [
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName",
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName",
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "title": "Default name id policy"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "required": []
 | 
			
		||||
@ -11655,7 +11667,8 @@
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName",
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName",
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",
 | 
			
		||||
                        "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "title": "Name id policy",
 | 
			
		||||
                    "description": "NameID Policy sent to the IdP. Can be unset, in which case no Policy is sent."
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										41
									
								
								schema.yml
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								schema.yml
									
									
									
									
									
								
							@ -22454,6 +22454,17 @@ paths:
 | 
			
		||||
        schema:
 | 
			
		||||
          type: string
 | 
			
		||||
          format: uuid
 | 
			
		||||
      - in: query
 | 
			
		||||
        name: default_name_id_policy
 | 
			
		||||
        schema:
 | 
			
		||||
          type: string
 | 
			
		||||
          enum:
 | 
			
		||||
          - urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName
 | 
			
		||||
          - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
 | 
			
		||||
          - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
 | 
			
		||||
          - urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName
 | 
			
		||||
          - urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
 | 
			
		||||
          - urn:oasis:names:tc:SAML:2.0:nameid-format:transient
 | 
			
		||||
      - in: query
 | 
			
		||||
        name: default_relay_state
 | 
			
		||||
        schema:
 | 
			
		||||
@ -29670,6 +29681,7 @@ paths:
 | 
			
		||||
          enum:
 | 
			
		||||
          - urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName
 | 
			
		||||
          - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
 | 
			
		||||
          - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
 | 
			
		||||
          - urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName
 | 
			
		||||
          - urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
 | 
			
		||||
          - urn:oasis:names:tc:SAML:2.0:nameid-format:transient
 | 
			
		||||
@ -48745,14 +48757,6 @@ components:
 | 
			
		||||
      - mode
 | 
			
		||||
      - name
 | 
			
		||||
      - user_attribute
 | 
			
		||||
    NameIdPolicyEnum:
 | 
			
		||||
      enum:
 | 
			
		||||
      - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
 | 
			
		||||
      - urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
 | 
			
		||||
      - urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName
 | 
			
		||||
      - urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName
 | 
			
		||||
      - urn:oasis:names:tc:SAML:2.0:nameid-format:transient
 | 
			
		||||
      type: string
 | 
			
		||||
    NetworkBindingEnum:
 | 
			
		||||
      enum:
 | 
			
		||||
      - no_binding
 | 
			
		||||
@ -54501,6 +54505,8 @@ components:
 | 
			
		||||
        default_relay_state:
 | 
			
		||||
          type: string
 | 
			
		||||
          description: Default relay_state value for IDP-initiated logins
 | 
			
		||||
        default_name_id_policy:
 | 
			
		||||
          $ref: '#/components/schemas/SAMLNameIDPolicyEnum'
 | 
			
		||||
    PatchedSAMLSourcePropertyMappingRequest:
 | 
			
		||||
      type: object
 | 
			
		||||
      description: SAMLSourcePropertyMapping Serializer
 | 
			
		||||
@ -54594,7 +54600,7 @@ components:
 | 
			
		||||
            be a security risk, as no validation of the request ID is done.
 | 
			
		||||
        name_id_policy:
 | 
			
		||||
          allOf:
 | 
			
		||||
          - $ref: '#/components/schemas/NameIdPolicyEnum'
 | 
			
		||||
          - $ref: '#/components/schemas/SAMLNameIDPolicyEnum'
 | 
			
		||||
          description: NameID Policy sent to the IdP. Can be unset, in which case
 | 
			
		||||
            no Policy is sent.
 | 
			
		||||
        binding_type:
 | 
			
		||||
@ -57305,6 +57311,15 @@ components:
 | 
			
		||||
      required:
 | 
			
		||||
      - download_url
 | 
			
		||||
      - metadata
 | 
			
		||||
    SAMLNameIDPolicyEnum:
 | 
			
		||||
      enum:
 | 
			
		||||
      - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
 | 
			
		||||
      - urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
 | 
			
		||||
      - urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName
 | 
			
		||||
      - urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName
 | 
			
		||||
      - urn:oasis:names:tc:SAML:2.0:nameid-format:transient
 | 
			
		||||
      - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
 | 
			
		||||
      type: string
 | 
			
		||||
    SAMLPropertyMapping:
 | 
			
		||||
      type: object
 | 
			
		||||
      description: SAMLPropertyMapping Serializer
 | 
			
		||||
@ -57522,6 +57537,8 @@ components:
 | 
			
		||||
        default_relay_state:
 | 
			
		||||
          type: string
 | 
			
		||||
          description: Default relay_state value for IDP-initiated logins
 | 
			
		||||
        default_name_id_policy:
 | 
			
		||||
          $ref: '#/components/schemas/SAMLNameIDPolicyEnum'
 | 
			
		||||
        url_download_metadata:
 | 
			
		||||
          type: string
 | 
			
		||||
          description: Get metadata download URL
 | 
			
		||||
@ -57694,6 +57711,8 @@ components:
 | 
			
		||||
        default_relay_state:
 | 
			
		||||
          type: string
 | 
			
		||||
          description: Default relay_state value for IDP-initiated logins
 | 
			
		||||
        default_name_id_policy:
 | 
			
		||||
          $ref: '#/components/schemas/SAMLNameIDPolicyEnum'
 | 
			
		||||
      required:
 | 
			
		||||
      - acs_url
 | 
			
		||||
      - authorization_flow
 | 
			
		||||
@ -57802,7 +57821,7 @@ components:
 | 
			
		||||
            be a security risk, as no validation of the request ID is done.
 | 
			
		||||
        name_id_policy:
 | 
			
		||||
          allOf:
 | 
			
		||||
          - $ref: '#/components/schemas/NameIdPolicyEnum'
 | 
			
		||||
          - $ref: '#/components/schemas/SAMLNameIDPolicyEnum'
 | 
			
		||||
          description: NameID Policy sent to the IdP. Can be unset, in which case
 | 
			
		||||
            no Policy is sent.
 | 
			
		||||
        binding_type:
 | 
			
		||||
@ -57992,7 +58011,7 @@ components:
 | 
			
		||||
            be a security risk, as no validation of the request ID is done.
 | 
			
		||||
        name_id_policy:
 | 
			
		||||
          allOf:
 | 
			
		||||
          - $ref: '#/components/schemas/NameIdPolicyEnum'
 | 
			
		||||
          - $ref: '#/components/schemas/SAMLNameIDPolicyEnum'
 | 
			
		||||
          description: NameID Policy sent to the IdP. Can be unset, in which case
 | 
			
		||||
            no Policy is sent.
 | 
			
		||||
        binding_type:
 | 
			
		||||
 | 
			
		||||
@ -16,6 +16,7 @@ import {
 | 
			
		||||
    FlowsInstancesListDesignationEnum,
 | 
			
		||||
    PropertymappingsApi,
 | 
			
		||||
    PropertymappingsProviderSamlListRequest,
 | 
			
		||||
    SAMLNameIDPolicyEnum,
 | 
			
		||||
    SAMLPropertyMapping,
 | 
			
		||||
    SAMLProvider,
 | 
			
		||||
    SpBindingEnum,
 | 
			
		||||
@ -316,6 +317,54 @@ export function renderForm(
 | 
			
		||||
                        "When using IDP-initiated logins, the relay state will be set to this value.",
 | 
			
		||||
                    )}
 | 
			
		||||
                ></ak-text-input>
 | 
			
		||||
                <ak-form-element-horizontal
 | 
			
		||||
                    label=${msg("Default NameID Policy")}
 | 
			
		||||
                    required
 | 
			
		||||
                    name="defaultNameIdPolicy"
 | 
			
		||||
                >
 | 
			
		||||
                    <select class="pf-c-form-control">
 | 
			
		||||
                        <option
 | 
			
		||||
                            value=${SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatPersistent}
 | 
			
		||||
                            ?selected=${provider?.defaultNameIdPolicy ===
 | 
			
		||||
                            SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatPersistent}
 | 
			
		||||
                        >
 | 
			
		||||
                            ${msg("Persistent")}
 | 
			
		||||
                        </option>
 | 
			
		||||
                        <option
 | 
			
		||||
                            value=${SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml11NameidFormatEmailAddress}
 | 
			
		||||
                            ?selected=${provider?.defaultNameIdPolicy ===
 | 
			
		||||
                            SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml11NameidFormatEmailAddress}
 | 
			
		||||
                        >
 | 
			
		||||
                            ${msg("Email address")}
 | 
			
		||||
                        </option>
 | 
			
		||||
                        <option
 | 
			
		||||
                            value=${SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatWindowsDomainQualifiedName}
 | 
			
		||||
                            ?selected=${provider?.defaultNameIdPolicy ===
 | 
			
		||||
                            SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatWindowsDomainQualifiedName}
 | 
			
		||||
                        >
 | 
			
		||||
                            ${msg("Windows")}
 | 
			
		||||
                        </option>
 | 
			
		||||
                        <option
 | 
			
		||||
                            value=${SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml11NameidFormatX509SubjectName}
 | 
			
		||||
                            ?selected=${provider?.defaultNameIdPolicy ===
 | 
			
		||||
                            SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml11NameidFormatX509SubjectName}
 | 
			
		||||
                        >
 | 
			
		||||
                            ${msg("X509 Subject")}
 | 
			
		||||
                        </option>
 | 
			
		||||
                        <option
 | 
			
		||||
                            value=${SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatTransient}
 | 
			
		||||
                            ?selected=${provider?.defaultNameIdPolicy ===
 | 
			
		||||
                            SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatTransient}
 | 
			
		||||
                        >
 | 
			
		||||
                            ${msg("Transient")}
 | 
			
		||||
                        </option>
 | 
			
		||||
                    </select>
 | 
			
		||||
                    <p class="pf-c-form__helper-text">
 | 
			
		||||
                        ${msg(
 | 
			
		||||
                            "Configure the default NameID Policy used by IDP-initiated logins and when an incoming assertion doesn't specify a NameID Policy (also applies when using a custom NameID Mapping).",
 | 
			
		||||
                        )}
 | 
			
		||||
                    </p>
 | 
			
		||||
                </ak-form-element-horizontal>
 | 
			
		||||
 | 
			
		||||
                <ak-radio-input
 | 
			
		||||
                    name="digestAlgorithm"
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,7 @@ import {
 | 
			
		||||
    DigestAlgorithmEnum,
 | 
			
		||||
    FlowsInstancesListDesignationEnum,
 | 
			
		||||
    GroupMatchingModeEnum,
 | 
			
		||||
    NameIdPolicyEnum,
 | 
			
		||||
    SAMLNameIDPolicyEnum,
 | 
			
		||||
    SAMLSource,
 | 
			
		||||
    SignatureAlgorithmEnum,
 | 
			
		||||
    SourcesApi,
 | 
			
		||||
@ -353,37 +353,37 @@ export class SAMLSourceForm extends WithCapabilitiesConfig(BaseSourceForm<SAMLSo
 | 
			
		||||
                    >
 | 
			
		||||
                        <select class="pf-c-form-control">
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${NameIdPolicyEnum.UrnOasisNamesTcSaml20NameidFormatPersistent}
 | 
			
		||||
                                value=${SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatPersistent}
 | 
			
		||||
                                ?selected=${this.instance?.nameIdPolicy ===
 | 
			
		||||
                                NameIdPolicyEnum.UrnOasisNamesTcSaml20NameidFormatPersistent}
 | 
			
		||||
                                SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatPersistent}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${msg("Persistent")}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${NameIdPolicyEnum.UrnOasisNamesTcSaml11NameidFormatEmailAddress}
 | 
			
		||||
                                value=${SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml11NameidFormatEmailAddress}
 | 
			
		||||
                                ?selected=${this.instance?.nameIdPolicy ===
 | 
			
		||||
                                NameIdPolicyEnum.UrnOasisNamesTcSaml11NameidFormatEmailAddress}
 | 
			
		||||
                                SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml11NameidFormatEmailAddress}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${msg("Email address")}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${NameIdPolicyEnum.UrnOasisNamesTcSaml20NameidFormatWindowsDomainQualifiedName}
 | 
			
		||||
                                value=${SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatWindowsDomainQualifiedName}
 | 
			
		||||
                                ?selected=${this.instance?.nameIdPolicy ===
 | 
			
		||||
                                NameIdPolicyEnum.UrnOasisNamesTcSaml20NameidFormatWindowsDomainQualifiedName}
 | 
			
		||||
                                SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatWindowsDomainQualifiedName}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${msg("Windows")}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${NameIdPolicyEnum.UrnOasisNamesTcSaml11NameidFormatX509SubjectName}
 | 
			
		||||
                                value=${SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml11NameidFormatX509SubjectName}
 | 
			
		||||
                                ?selected=${this.instance?.nameIdPolicy ===
 | 
			
		||||
                                NameIdPolicyEnum.UrnOasisNamesTcSaml11NameidFormatX509SubjectName}
 | 
			
		||||
                                SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml11NameidFormatX509SubjectName}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${msg("X509 Subject")}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${NameIdPolicyEnum.UrnOasisNamesTcSaml20NameidFormatTransient}
 | 
			
		||||
                                value=${SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatTransient}
 | 
			
		||||
                                ?selected=${this.instance?.nameIdPolicy ===
 | 
			
		||||
                                NameIdPolicyEnum.UrnOasisNamesTcSaml20NameidFormatTransient}
 | 
			
		||||
                                SAMLNameIDPolicyEnum.UrnOasisNamesTcSaml20NameidFormatTransient}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${msg("Transient")}
 | 
			
		||||
                            </option>
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user