Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用其他用户Windows凭据从c#连接到SQL server_C#_Sql Server_Wcf_Authentication_Linq To Sql - Fatal编程技术网

使用其他用户Windows凭据从c#连接到SQL server

使用其他用户Windows凭据从c#连接到SQL server,c#,sql-server,wcf,authentication,linq-to-sql,C#,Sql Server,Wcf,Authentication,Linq To Sql,我正在使用c#中的Linq to sql连接到WCF服务中的sql server。我正在使用windows身份验证连接到数据库。我想使用其他用户windows身份验证从Linq连接到sql server。是他们的一种方法。从评论中,我假设您希望在开发期间短时间连接到生产数据库,直到您的开发帐户访问该数据库 首先,不要这样做。这是个坏主意,有几个原因。对生产数据库进行操作是不好的,编写代码也是不好的,一旦获得正确的访问权限,代码将被删除 如果您只想测试您的服务,只需使用您已有的Windows帐户凭

我正在使用c#中的Linq to sql连接到WCF服务中的sql server。我正在使用windows身份验证连接到数据库。我想使用其他用户windows身份验证从Linq连接到sql server。是他们的一种方法。

从评论中,我假设您希望在开发期间短时间连接到生产数据库,直到您的开发帐户访问该数据库

首先,不要这样做。这是个坏主意,有几个原因。对生产数据库进行操作是不好的,编写代码也是不好的,一旦获得正确的访问权限,代码将被删除

如果您只想测试您的服务,只需使用您已有的Windows帐户凭据作为服务帐户

作为最后手段,您可以使用模拟特定帐户。该函数的示例显示了如何使用P/Invoke和LogonUser Win32 API对用户进行身份验证。完成模拟后,您必须小心调用
Undo
,否则代码将使用旧标识继续运行

如果域中正确实现了Kerberos,并且您的帐户有权模拟其他帐户,则可以使用只需要用户主体名称的。这比将用户名和密码存储在配置文件中要安全得多,即使您对它们进行了加密


更好的办法是将您需要的数据(全部或只是一个样本)克隆到本地数据库,并在开发过程中使用。这样,您就可以在不影响生产环境的情况下自由地进行试验(或因任何不愉快的事情而受到指责)。

您为什么要这样做?你在努力克服另一个问题吗?只需使用具有连接数据库服务器权限的帐户运行服务,或将服务的帐户添加到数据库。这就是使用Windows凭据的全部意义,您不需要硬编码用户名和密码。更方便、更易管理和更安全。我没有使用Windows凭据访问数据库的权限。我有其他用户的windows凭据来访问数据库。对于其他用户凭据,我想临时访问c#中的数据库,直到iget访问我的凭据。那么,为什么不使用此帐户运行服务?如果您想在开发/调试期间使用数据库,我建议您克隆它(或者至少克隆您需要的数据)并使用本地副本。针对生产数据库进行开发是个坏主意。可能是