![]() |
user verifizierung mit ADSOpenObject
Hallo zusammen,
ich stehe vor einem Rätsel.. Mit dieser Routine frage ich den AD auf die User credentials ab.
Delphi-Quellcode:
Wird der Button das erstemal nach dem Start der Applikation gedrückt,
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; 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:
Warum ist das so, muss ich nach dem ersten Aufruf noch etwas bereinigen bevor der zweite Aufruf wieder funktioniert?
[Content]
7995764 [OK] 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 |
AW: user verifizierung mit ADSOpenObject
Liste der Anhänge anzeigen (Anzahl: 2)
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 |
AW: user verifizierung mit ADSOpenObject
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 |
AW: user verifizierung mit ADSOpenObject
Zitat:
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 |
AW: user verifizierung mit ADSOpenObject
.. niemand eine Idee?
Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz