On 2024-05-09 00:13, Wei-Jun Wang wrote:
Hi Michael,
I've filed https://bugs.openjdk.org/browse/JDK-8331975. I plan to introduce a
system property to control the string comparison mode.
In my earlier reply I mentioned fixing keytab entry lookup no matter how the
comparison is done. I did some evaluation and the code change will be quite
big. The lookup of a long term service key is now divided in 2 steps: first
find the keys for the service, and then pinpoint the key with the correct kvno
and the etype. Unfortunately the name info is lost after the 1st step. In order
to do a case-sensitive preferred 2nd step search, the name has to be retained.
Also, if a vendor goes case-insensitive, in theory there is a probability that
between the 2 entries in the keytab actually the one that has a different case
is the right one! Who knows.
Therefore I decide not to implement this part and only rely on the system
property. If a program wants to work with a case-sensitive KDC that really has
service names only differ in case, please just turn this system property on.
I'd just like to add one more thing the matter how MIT Kerberos behaves:
# klist -kte | grep \\$
2 01/31/19 11:03:22 DEBLNDW011X$@AD001.SIEMENS.NET (DEPRECATED:des-cbc-crc)
2 01/31/19 11:03:22 DEBLNDW011X$@AD001.SIEMENS.NET (DEPRECATED:des-cbc-md5)
2 01/31/19 11:03:22 DEBLNDW011X$@AD001.SIEMENS.NET (aes128-cts-hmac-sha1-96)
2 01/31/19 11:03:22 DEBLNDW011X$@AD001.SIEMENS.NET (aes256-cts-hmac-sha1-96)
2 01/31/19 11:03:22 DEBLNDW011X$@AD001.SIEMENS.NET (DEPRECATED:arcfour-hmac)
# kinit -k deblndw011x\$
kinit: Keytab contains no suitable keys for deblndw011x$@AD001.SIEMENS.NET
while getting initial credentials
# kinit -k DEBLNDW011X\$
# echo $?
0
So MIT Kerberos seems to behave according to the RFC.
Michael