我正在使用Linq从c#中的sql连接到WCF服务中的sql server。我正在使用Windows身份验证连接到数据库。我想使用其他用户窗口身份验证连接到Linq到sql的SQL Server。他们是这样做的一种方式。
答案 0 :(得分:1)
从评论中我假设您希望在开发过程中短时间内连接到生产数据库,直到您的开发帐户可以访问数据库。
首先,不要这样做。出于几个原因,这是个坏主意。对生产数据库进行操作很糟糕。因此,一旦您获得适当的访问权限,就会编写将被删除的代码。
如果您只想测试服务,只需使用已有的Windows帐户凭据作为服务帐户。
作为最后的手段,您可以使用WindowsIdentity.Impersonate模拟特定帐户。该函数的示例显示了如何使用P / Invoke和LogonUser Win32 API对用户进行身份验证。完成模拟后,您必须小心拨打Undo
,否则您的代码将继续以旧身份运行。
如果在域和中正确实施了Kerberos,则您的帐户有权模拟其他帐户,您可以使用仅需要用户主要名称的WindowsIdentity constructor。这比在配置文件中存储用户名和密码要安全得多,即使你加密它们也是如此。
更好的想法是将您需要的数据(全部或仅仅是样本)克隆到本地数据库,并在开发期间使用它。通过这种方式,您可以自由地进行实验,而不会影响生产环境(或者因任何不当事件而受到指责)。