Skip to content

Commit 259fef4

Browse files
Add krb_provider helper to set default krb5 options
When auth_provider=krb5 is used, SSSD requires krb5_realm, krb5_server, and krb5_kpasswd options, otherwise SSSD would fail with "Missing krb5_realm option!". Adds krb_provider() method in SSSDCommonConfiguration that sets default krb5 options (auth_provider, krb5_realm, krb5_server, krb5_kpasswd) from the backend's host configuration. Uses setdefault() to preserve explicit config values Called by krb5_auth() to reduce boilerplate in YAML configs Works with KDC, IPA, and AD backends Signed-off-by: Madhuri Upadhye <[email protected]>
1 parent 8147b99 commit 259fef4

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

sssd_test_framework/utils/sssd.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -868,6 +868,26 @@ def local(self) -> None:
868868
)
869869
self.sssd.default_domain = "local"
870870

871+
def krb_provider(self, backend: KDC | GenericProvider) -> None:
872+
"""
873+
Set auth_provider to krb5 and populate krb5 options.
874+
875+
This method sets ``auth_provider=krb5`` and configures
876+
``krb5_realm``, ``krb5_server``, and ``krb5_kpasswd`` based on
877+
the provided backend (KDC, IPA, or AD).
878+
879+
:param backend: Backend role object (KDC, IPA, or AD).
880+
:type backend: KDC | GenericProvider
881+
"""
882+
host = backend.host
883+
if not isinstance(host, BaseDomainHost):
884+
raise TypeError(f"Expected BaseDomainHost, got {type(host)}")
885+
886+
host.client.setdefault("auth_provider", "krb5")
887+
host.client.setdefault("krb5_realm", host.realm)
888+
host.client.setdefault("krb5_server", host.hostname)
889+
host.client.setdefault("krb5_kpasswd", host.hostname)
890+
871891
def krb5_auth(self, kdc: KDC, domain: str | None = None) -> None:
872892
"""
873893
Configure auth_provider to krb5, using the KDC from the multihost
@@ -888,6 +908,7 @@ def krb5_auth(self, kdc: KDC, domain: str | None = None) -> None:
888908
if domain is None:
889909
raise ValueError("No domain specified!")
890910

911+
self.krb_provider(kdc)
891912
self.sssd.merge_domain(domain, kdc)
892913
self.sssd.fs.write("/etc/krb5.conf", kdc.config(), user="root", group="root", mode="0644")
893914

0 commit comments

Comments
 (0)