使用Windows身份验证进行数据库连接 - 使用哪个用户?

时间:2014-08-20 18:28:51

标签: asp.net-web-api windows-authentication iis-8

我是ASP.NET Web API应用程序,当前在连接到数据库时使用SQL身份验证。我想将连接更改为使用Windows身份验证。在这样做时,如何指定Web应用程序以及数据库访问权限使用的用户?我正在使用IIS v8.5.9600.16384

2 个答案:

答案 0 :(得分:1)

我不能说我同意使用集成的应用程序数据库访问,因为它使安全性更具挑战性以及与始终不得不处理不同私有的可能性相关的编码问题对于每个用户,但显然我不了解您的所有要求。

所以回答你的问题:

  • 如果您的连接字符串设置为Intergated Security,则执行线程的标识用于提供凭据。

  • 默认情况下,ASP.NET辅助进程的标识将是与标识绑定的网络凭据。

  • 您可以像这样查看凭据:

    IPrincipal threadPrincipal = Thread.CurrentPrincipal;
    Console.WriteLine("Name: {0}\nIsAuthenticated: {1}" +
        "\nAuthenticationType: {2}", 
        threadPrincipal.Identity.Name, 
        threadPrincipal.Identity.IsAuthenticated,
        threadPrincipal.Identity.AuthenticationType);
    

您可以通过web.config中的impersonation或以编程方式设置身份。

的Web.config:

<identity impersonate="true" userName="accountname" password="password" />

代码:(使用HttpContext用户的信用卡)这假设IIS也使用了集成

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = 
((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();

//User is the HttpContext.User
//Insert your code that runs under the security context of the authenticating user 

这里。

impersonationContext.Undo();  

答案 1 :(得分:0)

您必须关闭匿名身份验证并通过IIS管理器启用Windows身份验证。