用户不工作的C#ASPX Identity Impersonation / ConnectionString

时间:2012-01-05 04:28:12

标签: c# asp.net sql connection-string identity

我有一个存储在一台服务器上的C#ASPX网站,它在同一个域中调用来自SQL服务器的大量结果。在我的SQL数据库中,有两个用户具有相同的权限:

  1. 管理员
  2. NTADMIN \我
  3. 我的网站存储在本地服务器上的IIS目录中。在我的web.config文件中,我有身份模拟和连接字符串,如下所示:

    <identity impersonate="true" userName="admin" password="admin" />
    
    <add name="ConnectionString" connectionString="Data Source='server';Initial Catalog='database';Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
    

    为什么当我对“NTADMIN \ me”凭据进行硬编码而不对SQL数据库的管理员“凭据”进行硬编码时,这是否有用? “admin”用户是否也需要拥有域名凭据?如果我可以使用它们登录数据库,我认为这不是必要的。

    我收到的错误如下(uid + pwd正常登录数据库):

      

    无法从配置文件中指定的凭据创建Windows用户令牌。操作系统登录失败时出错:未知用户名或密码错误。

2 个答案:

答案 0 :(得分:2)

在这种情况下,您无法模拟SQL用户。这里有两种用户类型,一个是sql用户,一个是windows用户。身份模拟标记只适用于Windows用户帐户。

Windows会尝试将此用户记录下来,但它对此一无所知,因此密码失败。

答案 1 :(得分:1)

问题在于权限。试一试。

使用相同的用户名和密码在数据库服务器和Web服务器上添加本地Windows用户帐户,然后将用户作为Windows登录名添加到sql server并分配登录相应的权限

make connection string Integrated Security = true。

添加到web.config。启用匿名访问,并禁用IIS安全设置下的所有其他安全选项。