我开发了一个必须由公司中的任何人使用的应用程序,但没有任何人有权访问数据库,所以我冒充用户有足够的权限访问数据库部分。但是,虽然我使用的用户名和密码具有足够的权限,即使我的个人帐户具有足够的权限,我也会收到身份验证错误
用户''登录失败。
有什么想法吗?下面你可以看到我的代码。
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();
}
}
}
答案 0 :(得分:0)
我想我发现了这个错误。我不确定,因为我没有测试它,因为我没有没有足够权限的用户。密码包含一个特殊字符,因此在定义时必须使用@符号。
如果不是修复,我会回来更新。