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 ee9e6c6
Browse filesBrowse the repository at this point in the historyBrowse files
- Add support for IAKerb extension for Kerberos client ([#751](https://github.com/Devolutions/sspi-rs/issues/751)) ([a738671298](https://github.com/Devolutions/sspi-rs/commit/a7386712984473147e9d94636859452b98a6fc8f))
14
+
15
+
This PR adds support for the IAKERB extension according to the [IAKERB
- Drop local qualifier before a qualified name ([#767](https://github.com/Devolutions/sspi-rs/issues/767)) ([d87a57a704](https://github.com/Devolutions/sspi-rs/commit/d87a57a7042cbefd1f794a9c3657b33d3cee8037))
49
+
50
+
- Enforce the sequence number of MIC token only for acce… ([#772](https://github.com/Devolutions/sspi-rs/issues/772)) ([08d8622794](https://github.com/Devolutions/sspi-rs/commit/08d862279488dcdd0030050d7047bef85686a57a))
51
+
52
+
This PR fixes [#748](https://github.com/Devolutions/sspi-rs/issues/748)
53
+
by enforcing sequence number verification only on the acceptor side. The
54
+
initiator verifies the MIC checksum without enforcing the sequence
55
+
number.
56
+
57
+
---------
58
+
59
+
- Interoperate with MIT and Heimdal KDCs ([#768](https://github.com/Devolutions/sspi-rs/issues/768)) ([cf91195338](https://github.com/Devolutions/sspi-rs/commit/cf91195338f62a8b01ca5024e06f97c150e03225))
60
+
61
+
## Summary
62
+
63
+
Two client fixes for password logons against MIT and Heimdal KDCs, found
64
+
while using `sspi` for SASL/GSSAPI binds to Active Directory and
65
+
MIT/Heimdal realms. Each currently makes every such logon fail.
66
+
67
+
-**Reuse the pre-authentication salt for AS-REP decryption.** MIT and
68
+
Heimdal send PA-ETYPE-INFO2 only in `KDC_ERR_PREAUTH_REQUIRED`, not in
69
+
the AS-REP. The client then derived the AS-REP key with an empty salt
70
+
and failed with `Bad integrity: calculated hmac is different than
71
+
provided`. The AS exchange now keeps the pre-authentication salt in the
72
+
PA-DATA options, and the client falls back to it when the AS-REP has
73
+
none.
74
+
-**Accept an AS-REP enc-part tagged `EncTGSRepPart`.** The MIT KDC
75
+
encodes the AS-REP enc-part with APPLICATION 26 for backwards
76
+
compatibility, and the client failed with `Expected Application number
77
+
tag 25 but got: 26`. It now accepts both tags.
78
+
79
+
### About the `EncTGSRepPart` fallback
80
+
81
+
I know this fallback was removed during the review of #681 ("We should
82
+
not expect `EncTgsRepPart` during AS exchange"). The MIT KDC however
83
+
always sends it, so without the fallback no AS exchange with an MIT KDC
Follow up on [#768](https://github.com/Devolutions/sspi-rs/pull/768),
127
+
based on freshly fetched `origin/master` at
128
+
`[[cf91195338f62a8b01ca5024e06f97c150e03225](https://github.com/Devolutions/sspi-rs/commit/cf91195338f62a8b01ca5024e06f97c150e03225)](https://github.com/Devolutions/sspi-rs/commit/[cf91195338f62a8b01ca5024e06f97c150e03225](https://github.com/Devolutions/sspi-rs/commit/cf91195338f62a8b01ca5024e06f97c150e03225))`, including that merged PR.
129
+
130
+
- Carry the negotiated preauthentication salt out of the AS exchange for
131
+
password changes and password-backed U2U acceptor TGT acquisition, using
132
+
the same reply-salt selection helper as the direct/IAKerb client.
133
+
- Distinguish an absent PA-ETYPE-INFO2 hint, an omitted salt field, and
134
+
an explicitly empty salt. Retain the existing public extractor
135
+
signatures.
136
+
- Share authenticated AS-REP decryption between password/keytab and the
137
+
actual PKINIT-facing PKU2U extractors, accepting application tags 25 and
138
+
26 without weakening decryption or nonce handling.
139
+
- Add 27 deterministic regressions, reusing the KDC mocks and
140
+
direct/IAKerb flows. Fix the reported test-target Clippy findings and
141
+
the RFC section-title capitalization.
142
+
143
+
## Salt semantics
144
+
145
+
RFC 4120 section 4, “Encryption and Checksum Specifications”, defines
146
+
the default salt as the realm followed by principal components without
147
+
separators; section 5.2.7.5, “PA-ETYPE-INFO2”, defines the optional salt
148
+
field.
149
+
150
+
| Reply information | Salt used |
151
+
| --- | --- |
152
+
| PA-ETYPE-INFO2 absent | Salt used for preauthentication |
153
+
| Entry present, salt field absent | Default from the reply client realm
154
+
and principal components |
155
+
| Salt explicitly empty | Empty salt, even when preauthentication used a
156
+
different salt |
157
+
| Salt explicitly nonempty | Reply-provided salt, taking precedence over
158
+
preauthentication |
159
+
160
+
The preauthentication path also distinguishes an absent hint from a
161
+
present entry requesting the principal's default salt. Existing
162
+
explicit-salt/tag-25 behavior and the IAKerb state machine are retained.
0 commit comments