Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi [gelöst]Impersonate in TService (https://www.delphipraxis.net/176244-%5Bgeloest%5Dimpersonate-tservice.html)

Tonic1024 3. Sep 2013 08:03

AW: [gelöst]Impersonate in TService
 
Nachmal ein Nachtrag von mir. Ich hab noch Probleme gehabt mich auf eine Samba-Freigabe zu verbinden nachdem das Impersonate erfolgreich verlaufen ist.

Windows prüft über die API nur die Korrektheit des Passworts als Hashwert, merkt es sich aber nicht in Klartext. Darum ist es ihm nicht möglich das Passwort bei der Anmeldung am Samba-Dienst zu übergeben. Kein Bug, ein "Sicherheitsfeature", dass sich gottseidank sehr leicht umgehen lässt (Was bringt das dann? :roll:).

Will man sich mit seinem Benutzernamen an einem Server anmelden (das wird nicht nur für Samba zutreffen nehme ich an) muss man eine Konstante verwenden, die zumindest in D2k9, in der Windows.pas fehlt. So hab ich's dennoch hin bekommen:

Delphi-Quellcode:
function Impersonate(const aUser, aPass: string): Boolean;
var
  LogonType: Integer;
  LogonProvider: Integer;
  User: String;
  Pass: String;
  Token: THandle;
const
  LOGON32_LOGON_NETWORK_CLEARTEXT = 8; // Fehlt in der Windows.pas
begin
  LogonType := LOGON32_LOGON_NETWORK_CLEARTEXT; //LOGON32_LOGON_INTERACTIVE;
  LogonProvider := LOGON32_PROVIDER_DEFAULT;
  User := aUser;
  Pass := aPass;
  Result := LogonUser(PChar(User), nil {Domain}, PChar(Pass), LogonType, LogonProvider, Token);
  if Result then
    Result := ImpersonateLoggedOnUser(Token);
end;
Diese Vorgehensweise ist im MSDN dokumentiert. Dort hab ichs gefunden.

Gruß,

Toni

Uwe Raabe 3. Sep 2013 08:10

AW: [gelöst]Impersonate in TService
 
Zitat:

Zitat von Tonic1024 (Beitrag 1226955)
Kein Bug, ein "Sicherheitsfeature", dass sich gottseidank sehr leicht umgehen lässt (Was bringt das dann? :roll:).

Sicherheit kann man immer umgehen. Ob du nun deine Haustür offen stehen lässt (was bringt dann das Schloss?) oder Samstag Vormittag auf dem Stachus den Inhalt deines PasswordSafe laut vorsingst - jedes dieser Sicherheitsfeatures funktioniert nur, wenn man es richtig einsetzt.

Tonic1024 3. Sep 2013 08:40

AW: [gelöst]Impersonate in TService
 
Stimmt schon. Aber würde ich jetzt mit bösen Absichten hier sitzen, hätte ich den Abschnitt im MSDN auch gefunden. Darum leuchtet mir nicht ein in wie fern das die API oder Das Betriebsystem im Ganzen jetzt sicherer gemacht hat. Aber darüber ließe sich sicher vortrefflich Tagelang diskutieren...

[Edit]Der Grundgedanke dahinter wird wohl sein dass das Passwort nicht unnötigerweise in Klartext irgendwo im Speicher steht von wo es ein böser Mensch evtl auslesen kann. Die Frage ist aber doch ob ein Haus besser geschützt ist, um bei deiner Analogie zu bleiben, wenn von vielen vorhanden Türen nur noch der Haupteingang offen steht?[/Edit]

Toni

Uwe Raabe 3. Sep 2013 10:05

AW: [gelöst]Impersonate in TService
 
Zitat:

Zitat von Tonic1024 (Beitrag 1226968)
Der Grundgedanke dahinter wird wohl sein dass das Passwort nicht unnötigerweise in Klartext irgendwo im Speicher steht von wo es ein böser Mensch evtl auslesen kann.

Genau so ist es! Die API forciert diese Sicherheit nicht, bietet sie aber an. Natürlich muss das auch an allen Stellen verwendet werden. Es macht eben keinen Sinn die Haustür zu verriegeln wenn die Terrassentür offen bleibt. Insofern definiert immer das schwächste Glied den Grad der Sicherheit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz