You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 6e21eb7
Browse filesBrowse the repository at this point in the historyBrowse files
- Honour DNS SRV port and fail over across multiple KDCs ([#698](https://github.com/Devolutions/sspi-rs/issues/698)) ([f43059048a](https://github.com/Devolutions/sspi-rs/commit/f43059048a0cbfe750467fa7f6f886d24ffcf325))
14
+
15
+
Kerberos clients resolved a single KDC and never failed over: the
16
+
Windows DNS SRV lookup read only the first record and hardcoded port 88,
17
+
krb5.conf parsing kept only the first `kdc =` line of a realm, and every
18
+
message of an exchange re-resolved the KDC independently, so round-robin
19
+
DNS could bounce one authentication between KDCs.
20
+
21
+
- Honour the DNS SRV port on Windows by walking every record
22
+
`DnsQuery_W` returns, keeping the SRV ones and using their `wPort`.
23
+
- Add `detect_kdc_urls()`, which returns every candidate in resolution
24
+
order (`SSPI_KDC_URL_<REALM>`, krb5.conf, DNS SRV); `detect_kdc_url()`
25
+
keeps returning the first.
26
+
- Read every `kdc =` line of a realm from krb5.conf, one host per line
27
+
as the MIT documentation specifies.
28
+
- Try candidates in order and advance on any send error; any KDC reply,
29
+
including a KRB-ERROR, is returned as-is.
30
+
- Pin the KDC that answered for a realm for the rest of the exchange and
31
+
re-resolve only when it stops answering. A configured KDC URL stays the
32
+
sole candidate for the home realm; referral realms are always resolved.
33
+
34
+
SRV priority and weight are not applied yet; see #787.
0 commit comments