AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi user verifizierung mit ADSOpenObject
Thema durchsuchen
Ansicht
Themen-Optionen

user verifizierung mit ADSOpenObject

Ein Thema von Klaus01 · begonnen am 5. Dez 2014 · letzter Beitrag vom 11. Dez 2014
Antwort Antwort
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#1

user verifizierung mit ADSOpenObject

  Alt 5. Dez 2014, 12:47
Hallo zusammen,

ich stehe vor einem Rätsel..

Mit dieser Routine frage ich den AD auf die User credentials ab.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Hr : HResult;
     outt :Pointer;
     Username,Password : WideString;
begin
  Username :='MeineKennung';
  PassWord:= 'MeinPasswort';
  coInitialize(nil);
  try
    Hr := ADSOpenObject('LDAP://meineDomain',pWideChar(Username),pWideChar(Password),ADS_SECURE_AUTHENTICATION,IID_IADs,Outt);
    if hr = S_OK then
      ShowMessage('Verified :o)')
    else
      ShowMessage(IntToStr(Hr));
  finally
    coUninitialize();
  end;
end;
Wird der Button das erstemal nach dem Start der Applikation gedrückt,
dann wird der User verifiziert.

Wird der Button dann ein zweitesmal gedrückt dann wird der User nicht verifiziert.
Das Ergebnis von ADSOpenObject schaut dann so aus:
Code:
[Content]
7995764
[OK]
Warum ist das so, muss ich nach dem ersten Aufruf noch etwas bereinigen bevor der zweite Aufruf wieder funktioniert?

Wenn die Applikation geschlossen und wieder geöffnet wird, funktioniert es wieder einmal.

Edit: Irgendwie scheint das ganze nicht zu funktionieren.
Verified wird wirkürlich angezeigt.
De User wird aich dann erfolgreich verifiziert, wenn ein falscher Name oder ein falsches Passwort übergeben wird.

Was ich machen möchte ist, einen User (eingeloggt auf einem nicht in der Domäne angemeldeten Rechner) verifizieren. Der AD ist von dem Rechner aber zu erreichen.
Ich möchte verhindern, dass die Nutzer der Applikation sich noch ein zusätzliches Passwort merken müssen. Geht das überhaupt?
[/Edit]


Grüße
Klaus
Klaus

Geändert von Klaus01 ( 5. Dez 2014 um 18:01 Uhr)
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: user verifizierung mit ADSOpenObject

  Alt 9. Dez 2014, 10:28
Guten Morgen,

mit der Verifizierung bin ich nch nicht viel weiter gekommen.
Ich bin jetzt auf die Nutzung der SSPI API umgestiegen.
Im Netz habe ich eine SSPIValidatePassword.pas gefunden.
Diese habe ich auf Unicode umgestellt und hießt nun bei mir SSPIValidateUser.
Ein kleines Bespeilprogramm ist im Anhang zu finden.

SSPILogonUser rufe ich so auf.

Delphi-Quellcode:
procedure TForm1.verifyButtonClick(Sender: TObject);
begin
  if SSPLogonUser(domainEdit.Text,usernameEdit.Text,passwordEdit.Text) then
    messageDlg('User verified',mtInformation,[mbOk],0)
  else
    messageDlg('User not verified',mtError,[mbOk],0);
end;

Wenn usernameEdit.Text und passwordEdit.Text leer sind wird die Meldung "User verifiziert" ausgegeben.
Wird domainEdit die Domäne eingetragen und werden in usernameEdit und passwordEdit die Daten eines gültigen
Users eingetragen wird "User not verified" ausgegeben.
Auch wenn die Userdaten ungültig sind wird "verständlicherweise" "User not verified" ausgegeben.

Die Routine GenServerContext beendet sich dann immer mit SEC_E_LOGON_DENIED.

Ich habe nicht die leiseste Ahnung was ich noch ändern könnte um das Problem zu beheben?

[Edit] Kann vielleicht jemand die Unit mal bei sich testen?

[Edit2] Wenn ich gegen meine lokalen Account teste, wird der User verifiziert.
Es ist dabei auch gleichgültig was ich als Domäne eingetragen habe..

Kann ich von einem "nicht Domänenrechner" keine Domänenuser verifizieren?

Grüße
Klaus
Angehängte Dateien
Dateityp: pas SSPIValidateUser.pas (27,9 KB, 17x aufgerufen)
Dateityp: zip verifyUser.zip (401,0 KB, 17x aufgerufen)
Klaus

Geändert von Klaus01 ( 9. Dez 2014 um 15:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#3

AW: user verifizierung mit ADSOpenObject

  Alt 9. Dez 2014, 10:42
Ich hab da mal eine grundsätzliche Frage: Ist das nicht so, daß man bei LDAP den gegenwärtig angemeldeten User verwendet? Wozu also den User nach Username und Passwort fragen?

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: user verifizierung mit ADSOpenObject

  Alt 9. Dez 2014, 10:57
Ich hab da mal eine grundsätzliche Frage: Ist das nicht so, daß man bei LDAP den gegenwärtig angemeldeten User verwendet? Wozu also den User nach Username und Passwort fragen?
Den angemeldeten User will ich ja nicht verifizieren/überprüfen.
Das wurde ja schon bei der Anmeldung in der Domäne gemacht.

Ich wollte die Abfrage dazu nutzen - User gegen den AD zu verifizieren die
die Applikation auf Rechnern benutzen die nicht in der Domäne angemeldet sind.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: user verifizierung mit ADSOpenObject

  Alt 11. Dez 2014, 12:33
.. niemand eine Idee?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 Uhr.
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