SQL Server:在C#中模拟用户时出错

时间:2016-06-18 07:44:02

标签: c# sql-server exception impersonation

我开发了一个必须由公司中的任何人使用的应用程序,但没有任何人有权访问数据库,所以我冒充用户有足够的权限访问数据库部分。但是,虽然我使用的用户名和密码具有足够的权限,即使我的个人帐户具有足够的权限,我也会收到身份验证错误

  

用户''登录失败。

有什么想法吗?下面你可以看到我的代码。

PS1:对于假冒,我使用Matt Johnson's library提到的here

PS2:在我正在使用Integrated Security=false的连接字符串中。当我使用Integrated Security=SSPI时,错误消息是

  

登录失败。登录来自不受信任的域,不能与Windows身份验证一起使用。

代码:

public static void test(string domain, string username, string password, LogonType type)
{
    string connectionString = @"Data Source=testsqlserver.company.com;Initial Catalog=TABLENAME;Integrated Security=false;Connection Timeout=240";

    using (Impersonation.LogonUser(domain, username, password, type))
    {
        using (SqlConnection sqlConnection = new SqlConnection(connectionString))
        {
            sqlConnection.Open();

            try
            {
                // Still not reached this point
            }
            catch (Exception exception)
            {
                string exceptionMessage = "Exception message:\n" + exception.Message.ToString() + "\nEnd of the exception message.";
                Console.WriteLine(exceptionMessage);
            }

            sqlConnection.Close();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我想我发现了这个错误。我不确定,因为我没有测试它,因为我没有没有足够权限的用户。密码包含一个特殊字符,因此在定义时必须使用@符号。

如果不是修复,我会回来更新。