Newsgroup: it.comp.lang.visual-basic
Titolo: autenticazione con password di rete

Salve a tutti....
vado subito al sodo....
ho bisogno di qualche documento o magari meglio ancora qualche esempio
che mi spieghi il modo di riconoscere se una combinazione Nome Utente +
Password sia giusta....ovviamente sto parlando a livello di rete...
so che esiste un modo...con le API....ma io non sono esperto di sistemi
windows....
mi potete dare qualche aiuto??
grazie a tutti

 ha scritto nel messaggio news:1169125863.1...@q2g2000cwa.googlegroups.com...

Non ti basta sapere se quell'utente esiste o no?
cioe' solo in base allo username?
NetUserGetInfo
The NetUserGetInfo function retrieves information about a particular user account on a server.
No special group membership is required to successfully execute NetUserGetInfo. This is a change from LAN Manager, which required 
membership in the Administrators or Account Operators local group to call this function at information levels above 0 (except for 
the user's own account, which could use level 11).
NET_API_STATUS NetUserGetInfo(
  LPWSTR servername,
  LPWSTR username,
  DWORD level,
  LPBYTE *bufptr
);

Quest'API mi restituisce anche la password del nome utente????
se si è adhoc per me...ma non credo che sia possibile reperire la
password di un particolare nome utente....
a me basta sapere che la password inserita da un utente corrisponda con
quella registrata sulla rete per quell'utente....
grazie tante


Puoi usare l'API LogonUser.
http://www.devx.com/vb2themax/Tip/19078
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 ha scritto nel messaggio news:1169128721....@v45g2000cwv.googlegroups.com...
Quest'API mi restituisce anche la password del nome utente????
se si è adhoc per me...ma non credo che sia possibile reperire la
password di un particolare nome utente....
Esatto, bravo!
Non e' possibile reperire la password di un utente, altrimenti
la sicurezza andrebbe a farsi benedire...


L'ho provato su 2000 in locale e non sono riuscito a farlo
funzionare....credo per colpa mia...
ma poi tanto balena dice che funziona solo su nt e 2000...invece a me
dovrebbe funzionare anche su xp...nt non è necessario

 la sicurezza andrebbe a farsi benedire...
ok...ma controllare che la password inserita in una form corrisponda
con quella di rete è possibile....ma come??

 la sicurezza andrebbe a farsi benedire...
ok...ma controllare che la password inserita in una form corrisponda


ops...forse ho cliccato troppe volte....
:-)

 ha scritto nel messaggio news:1169130317.5...@11g2000cwr.googlegroups.com...


LogonUser c'e' apposta

salclem2 ha scritto:
 > LogonUser c'e' apposta
eh...ma su xp non funziona....
sono proprio sfortunato!!!

linus_torvalds ha scritto:

torno indietro su quello che ho detto....su xp funziona....su 200 non
riesco....cmq grazie tante a tuttiiiiii

 ha scritto nel messaggio news:1169130986.9...@q2g2000cwa.googlegroups.com...

Non e' che c'hai la home edition per caso?
Funziona nella pro edition

 Funziona nella pro edition
no ho la pro e funziona....ma stranamente sul 2000 non funziona...ma
perchè???


Se funziona con NT/2000 allora funziona (in teoria) anche su XP che è un SO
NT-based.
Io ho provato l'esempio sul mio XP e però in effetti funziona fintantoché
controllo un username esistente.
Se gli passo un username inventato, allora mi dà per buona *qualunque password*.
Credo che farebbe uguale sotto 2K.
Allora proviamo a migliorare la routine del Balena controllando innanzitutto il
nome utente:
Private Declare Function NetUserGetInfo Lib "netapi32" _
                              (ByVal servername As String, _
                              ByVal UserName As String, _
                              ByVal level As Long, _
                              bufptr As Long) As Long
Const NERR_Success = 0
Private Function CheckUserName(ByVal UserName As String) As Boolean
    If (NetUserGetInfo("", StrConv(UserName, vbUnicode), 0, 0&) = NERR_Success)
Then
        CheckUserName = True
    End If
End Function
Private Function CheckWindowsUser(ByVal UserName As String, _
    ByVal Password As String, Optional ByVal Domain As String) As Boolean
    Dim hToken As Long, ret As Long
    ' provide a default for the Domain name
    If Len(Domain) = 0 Then
        Domain = vbNullString
    End If
    ' first, check user name
    If CheckUserName(UserName) Then
        ' check the username/password pair
        ' using LOGON32_LOGON_NETWORK delivers the best performance
        ret = LogonUser(UserName, Domain, Password, LOGON32_LOGON_NETWORK, _
            LOGON32_PROVIDER_WINNT50, hToken)
    End If
    ' a non-zero value means success
    If ret Then
        CheckWindowsUser = True
        CloseHandle hToken
    End If
End Function
Può darsi che non sia il metodo ottimale, ma questa sul mio XP funziona *sempre
& comunque*.


non è così...almeno per me....a me su xp funziona benissimo....cioè
se metto uno username inventato non mi autentica...idem per le
password....mentre su win2000 non mi autentica mai....
ho visto la dll che usa win2000 e quella di xp e sono differenti...per
dimensione e data......
ma è impossibile derigestrare la dll su win2000 e registrare quella di
winxp....
che stranezze....per questo sono molto affezzionato a Java!!!!
grazie tante...e se avete qualche altra idea suggeritemela.....
GRAZIE ANCORA!!!!