Newsgroup: it.comp.programmare.win32
Titolo: LogonUser() funziona anche per server NOVELL ?

Ciao a tutti,
mi ritrovo a dover connettermi ad un server NT o NOVELL (a seconda
delle esigenze) con un UserName diverso da quello inserito al momento
dell'avvio della macchina NT locale. Spulciando tra le API ho trovato
questa LogonUser() che sembra fare al caso mio... sapete se va bene
anche per un server NOVELL ?
PS. comunque non sono riuscito a farla funzionare ancora, la
documentazione e' abbastanza scarna sulle apllicazioni che puo' avere
tale funzione, inoltr io l'ho vista usare insieme alla funzione :
ImpersonateLoggedOnUser() 
E' possibile che io stia sbagliando a voler usare LogonUser() da sola
e dovrei invece usare anche questa Impersonate... abbinata ?
Aiutatemi per favore...
Grazie
//-------------------------------------------------
// Gianluigi Rubino 
cman...@altavista.net
// C++ Maniacs : 
http://welcome.to/c++maniacs
//-------------------------------------------------


Se ho ben capito quello che vuoi fare, e' di conneterti ad
"unita'" esportate da un server Novell dopo che un utente si
e' loggato presso un dominio NT.
Le "unita'" di cui sopra sono, immagino, dischi, stampanti, ecc.
In questo caso penso che API come WNetAddConnection3 siano
piu' adatte allo scopo.
La API LogonUser() server per "creare" un Token (non primario,
devi usare DuplicateTokenEx per il primario). Il token e'
un "attibuto" che il processo WinLongon.exe si fa dare
da LSASS.EXE dop che ti ha autenticato, e ch poi WinLogon
assegna ai processi generati dalla tua shell di default (explorer
per intenderci). Il token del process e' l'"attributo"
con il quele viene fatto il controllo di accessi sugli oggetti
dotati di attributi di sucurezza, come files, thread, eventi, ecc.
Ovviamente, certi processi (ad esempio i servizi di sistema)
hanno la necessita' di eseguire certi thread (o certi processi)
"come se" fossero altri utenti, e per fare questo hanno bisogno
di un token da assegnare ad un thread, oppure di un token
primario da assegnare ad un nuovo processo.
Sent via Deja.com 
http://www.deja.com/
Before you buy.

[..]
OK, avevo capito il significato del TOKEN, ma ho trovato esempi
nell'SDK (VC 5.0 - arretrato no ? ;) in cui veniva usato in
combinazione con le API : ImpersonateLoggedOnUser() e
CreateProcessAsUser()
cosa che mi ha spiazzato perche' da quello che ho letto nella doc. non
viene fatto riferimento esplicito ad una combinazione tra
Impersonate...() e LogonUser().
Per favore mi dareste 2 chiarimenti su Impersonate...() ?
3) Per la faccenda del login su NOVELL sto leggendo le FAQ ufficiali e
gli esempi e sembra che ci voglia proprio lo SDK specifico rilasciato
dalla compagnia. Quindi la faccenda si complica (io avevo sperato in
un supporto delle API Win32, seppur minimo ...)


 Per favore mi dareste 2 chiarimenti su Impersonate...() ?
Non c'e' molto da chiarire .....
Un token secondario lo puoi "assegnare" al tuo processo
o a uno dei thread del tuo processo, cosicche' puoi
temporaneamente cambiare identita'.
Crea una funzioncina che chiama
OpenThreadToken(), QueryTokenInformation(), LookupAccountSid()
per ottenere informazioni come il tuo sid, il tuo UserName,
il tuo dominio di autenticazione.
Un token Primario, lo puoi anche assegnare ad un processo
nuovo di zecca che stai proprio tu or ora creando.
Ovviamente per creare un token primario devi avere degli
adeguati permessi.
BTW, la docaumentazione sui tokens non e' cambiata molto da NT 3.1
