authentik.providers.saml.migrations.0001_squashed_0005_remove_samlprovider_processor_path

  1# Generated by Django 3.2.8 on 2021-10-10 16:16
  2
  3import django.db.models.deletion
  4from django.db import migrations, models
  5
  6import authentik.lib.utils.time
  7
  8
  9class Migration(migrations.Migration):
 10    replaces = [
 11        ("authentik_providers_saml", "0001_initial"),
 12        ("authentik_providers_saml", "0002_default_saml_property_mappings"),
 13        ("authentik_providers_saml", "0003_samlprovider_sp_binding"),
 14        ("authentik_providers_saml", "0004_auto_20200620_1950"),
 15        ("authentik_providers_saml", "0005_remove_samlprovider_processor_path"),
 16    ]
 17
 18    initial = True
 19
 20    dependencies = [
 21        ("authentik_crypto", "0001_initial"),
 22        ("authentik_core", "0001_initial"),
 23    ]
 24
 25    operations = [
 26        migrations.CreateModel(
 27            name="SAMLPropertyMapping",
 28            fields=[
 29                (
 30                    "propertymapping_ptr",
 31                    models.OneToOneField(
 32                        auto_created=True,
 33                        on_delete=django.db.models.deletion.CASCADE,
 34                        parent_link=True,
 35                        primary_key=True,
 36                        serialize=False,
 37                        to="authentik_core.propertymapping",
 38                    ),
 39                ),
 40                ("saml_name", models.TextField(verbose_name="SAML Name")),
 41                ("friendly_name", models.TextField(blank=True, default=None, null=True)),
 42            ],
 43            options={
 44                "verbose_name": "SAML Property Mapping",
 45                "verbose_name_plural": "SAML Property Mappings",
 46            },
 47            bases=("authentik_core.propertymapping",),
 48        ),
 49        migrations.CreateModel(
 50            name="SAMLProvider",
 51            fields=[
 52                (
 53                    "provider_ptr",
 54                    models.OneToOneField(
 55                        auto_created=True,
 56                        on_delete=django.db.models.deletion.CASCADE,
 57                        parent_link=True,
 58                        primary_key=True,
 59                        serialize=False,
 60                        to="authentik_core.provider",
 61                    ),
 62                ),
 63                ("name", models.TextField()),
 64                ("acs_url", models.URLField(verbose_name="ACS URL")),
 65                ("audience", models.TextField(default="")),
 66                ("issuer", models.TextField(help_text="Also known as EntityID")),
 67                (
 68                    "assertion_valid_not_before",
 69                    models.TextField(
 70                        default="minutes=-5",
 71                        help_text=(
 72                            "Assertion valid not before current time + this value (Format:"
 73                            " hours=-1;minutes=-2;seconds=-3)."
 74                        ),
 75                        validators=[authentik.lib.utils.time.timedelta_string_validator],
 76                    ),
 77                ),
 78                (
 79                    "assertion_valid_not_on_or_after",
 80                    models.TextField(
 81                        default="minutes=5",
 82                        help_text=(
 83                            "Assertion not valid on or after current time + this value (Format:"
 84                            " hours=1;minutes=2;seconds=3)."
 85                        ),
 86                        validators=[authentik.lib.utils.time.timedelta_string_validator],
 87                    ),
 88                ),
 89                (
 90                    "session_valid_not_on_or_after",
 91                    models.TextField(
 92                        default="minutes=86400",
 93                        help_text=(
 94                            "Session not valid on or after current time + this value (Format:"
 95                            " hours=1;minutes=2;seconds=3)."
 96                        ),
 97                        validators=[authentik.lib.utils.time.timedelta_string_validator],
 98                    ),
 99                ),
100                (
101                    "digest_algorithm",
102                    models.CharField(
103                        choices=[("sha1", "SHA1"), ("sha256", "SHA256")],
104                        default="sha256",
105                        max_length=50,
106                    ),
107                ),
108                (
109                    "signature_algorithm",
110                    models.CharField(
111                        choices=[
112                            ("rsa-sha1", "RSA-SHA1"),
113                            ("rsa-sha256", "RSA-SHA256"),
114                            ("ecdsa-sha256", "ECDSA-SHA256"),
115                            ("dsa-sha1", "DSA-SHA1"),
116                        ],
117                        default="rsa-sha256",
118                        max_length=50,
119                    ),
120                ),
121                (
122                    "require_signing",
123                    models.BooleanField(
124                        default=False,
125                        help_text=(
126                            "Require Requests to be signed by an X509 Certificate. Must match the"
127                            " Certificate selected in `Signing Keypair`."
128                        ),
129                    ),
130                ),
131                (
132                    "signing_kp",
133                    models.ForeignKey(
134                        default=None,
135                        help_text="Signing is enabled upon selection of a Key Pair.",
136                        null=True,
137                        on_delete=django.db.models.deletion.SET_NULL,
138                        to="authentik_crypto.certificatekeypair",
139                        verbose_name="Signing Keypair",
140                    ),
141                ),
142                (
143                    "sp_binding",
144                    models.TextField(
145                        choices=[("redirect", "Redirect"), ("post", "Post")],
146                        default="redirect",
147                        verbose_name="Service Prodier Binding",
148                    ),
149                ),
150            ],
151            options={
152                "verbose_name": "SAML Provider",
153                "verbose_name_plural": "SAML Providers",
154            },
155            bases=("authentik_core.provider",),
156        ),
157    ]
class Migration(django.db.migrations.migration.Migration):
 10class Migration(migrations.Migration):
 11    replaces = [
 12        ("authentik_providers_saml", "0001_initial"),
 13        ("authentik_providers_saml", "0002_default_saml_property_mappings"),
 14        ("authentik_providers_saml", "0003_samlprovider_sp_binding"),
 15        ("authentik_providers_saml", "0004_auto_20200620_1950"),
 16        ("authentik_providers_saml", "0005_remove_samlprovider_processor_path"),
 17    ]
 18
 19    initial = True
 20
 21    dependencies = [
 22        ("authentik_crypto", "0001_initial"),
 23        ("authentik_core", "0001_initial"),
 24    ]
 25
 26    operations = [
 27        migrations.CreateModel(
 28            name="SAMLPropertyMapping",
 29            fields=[
 30                (
 31                    "propertymapping_ptr",
 32                    models.OneToOneField(
 33                        auto_created=True,
 34                        on_delete=django.db.models.deletion.CASCADE,
 35                        parent_link=True,
 36                        primary_key=True,
 37                        serialize=False,
 38                        to="authentik_core.propertymapping",
 39                    ),
 40                ),
 41                ("saml_name", models.TextField(verbose_name="SAML Name")),
 42                ("friendly_name", models.TextField(blank=True, default=None, null=True)),
 43            ],
 44            options={
 45                "verbose_name": "SAML Property Mapping",
 46                "verbose_name_plural": "SAML Property Mappings",
 47            },
 48            bases=("authentik_core.propertymapping",),
 49        ),
 50        migrations.CreateModel(
 51            name="SAMLProvider",
 52            fields=[
 53                (
 54                    "provider_ptr",
 55                    models.OneToOneField(
 56                        auto_created=True,
 57                        on_delete=django.db.models.deletion.CASCADE,
 58                        parent_link=True,
 59                        primary_key=True,
 60                        serialize=False,
 61                        to="authentik_core.provider",
 62                    ),
 63                ),
 64                ("name", models.TextField()),
 65                ("acs_url", models.URLField(verbose_name="ACS URL")),
 66                ("audience", models.TextField(default="")),
 67                ("issuer", models.TextField(help_text="Also known as EntityID")),
 68                (
 69                    "assertion_valid_not_before",
 70                    models.TextField(
 71                        default="minutes=-5",
 72                        help_text=(
 73                            "Assertion valid not before current time + this value (Format:"
 74                            " hours=-1;minutes=-2;seconds=-3)."
 75                        ),
 76                        validators=[authentik.lib.utils.time.timedelta_string_validator],
 77                    ),
 78                ),
 79                (
 80                    "assertion_valid_not_on_or_after",
 81                    models.TextField(
 82                        default="minutes=5",
 83                        help_text=(
 84                            "Assertion not valid on or after current time + this value (Format:"
 85                            " hours=1;minutes=2;seconds=3)."
 86                        ),
 87                        validators=[authentik.lib.utils.time.timedelta_string_validator],
 88                    ),
 89                ),
 90                (
 91                    "session_valid_not_on_or_after",
 92                    models.TextField(
 93                        default="minutes=86400",
 94                        help_text=(
 95                            "Session not valid on or after current time + this value (Format:"
 96                            " hours=1;minutes=2;seconds=3)."
 97                        ),
 98                        validators=[authentik.lib.utils.time.timedelta_string_validator],
 99                    ),
100                ),
101                (
102                    "digest_algorithm",
103                    models.CharField(
104                        choices=[("sha1", "SHA1"), ("sha256", "SHA256")],
105                        default="sha256",
106                        max_length=50,
107                    ),
108                ),
109                (
110                    "signature_algorithm",
111                    models.CharField(
112                        choices=[
113                            ("rsa-sha1", "RSA-SHA1"),
114                            ("rsa-sha256", "RSA-SHA256"),
115                            ("ecdsa-sha256", "ECDSA-SHA256"),
116                            ("dsa-sha1", "DSA-SHA1"),
117                        ],
118                        default="rsa-sha256",
119                        max_length=50,
120                    ),
121                ),
122                (
123                    "require_signing",
124                    models.BooleanField(
125                        default=False,
126                        help_text=(
127                            "Require Requests to be signed by an X509 Certificate. Must match the"
128                            " Certificate selected in `Signing Keypair`."
129                        ),
130                    ),
131                ),
132                (
133                    "signing_kp",
134                    models.ForeignKey(
135                        default=None,
136                        help_text="Signing is enabled upon selection of a Key Pair.",
137                        null=True,
138                        on_delete=django.db.models.deletion.SET_NULL,
139                        to="authentik_crypto.certificatekeypair",
140                        verbose_name="Signing Keypair",
141                    ),
142                ),
143                (
144                    "sp_binding",
145                    models.TextField(
146                        choices=[("redirect", "Redirect"), ("post", "Post")],
147                        default="redirect",
148                        verbose_name="Service Prodier Binding",
149                    ),
150                ),
151            ],
152            options={
153                "verbose_name": "SAML Provider",
154                "verbose_name_plural": "SAML Providers",
155            },
156            bases=("authentik_core.provider",),
157        ),
158    ]

