J'utilise le LogonUser win32 api:LogonUser et la délégation
token = LogonUser(...)
WindowsIdentity newId = new WindowsIdentity(token);
WindowsImpersonationContext impersonatedUser = newId.Impersonate();
Cependant lorsque vous appelez un service WCF après cela, je ne suis pas en mesure d'utiliser l'identité personnifié. Je pense que c'est parce que impersonatedUser.ImpersonationLevel est égal à l'emprunt d'identité.
Est-ce la raison? Est-ce qu'un niveau de ImpersonationLevel.Identification ce dont j'ai besoin? Comment obtenir un tel niveau?
Remarque pour ceux qui sont intéressés par la création d'instances de WindowsIdentity: 'WindowsIdentity.Dispose()' ferme son handle de jeton, ce qui signifie que vous n'avez pas besoin d'appeler 'CloseHandle (duplicateTokenHandle)' si vous appelez 'Dispose'. – Joh
@Joh - Je ne pense pas que ce soit correct. 'Dispose' * does * appelle' CloseHandle() ', mais pas sur le handle passé dans le constructeur. Le constructeur duplique la poignée fournie. c'est le double qui est fermé dans 'Dispose'. – Olly