How to use LogonUser properly to impersonate domain user from workgroup client

前端 未结 6 1887
走了就别回头了
走了就别回头了 2020-12-02 09:44

ASP.NET: Impersonate against a domain on VMWare

This question is what I am asking, but the answer does not provide details on how the _token is derived. It seems to

6条回答
  •  失恋的感觉
    2020-12-02 10:44

    It's better to use a SecureString:

    var password = new SecureString();
    var phPassword phPassword = Marshal.SecureStringToGlobalAllocUnicode(password);
    IntPtr phUserToken;
    LogonUser(username, domain, phPassword, LOGON32_LOGON_INTERACTIVE,  LOGON32_PROVIDER_DEFAULT, out phUserToken);
    

    And:

    Marshal.ZeroFreeGlobalAllocUnicode(phPassword);
    password.Dispose();
    

    Function definition:

    private static extern bool LogonUser(
      string pszUserName,
      string pszDomain,
      IntPtr pszPassword,
      int dwLogonType,
      int dwLogonProvider,
      out IntPtr phToken);
    

提交回复
热议问题