diff --git a/authentik/sources/kerberos/api/source.py b/authentik/sources/kerberos/api/source.py index b06f05b6d8..cffc0a8940 100644 --- a/authentik/sources/kerberos/api/source.py +++ b/authentik/sources/kerberos/api/source.py @@ -32,6 +32,7 @@ class KerberosSourceSerializer(SourceSerializer): "group_matching_mode", "realm", "krb5_conf", + "kadmin_type", "sync_users", "sync_users_password", "sync_principal", @@ -69,6 +70,7 @@ class KerberosSourceViewSet(UsedByMixin, ModelViewSet): "slug", "enabled", "realm", + "kadmin_type", "sync_users", "sync_users_password", "sync_principal", diff --git a/authentik/sources/kerberos/migrations/0002_kerberossource_kadmin_type.py b/authentik/sources/kerberos/migrations/0002_kerberossource_kadmin_type.py new file mode 100644 index 0000000000..f58417ab4d --- /dev/null +++ b/authentik/sources/kerberos/migrations/0002_kerberossource_kadmin_type.py @@ -0,0 +1,22 @@ +# Generated by Django 5.0.10 on 2024-12-06 19:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("authentik_sources_kerberos", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="kerberossource", + name="kadmin_type", + field=models.TextField( + choices=[("MIT", "Mit"), ("Heimdal", "Heimdal"), ("other", "Other")], + default="other", + help_text="KAdmin server type", + ), + ), + ] diff --git a/authentik/sources/kerberos/models.py b/authentik/sources/kerberos/models.py index 5d679d4480..7eb606c713 100644 --- a/authentik/sources/kerberos/models.py +++ b/authentik/sources/kerberos/models.py @@ -13,7 +13,7 @@ from django.http import HttpRequest from django.shortcuts import reverse from django.templatetags.static import static from django.utils.translation import gettext_lazy as _ -from kadmin import KAdmin +from kadmin import KAdmin, KAdminApiVersion from kadmin.exceptions import PyKAdminException from rest_framework.serializers import Serializer from structlog.stdlib import get_logger @@ -36,6 +36,12 @@ LOGGER = get_logger() _kadmin_connections: dict[str, Any] = {} +class KAdminType(models.TextChoices): + MIT = "MIT" + HEIMDAL = "Heimdal" + OTHER = "other" + + class KerberosSource(Source): """Federate Kerberos realm with authentik""" @@ -44,6 +50,9 @@ class KerberosSource(Source): blank=True, help_text=_("Custom krb5.conf to use. Uses the system one by default"), ) + kadmin_type = models.TextField( + choices=KAdminType.choices, default=KAdminType.OTHER, help_text=_("KAdmin server type") + ) sync_users = models.BooleanField( default=False, help_text=_("Sync users from Kerberos into authentik"), db_index=True @@ -199,6 +208,14 @@ class KerberosSource(Source): return str(conf_path) def _kadmin_init(self) -> KAdmin | None: + api_version = None + match self.kadmin_type: + case KAdminType.MIT: + api_version = KAdminApiVersion.Version4 + case KAdminType.HEIMDAL: + api_version = KAdminApiVersion.Version2 + case KAdminType.OTHER: + api_version = KAdminApiVersion.Version2 # kadmin doesn't use a ccache for its connection # as such, we don't need to create a separate ccache for each source if not self.sync_principal: @@ -207,6 +224,7 @@ class KerberosSource(Source): return KAdmin.with_password( self.sync_principal, self.sync_password, + api_version=api_version, ) if self.sync_keytab: keytab = self.sync_keytab @@ -218,11 +236,13 @@ class KerberosSource(Source): return KAdmin.with_keytab( self.sync_principal, keytab, + api_version=api_version, ) if self.sync_ccache: return KAdmin.with_ccache( self.sync_principal, self.sync_ccache, + api_version=api_version, ) return None diff --git a/authentik/sources/kerberos/sync.py b/authentik/sources/kerberos/sync.py index 4b34fed6c6..492c706a43 100644 --- a/authentik/sources/kerberos/sync.py +++ b/authentik/sources/kerberos/sync.py @@ -43,8 +43,10 @@ class KerberosSync: self._messages = [] self._logger = get_logger().bind(source=self._source, syncer=self.__class__.__name__) self.mapper = SourceMapper(self._source) - self.user_manager = self.mapper.get_manager(User, ["principal"]) - self.group_manager = self.mapper.get_manager(Group, ["group_id", "principal"]) + self.user_manager = self.mapper.get_manager(User, ["principal", "principal_obj"]) + self.group_manager = self.mapper.get_manager( + Group, ["group_id", "principal", "principal_obj"] + ) self.matcher = SourceMatcher( self._source, UserKerberosSourceConnection, GroupKerberosSourceConnection ) @@ -67,12 +69,16 @@ class KerberosSync: def _handle_principal(self, principal: str) -> bool: try: + # TODO: handle permission error + principal_obj = self._connection.get_principal(principal) + defaults = self.mapper.build_object_properties( object_type=User, manager=self.user_manager, user=None, request=None, principal=principal, + principal_obj=principal_obj, ) self._logger.debug("Writing user with attributes", **defaults) if "username" not in defaults: @@ -91,6 +97,7 @@ class KerberosSync: request=None, group_id=group_id, principal=principal, + principal_obj=principal_obj, ) for group_id in defaults.pop("groups", []) } diff --git a/blueprints/schema.json b/blueprints/schema.json index 09942953d8..da364522cd 100644 --- a/blueprints/schema.json +++ b/blueprints/schema.json @@ -6976,6 +6976,16 @@ "title": "Krb5 conf", "description": "Custom krb5.conf to use. Uses the system one by default" }, + "kadmin_type": { + "type": "string", + "enum": [ + "MIT", + "Heimdal", + "other" + ], + "title": "Kadmin type", + "description": "KAdmin server type" + }, "sync_users": { "type": "boolean", "title": "Sync users", diff --git a/poetry.lock b/poetry.lock index 60f94fa0ae..7a85947269 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -4236,48 +4236,43 @@ cli = ["click (>=5.0)"] [[package]] name = "python-kadmin-rs" -version = "0.4.0" +version = "0.5.2" description = "Python interface to the Kerberos administration interface (kadm5)" optional = false python-versions = "<3.14,>=3.9" files = [ - {file = "python_kadmin_rs-0.4.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:b5a5abda2c60961c1d456c920dd3a3053e615a6f1f5703606953be8dfdddef2a"}, - {file = "python_kadmin_rs-0.4.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:57004e7aa52d95a76b0c6d920526f68b45206c51d8d8520d94511727c7ccbad0"}, - {file = "python_kadmin_rs-0.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:66f01443b6376494f67d727663600a413a701852a60c724a3cd728758455f59c"}, - {file = "python_kadmin_rs-0.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:2af5a50554753ba62ebc979b7767b43e072cff5b56dc0a1f09970fa9105cf55a"}, - {file = "python_kadmin_rs-0.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1720b3b9dc156be08e36b7f3492431d2b475b3ecbfa403d73d6e1fcc5ac70bc4"}, - {file = "python_kadmin_rs-0.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:66a64d615d28dbf17ad8822d75f6a4685f7db7ddef9ad9d69053dcfab592e4ec"}, - {file = "python_kadmin_rs-0.4.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:56ce2b57fbb3b0e7d0e69bd9ce3e7a165ed018ac4c4d60b259f50e68a6a3bb00"}, - {file = "python_kadmin_rs-0.4.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:1aabecd407afd70fca21208f35ea6d2101fb27922e96c5ceed7fcaa6c44359b0"}, - {file = "python_kadmin_rs-0.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e53eb9914eb6542618ec5da67c51e943eb724f76f186d88ae591bd8fde01345a"}, - {file = "python_kadmin_rs-0.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:c51115155ff1001ab3a0826a3de753927ea1373828e5432bc0eede4ec88c5c72"}, - {file = "python_kadmin_rs-0.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:547223f156baa8ef1236c7b3a55bc13506beada6147679f4a73dd1de5e809d30"}, - {file = "python_kadmin_rs-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:951ca2b9b3019cf82c5e1882d1cec6e28bbf2d900d2b8022aac23a3e65a4ca7d"}, - {file = "python_kadmin_rs-0.4.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:b1c1a0b63ec3bd1a023feb094e1c6a93202237416d0783d4677be2b858fe6154"}, - {file = "python_kadmin_rs-0.4.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:b27c16187dd24b820c966f03f889c140d0a55f547158fdc5bc2ecb4eb7e94fbe"}, - {file = "python_kadmin_rs-0.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fab810574fd54b715806104400a5c105879005597bc043469d506cb8e1e633c4"}, - {file = "python_kadmin_rs-0.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:377ffa81264b115fafd2b4a83aab990a138a3684b90a133bc3a6c4081829c358"}, - {file = "python_kadmin_rs-0.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7b9a3909592404ac0483b3a5d584466198b5e17e370be3e221ff19c4cec97ce4"}, - {file = "python_kadmin_rs-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e6050fdaa638585046b8579867d3540f99efbf24dc10715ac05bae6ca9bbbffd"}, - {file = "python_kadmin_rs-0.4.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e36c868960619ed4df0e69f53ff9458f661c1a5fbc627554cc7777231e9e69bd"}, - {file = "python_kadmin_rs-0.4.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:3f7692eb90ddacc353a5ed3d53fe0bc62df4132b30158e1c9a2bf24340a6929a"}, - {file = "python_kadmin_rs-0.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:7a551f8010e47413513cc19e0001dfed9178f5de509c4590b02584e0387df55c"}, - {file = "python_kadmin_rs-0.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e8623866a0324823af5edc2da6a6e90cb8a0d2ecbeb80f9a04014cc18f1c182f"}, - {file = "python_kadmin_rs-0.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:223807b9108723d4f47d3243f6256f4026be0ea7ccbb356807d97a469a8bc628"}, - {file = "python_kadmin_rs-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e7b8f6a2b183c862b94462251537d508332c82d2c4dec1699875245041c4a684"}, - {file = "python_kadmin_rs-0.4.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:dee6325628edc33eaf217268b521b0923f519fdb7f5ac81dcfb97c9574fb3599"}, - {file = "python_kadmin_rs-0.4.0-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:59b5db1d0381fbfb0b9ff2f79949abae6c645ccbd7c8c72a9b932fc0eab1d9b0"}, - {file = "python_kadmin_rs-0.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:45fd65c49e0c64968d11eb7f6b93a9a09788967ca667e554f35fea467ea67f1e"}, - {file = "python_kadmin_rs-0.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:fc49b75be7d032f5a37a53b777267b81070220b9d14777374f159c5b1f64686a"}, - {file = "python_kadmin_rs-0.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fafb2e57fbc82e27c26c5450669846e02afbf6b4065127c4396fa2c21ec31c42"}, - {file = "python_kadmin_rs-0.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:59b622b7396922748b2463ad0a682b6f6a6887f3eee720eeda8a57bed6370555"}, - {file = "python_kadmin_rs-0.4.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:40ce8ff6dcc1bd82f34e7aca611e299a4ca51f28e5cb8772ba7d38532c9564d9"}, - {file = "python_kadmin_rs-0.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:1ef8030f282bdcbb2a771699e238b0f555336ddd626d4562ef3e2e17abc31c3b"}, - {file = "python_kadmin_rs-0.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:617292305b3fde5e6b009b70ae8fd6cc5c7a962732558cffbdc27fca157ce574"}, - {file = "python_kadmin_rs-0.4.0-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:6fe1d0a03d0a0a75296902ad95b6639372eed93d16422f33572d23b0b144ce64"}, - {file = "python_kadmin_rs-0.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7fef94fe96687b9c6eb9bf670afda91f24c62fb2bc2f80394e0f2f31474494a5"}, - {file = "python_kadmin_rs-0.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:627dff4aa5c222fc83cbb5312362bf80c68b515afd7027b27d763916e0adeb39"}, - {file = "python_kadmin_rs-0.4.0.tar.gz", hash = "sha256:d32befeaa68dbaac077b565f5a47a23cba6e142190c0d521e595b30de8587efa"}, + {file = "python_kadmin_rs-0.5.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:1399e507467881882275eb822caee73f7eb509d25c25af406e91a75221a08ec9"}, + {file = "python_kadmin_rs-0.5.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:86c5f0c799ea903fcc7d67ed47ce9080ea639c8468483c4d6e3a854ab268c959"}, + {file = "python_kadmin_rs-0.5.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:244fca7d8ca7793729b8a01ae9f2a3c5931fca6bc11d7f3b67fa95297146cd8e"}, + {file = "python_kadmin_rs-0.5.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:034bed577e20cdf4682f4d591ec68d51a44e85a101f2d905c3728143390d93f1"}, + {file = "python_kadmin_rs-0.5.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:048e73490278f74510ac7f19a11ca7860c88863f55f2c79a47c875fc174bb2aa"}, + {file = "python_kadmin_rs-0.5.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:dc580a38397dcdd2021127861c0d35a0c85e556644673387e40331f3fb402dc6"}, + {file = "python_kadmin_rs-0.5.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:abb4df1a35bb177a7a9d2aee82d99d2285240368e6a1784c5066003872374679"}, + {file = "python_kadmin_rs-0.5.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:83574caf964140e87df04a1d97d84b1dd1d60395cae430429b8c1b78a1f5e6de"}, + {file = "python_kadmin_rs-0.5.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:01fc8c3cf707bbe011610107a6803ea2cb9025f4152931f40a39dc8b8d29d42a"}, + {file = "python_kadmin_rs-0.5.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bb5091dbeb0159f95292768b5dc7cce057a29339d5f9c085921a8f16baa3cb32"}, + {file = "python_kadmin_rs-0.5.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:0ece4d210b70f7810a8d909f32872bb47602f8c9ca00289fb8d34a6ee79f5b19"}, + {file = "python_kadmin_rs-0.5.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:d351b5793d8340e9101bdd2684dc6e84156e37af910140530e762d2d92905819"}, + {file = "python_kadmin_rs-0.5.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:13e13c0487dfb9f6986fc6a11e8526875c935aa9bbdf9514049f2c5b5b5cdae7"}, + {file = "python_kadmin_rs-0.5.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:40fd1663c47bcada61e0bb7c681a1518b9fd1d17f03e3193bdfb6313e5afa6d0"}, + {file = "python_kadmin_rs-0.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:945a9314e47d930825e46f532341ea1f595a7a78a9d75866e5564bd28cd4b6af"}, + {file = "python_kadmin_rs-0.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:40cc14b24028a23a796fa5a53e6236c72c90247be803c6a8976f6e758b377f67"}, + {file = "python_kadmin_rs-0.5.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:cd5b032fb5c8d609d38bc417e1e5405885d153d39742bbac6514af28b8930a74"}, + {file = "python_kadmin_rs-0.5.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:6f904a912ea04cd285b0d33107d6e68c904b046fa5bd7555c48986ee4ef139f7"}, + {file = "python_kadmin_rs-0.5.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:4234bc17dff770cbc32c14b22659651f4c9a882086cc19be7467f4755357f756"}, + {file = "python_kadmin_rs-0.5.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bb3abbf9a0a91a9205cef8ff4fb45bdeb7ee773d2eda67e3a8c01a2f9f561b7f"}, + {file = "python_kadmin_rs-0.5.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6503feef30cb59fd79b573cde5a2e9f892e5b89ffdb78e78db21815f67a14b80"}, + {file = "python_kadmin_rs-0.5.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b6bfe54524573ccf4424344af88e57804399061f16aaf2db1965cafce79f3c76"}, + {file = "python_kadmin_rs-0.5.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:c953f2cdfd92217d8ae4d3dc0374305ed0bd21cbfa7de50c5f7dfc53c44eaa7a"}, + {file = "python_kadmin_rs-0.5.2-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:2632b02116651a23e3b5b7fce87f939067918f41b9d542af21ee09d964d41bfd"}, + {file = "python_kadmin_rs-0.5.2-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:ed6eafd0f9606d1d554aae7b9f5ebae681ef0dc33b08b0affb363fa65b367ad6"}, + {file = "python_kadmin_rs-0.5.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:81df51e55e45fee08890f85230a33ddb066a7116ef8bdbe9ce854f3b95ed4c2d"}, + {file = "python_kadmin_rs-0.5.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fb0954ff796e2cb5813665575ecd8f51df28dfeb52a81601516b056288418a94"}, + {file = "python_kadmin_rs-0.5.2-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:6fcb5f5c49e96e8ec6c5096c701871978bd2a3a7ef4ebdcbc3abb6a05aa8a5b7"}, + {file = "python_kadmin_rs-0.5.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:beb2619c27b2f079d7d0c67f3e998712f236808f0c2c0a5389f07d1977246762"}, + {file = "python_kadmin_rs-0.5.2-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:cecaeebe7acf78e17730b1fa8e5be7aae0e9052c347fc35b1a2d3f77fd69bfe1"}, + {file = "python_kadmin_rs-0.5.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9b2692f6e07461703ac1d20c590ffd5e980d918cdb19c95d875e5f1cf1df397"}, + {file = "python_kadmin_rs-0.5.2.tar.gz", hash = "sha256:8ff0c8cc8f2a10ce20ae0cf1dd5b2d5569e47d1d54cf53c4fbc95f9120e91bd8"}, ] [[package]] @@ -5912,4 +5907,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "~3.12" -content-hash = "f6e8316415a23b165130d63a7ea311b257f65f5478ad85b0d38ac72fb89bc1c4" +content-hash = "38089ad25be7638c118f4b503ad2f8495c941667f5485efe60b2bbdb14d6f44c" diff --git a/pyproject.toml b/pyproject.toml index 1ebeca1a88..9aec51ec57 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -131,7 +131,7 @@ pydantic-scim = "*" pyjwt = "*" pyrad = "*" python = "~3.12" -python-kadmin-rs = "0.4.0" +python-kadmin-rs = "0.5.2" pyyaml = "*" requests-oauthlib = "*" scim2-filter-parser = "*" diff --git a/schema.yml b/schema.yml index d8f861c81a..faced58bd3 100644 --- a/schema.yml +++ b/schema.yml @@ -25867,6 +25867,17 @@ paths: name: enabled schema: type: boolean + - in: query + name: kadmin_type + schema: + type: string + enum: + - Heimdal + - MIT + - other + description: |+ + KAdmin server type + - in: query name: name schema: @@ -42879,6 +42890,12 @@ components: - global - per_provider type: string + KadminTypeEnum: + enum: + - MIT + - Heimdal + - other + type: string KerberosSource: type: object description: Kerberos Source Serializer @@ -42966,6 +42983,10 @@ components: krb5_conf: type: string description: Custom krb5.conf to use. Uses the system one by default + kadmin_type: + allOf: + - $ref: '#/components/schemas/KadminTypeEnum' + description: KAdmin server type sync_users: type: boolean description: Sync users from Kerberos into authentik @@ -43134,6 +43155,10 @@ components: krb5_conf: type: string description: Custom krb5.conf to use. Uses the system one by default + kadmin_type: + allOf: + - $ref: '#/components/schemas/KadminTypeEnum' + description: KAdmin server type sync_users: type: boolean description: Sync users from Kerberos into authentik @@ -48459,6 +48484,10 @@ components: krb5_conf: type: string description: Custom krb5.conf to use. Uses the system one by default + kadmin_type: + allOf: + - $ref: '#/components/schemas/KadminTypeEnum' + description: KAdmin server type sync_users: type: boolean description: Sync users from Kerberos into authentik diff --git a/web/src/admin/sources/kerberos/KerberosSourceForm.ts b/web/src/admin/sources/kerberos/KerberosSourceForm.ts index e7d8c2ef1b..9c18fbd0f1 100644 --- a/web/src/admin/sources/kerberos/KerberosSourceForm.ts +++ b/web/src/admin/sources/kerberos/KerberosSourceForm.ts @@ -27,6 +27,7 @@ import { ifDefined } from "lit/directives/if-defined.js"; import { FlowsInstancesListDesignationEnum, GroupMatchingModeEnum, + KadminTypeEnum, KerberosSource, KerberosSourceRequest, SourcesApi, @@ -215,6 +216,34 @@ export class KerberosSourceForm extends WithCapabilitiesConfig(BaseSourceForm ${msg("Sync connection settings")}
+ + + +