TLS 1 und 1.1 abgedreht–Fehler in Anmeldung RDP

Wir haben einen Service der wohl oder übel mit einem benannten AD Benutzer ausgeführt wird. Es erfolgt aus einer ASP.NET Web Anwendung einen Benutzer Anmeldung mit Namen und Passwort. Damit holen wir uns einen Token, der an die Graph Api weiter gereicht wird um dort einen Chat Eintrag anzulegen. Das geht delegiert in unserem Fall nicht. Seit 4 Wochen nichts. Aber in diesem Fall war ich misstrauisch ob da nicht ein Fehler bei der User Authentication im AzureAD vorliegt.

Da an der entsprechenden Stelle lehrbuchmäßig bzw laut Doku eine Ausnahmebehandlung der vorgeschlagene Weg ist um die Logik abzubilden, wird eine 2te Exception quasi geschluckt.

   1:  Try
   2:   Dim accounts = Await publicClient.GetAccountsAsync()
   3:   daToken = publicClient.AcquireTokenSilent(scopes, accounts.First) _
   4:      .WithForceRefresh(True) _
   5:     .ExecuteAsync().Result.AccessToken
   6:  Catch ex As Exception
   7:     Dim accessTokenRequest = publicClient.AcquireTokenByUsernamePassword(scopes, "fakeuser@ppedv.onmicrosoft.com", sString)
   8:     daToken = accessTokenRequest.ExecuteAsync().Result.AccessToken
   9:  End Try

Erst dadurch das ich mich am Produktivserver direkt mit Visual Studio an den W3P Prozess des IIS Server gehängt habe, konnte ich sehen, dass in Zeile 8 eine Exception geworfen wurde.

parsing_wstrust_response_failed

There was an error parsing WS-Trust response from the endpoint. This may occur if there is an issue with your ADFS configuration. See https://aka.ms/msal-net-iwa-troubleshooting for more details. Error Message: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Ich habe mir den Ast gesucht. Ein Tipp von Twitter brachte mich auf den Weg. Microsoft hat TLS 1.0 und TLS 1.1 abgedreht. Irgendwo hatte ich mal was gelesen. Dann kappt AzureAD Authentifizierung nicht mehr. Selber Code auf lokaler Dev Maschine klappt.

Laut Doku sollte ein Windows 2016 Server und Code auf .NET 4.7 mindestens TLS 1.2 verwenden. Tat es aber nicht. Zwei Registry Keys, die man sich auf dem Windows Server mit einem Powershell Script setzen lassen kann.

HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Damit habe ich den Windows Rechner gleich mal dicht gemacht, weil RDP (Remote Desktop) irgendwie auf ältere TLS Versionen setzt. Kein RDP Zugriff mehr möglich.

Workaround von dem abgeraten wird, RDP auf RDP TCP umstellen. Auch wieder eine Regkey am Server bevor man rebootet.

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "SecurityLayer" -Value 0

Bild

Kommentare sind geschlossen