Search code examples
c#iiswindows-authenticationiis-express

Hosting a mvc app via IIS with windows authentication, but I get IIS APPPOOL\ APP I need the windows user that connects (works with IIS express)


I saw similar questions like this on here but I simply can't find a good solution.

My problem: I have an app that need to retrieve data from a connection string, and information that is retrieved depends on the authenticated windows user. When I run this in dev environment with IIS Express I get my logged in user.

However when I host it via IIS Local i get ( IIS APPPOOL\ ) as the user. I need this to be the windows user.

Even tho I get the login the application still outputs APPPOOL when I check this in my views

Anyone with a good solution to this?

I tried:

  @System.Web.HttpContext.Current.User.Identity.Name
  @System.Security.Principal.WindowsIdentity.GetCurrent().Name
  @HttpContext.Current.Request.LogonUserIdentity.Name

<system.web>
<authentication mode="Windows" />
      <authorization>
      <allow users="*" />
      <deny users="?" />
    </authorization>
    <identity impersonate="true" />
    <trace enabled="true" />
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>

Solution

  • It sounds like your application are always imepersonate as application pool identity.

    I can get the correct windows identity via

    System.Web.HttpContext.Current.User.Identity.Name
    
     HttpContext.Current.Request.LogonUserIdentity.Name
    
    User.Identity.Name;
    

    First of all, please ensure your authentication looks like this. Please disable impersonate and anonymous at the same time.

    <location path="mysite">
            <system.webServer>
                <security>
                    <authentication>
                        <windowsAuthentication enabled="true" />
                        <anonymousAuthentication enabled="false" />
                    </authentication>
                </security>
            </system.webServer>
        </location>
    

    Secondly,please promise your windows authentication are not executed with app pool credential enter image description here

    Finally, you should get the correct credential. enter image description here