Hallo Abt, musste mich ummelden, mein Account geht nicht mehr, Mail für neues Passort bekomme ich auch nicht. Bin mir auch nicht sicher ob das mit FireFox zusammenhängt ... erst mal egal.
Zu dem Problem mit Impersonation, habe ich einige Dinge gefunden, auch Beispiele die ich getestet habe eines mal hier:
https://learn.microsoft.com/en-us/dotnet/api/system.security.principal.windowsidentity.impersonate?redirectedfrom=MSDN&view=netframework-4.0#System_Security_Principal_WindowsIdentity_Impersonate_System_IntPtr_
Nun nochmal zur Problembeschreibung. Ich verwende hier eine Desktopanwendung in WPF mit FW4.0, das mache ich noch aus Gründen weil, nicht lachen ... wir noch ein paar WINXP-Maschinen auf Maschinenrechnern haben. Das hat sich aber auch bald erledigt ...
Dazu haben wir ein Firmennetzwerk mit ActiveDirectory, hier sind eigentlich alle User im Fimennetz drin.
Dann haben wir ein Maschinennetz, getrennt vom Firmennetz, aus Sicherheitstechnischen Gründen.
Für das Maschinennetz gibt es einen Fileserver, auf dem die Maschinen Daten abholen und ablegen können. Bisher konnte auch begrenzt User aus dem Firmennetzwerk auf diesen Fileserver Daten ablegen (für die Maschinen) oder abholen.
Nun muss aber dieser Fileserver komplett vom Firmennetzwerk getrennt werden, also lokal. Dann sind auf dem Fileserver lokale Benutzer angelegt, die haben dann Rechte auf bestimmte Verzeichisse.
Jetzt habe ich das Problem, das ich mit meinem normalen Firmennetzuser kein Zugriff mehr auf diesen Fileserver habe.
Dazu hätte ich gerne die Impersoantion genutzt, und zwar in dem Moment, wenn ich eine Datei schreiben muss, hätte ich den lokalen User mit seinem Passwort und der Daomainzugehörigkeit verwendet.
Aber leider ohne Erfol, bei "returnValue" ist der Rückgabewert immer "0", unten ein Codestück von dem Beispiel.
// Call LogonUser to obtain a handle to an access token.
bool returnValue = LogonUser(userName, domainName, Console.ReadLine(),
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
out safeTokenHandle);
Console.WriteLine("LogonUser called.");
if (false == returnValue) // ==> returnValue immer 0
{
int ret = Marshal.GetLastWin32Error();
Console.WriteLine("LogonUser failed with error code : {0}", ret);
throw new System.ComponentModel.Win32Exception(ret);
}
using (safeTokenHandle)
Ich hatte auch mal noch ein anderes Beispiel benutzt, das war etwas ausführlicher mit besserer Fehlermeldung, da kam die Message, das der User oder das Passwort falsch sei.
Hatte ich mehrfach überprüft, ging nicht.
Dann noch ein Hinweis: Ich hatte vesucht bei mir am Rechner den Bereich als Netzlaufwerk zu verbinden, mit den Userdaten des lokalen Users, das hat auch nicht funktioniert.
Fällt euch dazu noch etwas anderes ein, an was es scheitern könnte ??
Von dem AzureActiveDirectory oder der Tokenauthentifizierung war in den anderen Beispielen nichts zu sehen / lesen ....