4

IIS7/Win2008 で実行されている ASP.NET 4.0 Web アプリケーションでユーザーを認証するために LogonUserA 関数を使用しています。ユーザーが正しいユーザー名とパスワードを入力した場合はうまく機能しますが、ユーザー名またはパスワードが間違っている場合、LogonUserA は常に同じエラー コード 1008 を返し、「存在しないトークンを参照しようとしました」というあいまいなメッセージに変換されます。もちろん、LogonUserA が失敗した場合、有効なトークンはありません。このエラーはどういう意味ですか? 典型的なログイン エラーに対する特定のエラー コードはありますか? どうすれば入手できますか?

以下は私のコードです:

[DllImport("advapi32.dll", SetLastError = true)]
public static extern int LogonUserA(string lpszUserName,
    string lpszDomain,
    string lpszPassword,
    int dwLogonType,
    int dwLogonProvider,
    ref IntPtr phToken);

if (0 != LogonUserA(userName, domain, newPassword, Logon32LogonInteractive, Logon32ProviderDefault, ref token))
{
    // error is always 1008 if user name of password is incorrect.
    int error = Marshal.GetLastWin32Error();

    var exception = new Win32Exception(error);

    // What I got in error log for above Win32Exception is:
    // System.ComponentModel.Win32Exception (0x80004005): An attempt was made to reference a token that does not exist
}
4

0 に答える 0