Uh oh!
There was an error while loading. Please reload this page.
[release/8.0-staging] Fix calculation of channel bindings hash in managed NTLM implementation - #102565
Conversation
filipnavara
commented
May 22, 2024
rzikm
commented
May 23, 2024
LGTM. Removed Servicing-Consider for now, in case @karelz wants to edit the template first. |
vitek-karas
commented
May 24, 2024
/fyi @simonrozsival |
JeroenBer
commented
May 25, 2024
Yes we urgently need this for our customers. Not only for Android but also iOS and macOS since the unmanaged implementations cause crashes and are not usable (#97966) |
Tagging subscribers to this area: @dotnet/ncl, @bartonjs, @vcsjones |
JeroenBer
commented
May 31, 2024
@rzikm , not sure how this works but I see the PR is missing the "Servicing-approved" label before it can be merged. Who can do this ? |
@JeroenBer I am keeping eye on this issue. The earliest this fix can get released is in July servicing release, and deadline for that release is mid June, we are still on track for that release. |
JeroenBer
commented
May 31, 2024
@rzikm Thanks for keeping an eye on this. A lot of our customers are waiting for this. July is still a long time but please let's make that. If there's anything we can do to speed this up, like creating a service case at Microsoft, then please let me know. |
rzikm
commented
May 31, 2024
Creating a service case is unlikely to speed things up. .NET has monthly cadence of servicing releases (with release dates coinciding with patch Tuesdays). Around the time one release is released, next one is branched off and starts to be prepared. Restarting the process mid-way to include additional fixes would be costly (I don't know the figures, it's just my assumption based on my observations). At any rate, there is potentially a way to unblock you and your customers earlier by using a private build of System.Net.Security.dll containing the fix. We use the process for validating that the fix is working. For desktop platforms the steps are simple (self-contained publish of the app+ overwriting the changed dll), I can provide you with the right dll for macOS if this option is available for you. Unfortunately, I don't know if a similar process is possible for mobile platforms. Maybe @simonrozsival knows. |
It is possible to use custom runtime build in a mobile app, but I wouldn't recommend it. An example how to use custom dll on Android (or other mobile platforms) is shown here in the "Known workarounds" section: #95295 |
JeroenBer
commented
Jun 3, 2024
Well in that case please try to get this fix in the July servicing release. |
Approved via email on 6/3 and on 6/6 (with corrected customer info). |
JeroenBer
commented
Jun 7, 2024
@rzikm this is merged into dotnet:release/8.0-staging I think, does this mean it will come into the next servicing release in July ? For Android / iOS / macOS does this come available with a workload update for android / ios / macos or does this come available with a SDK update ? |
wfurt
commented
Jun 7, 2024
The libraries are shared across all runtimes. For Android, the managed implementation is the only one option because there is no GSSAPI. For iOS & macOS you need to subscribe to it. |
JeroenBer
commented
Jun 7, 2024
Thanks for the info, so just updating the SDK and rebuilding would be enough then ? No need to update workloads for android etc. For iOS / macOS we opted in for managed NTLM. |
wfurt
commented
Jun 7, 2024
yes. cc @filipnavara just in case I missed something. |
filipnavara
commented
Jun 7, 2024
It’s correct. SDK update is all that’s needed. |
Backport of #95898 to release/8.0-staging
Fixes#95725
Customer Impact
Reported by customers in issue #95898 and by eM Client in #95725 (comment) - they cannot connect to Microsoft Exchange and quite a few other host providers on Android client (which uses ManagedNtlm by default).
Authenticating to HTTPS servers using NTLM fails with "Unauthorized" error code when Extended Authentication option is enabled on the server. This is an increasingly common setting on Microsoft Exchange deployments. The bug affects primarily the Android platform where the Managed NTLM implementation is used. We also allow the Managed NTLM as opt-in on macOS and Linux which would be likewise affected if the developer chooses to enable the
System.Net.Security.UseManagedNtlmapp context switch (which is rare).Regression
No
Testing
Validated by eM Client on private Exchange instance in Azure VM + against one of the largest host providers in Germany.
The fix has been in .NET 9 since December 2023 and there were no observed issues.
Note: There are no unit tests, the set up is too complicated to test it meaningfully.
Risk
Low; the modified code path is in platform specific code for a single authentication scheme.