Accesso utente La funzione utente funziona con le vecchie password?
-
06-07-2019 - |
Domanda
Sto usando la funzione LogonUser ( http: / /msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx ) per autenticare gli utenti. Tuttavia, ho scoperto che se un utente cambia la propria password (ovvero da Password1 a Password2), entrambe le password funzioneranno. Tuttavia, mi piacerebbe che solo la password corrente possa essere utilizzata. C'è qualcosa che devo impostare per fare in modo che funzioni così?
Sto usando il seguente frammento di codice:
LogonUser(nt_id, NULL, nt_password, LOGON32_LOGON_NETWORK, 3, &hToken );
nt_id è disponibile nel formato USER@USERDOMAIN.SOMETHING.COM
e ne ho 3 al posto di LOGON32_PROVIDER_WINNT50
, perché visualizzerei un errore di compilazione che dice identificatore non rivendicato per LOGON32_PROVIDER_WINNT50
(questo potrebbe essere un sintomo?) ma lo so è definito come 3.
Grazie, -Pete
Soluzione
L'errore in fase di compilazione è probabilmente presente perché non è stato
#define _WIN32_WINNT 0x0500
prima di includere windows.h o aggiunto come impostazione in fase di compilazione (-D_WIN32_WINNT = 0x0500).
Perché LogonUser dovrebbe funzionare sia con la nuova che con la vecchia password è al di là di me. Ma poiché ciò che si desidera è autenticare gli utenti (anziché impersonarli) in base a MSDN, è più appropriato utilizzare API SSPI ( ecco il modo consigliato).
Altri suggerimenti
Questa è un'impostazione di rete. Per impostazione predefinita, le password di Windows rimangono valide per un'ora dopo la modifica. L'amministratore di rete può modificarlo se necessario. (Si noti che ciò non influisce sul login interattivo, ma influisce su tutti i metodi programmatici.)