The base class for all migrations.

Migration files will import this from django.db.migrations.Migration and subclass it as a class called Migration. It will have one or more of the following attributes:

  • operations: A list of Operation instances, probably from django.db.migrations.operations
  • dependencies: A list of tuples of (app_path, migration_name)
  • run_before: A list of tuples of (app_path, migration_name)
  • replaces: A list of migration_names

Note that all migrations come out of migrations and into the Loader or Graph as instances, having been initialized with their app label and name.

replaces = [('authentik_providers_saml', '0001_initial'), ('authentik_providers_saml', '0002_default_saml_property_mappings'), ('authentik_providers_saml', '0003_samlprovider_sp_binding'), ('authentik_providers_saml', '0004_auto_20200620_1950'), ('authentik_providers_saml', '0005_remove_samlprovider_processor_path')]
initial = True
dependencies = [('authentik_crypto', '0001_initial'), ('authentik_core', '0001_initial')]
operations = [<CreateModel name='SAMLPropertyMapping', fields=[('propertymapping_ptr', <django.db.models.fields.related.OneToOneField>), ('saml_name', <django.db.models.fields.TextField>), ('friendly_name', <django.db.models.fields.TextField>)], options={'verbose_name': 'SAML Property Mapping', 'verbose_name_plural': 'SAML Property Mappings'}, bases=('authentik_core.propertymapping',)>, <CreateModel name='SAMLProvider', fields=[('provider_ptr', <django.db.models.fields.related.OneToOneField>), ('name', <django.db.models.fields.TextField>), ('acs_url', <django.db.models.fields.URLField>), ('audience', <django.db.models.fields.TextField>), ('issuer', <django.db.models.fields.TextField>), ('assertion_valid_not_before', <django.db.models.fields.TextField>), ('assertion_valid_not_on_or_after', <django.db.models.fields.TextField>), ('session_valid_not_on_or_after', <django.db.models.fields.TextField>), ('digest_algorithm', <django.db.models.fields.CharField>), ('signature_algorithm', <django.db.models.fields.CharField>), ('require_signing', <django.db.models.fields.BooleanField>), ('signing_kp', <django.db.models.fields.related.ForeignKey>), ('sp_binding', <django.db.models.fields.TextField>)], options={'verbose_name': 'SAML Provider', 'verbose_name_plural': 'SAML Providers'}, bases=('authentik_core.provider',)>]