Help! Ik las dat toekomstige Windows versies mogelijk gaan NTLM bij het oud huisvuil buiten zetten, dus, ik dacht ik kijk eens naar de alternatieven die ze aanraden, en er bestaat een AcceptSecurityContext (Negotiate) die verder identiek lijkt te werken zoals zijn NTLM tegenhanger, en bij testen op mijn laptop lijkt alles normaal te werken, maar...
Kom ik op het werk, en daar is het niet natuurlijk! Negotiate zou zelf wisselen tussen Kerberos en NTLM, afhankelijk van wat beschikbaar is, en op het werk zie ik inderdaad andere, langere, data, en krijg ik netjes SEC_I_CONTINUE_NEEDED, maar vreemd genoeg nog eens extra. Als de browser (Chrome in dit geval, heb niet direct andere getest, maar als ze allemaal braaf InitializeSecurityContext doen zoals de bedoeling is, zou dat geen rol mogen spelen) een derde keer terug komt, is het zonder extra data achter Authorization: Negotiate, en gaat het dus de mist in. Als ik alsnog AcceptSecurityContext probeer, geeft die SEC_E_INVALID_HANDLE natuurlijk.
Ik vind niet wat er fout gaat. Ik merk niets anders dan anders in de data buffers en de pfContextAttr die terug komen... Ik heb zitten zoeken of het aan de AcquireCredentialsHandle zou kunnen liggen, maar die lijkt het ook helemaal goed te doen... Ik heb geen idee wat ik nog verder kan uitzoeken waar het zou mis lopen... Zou ik best eens hetzelfde proberen doen op IIS en de data daar afluisteren en vergelijken?
(Bijna vergeten, mocht je mee willen debuggen, de code staat hier, als je hulp wil om een debug-omgeving op te zetten, geef me een seintje.)
Bookmarks