【问题标题】:IIS and SQL Server ASP.Net C# Entity Framework Windows authenticationIIS 和 SQL Server ASP.Net C# Entity Framework Windows 身份验证
【发布时间】:2015-06-10 09:31:47
【问题描述】:

我目前正在开发一个使用 Windows 身份验证的 ASP.Net / C# / Entity Framework 项目。

我希望我的用户使用自己的 Active Directory 帐户同时访问 IIS Server 和 SQL Server,从而允许管理员查看谁连接到数据库。

但我有一个问题:在连接数据库时,程序使用了在 IIS 服务器中设置的应用程序池的帐户,而不是他的用户帐户。

这是我的web.config 文件:

<configuration>
    <system.web>
        <compilation debug="true" strict="false" explicit="true" targetFramework="4.5.2"/>
        <httpRuntime targetFramework="4.5.2"/>
        <customErrors mode="Off"/>
        <authentication mode="Windows"/>
        <identity impersonate="true"/>
    </system.web>
    <connectionStrings>
        <add name="BOMBuilderEntities"
         connectionString="metadata=
         res://*/Model.BOMBuilderModel.csdl|
         res://*/Model.BOMBuilderModel.ssdl|
         res://*/Model.BOMBuilderModel.msl;
         provider=System.Data.SqlClient;
         provider connection string=
             'data source=FRSDSQ01;
              initial catalog=BOMBuilder;
              integrated security=SSPI;
              MultipleActiveResultSets=True;
              App=EntityFramework'" 
              providerName="System.Data.EntityClient"/>
    </connectionStrings>
    <system.webServer>
        <defaultDocument>
            <files>
                <add value="multipages.aspx" />
            </files>
        </defaultDocument>
    </system.webServer>
</configuration>

另外,我尝试修改此ApplicationPoolIdentity 设置以查看它是否是用于 SQL Server 身份验证的此连接,并且确实如此。如果我设置了域帐户,该帐户将列在活动监视器中。那么如何设置此设置以使用登录我的 asp.net 应用程序的用户帐户?

编辑 1:我添加了模拟设置。

【问题讨论】:

    标签: asp.net entity-framework iis sql-server-2008-r2 windows-authentication


    【解决方案1】:

    这可能是双跳的情况。当 IIS 服务器和 SQL Server 位于不同的机器上时,这是一种安全措施,除非有适当的委派,否则拒绝继续向链下的服务器提供凭据。

    引用第二篇文章:

    显然,如果您将网络设置为使用 Kerberos 并将有问题的 Web 服务器设置为受信任的委派,那么您可以绕过该问题并使用适当的委派。

    可以在以下文章中找到更多信息: http://blogs.technet.com/b/askds/archive/2008/06/13/understanding-kerberos-double-hop.aspx http://blogs.msdn.com/b/knowledgecast/archive/2007/01/31/the-double-hop-problem.aspx

    【讨论】:

      【解决方案2】:

      万一其他人遇到这个问题:
      - 使用 Basic Authentication + Asp.Net Impersonation(检查 Web.config 文件和 IIS 服务器配置是否已启用),一切正常。在应用程序加载期间要求用户连接到 IIS 服务器。然后使用用户登录创建与 SQL Server 的 Entity Framework 连接,这样我们就可以正确监控谁连接了。
      - 使用 Windows 身份验证,我仍然遇到匿名登录无法登录 SQL 服务器的问题。我不明白为什么它不使用用户登录...如果有人有想法,我会需要它!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多