Unable to get windows authentication to work through local IIS

前端 未结 9 1739
梦如初夏
梦如初夏 2020-12-07 09:37

So I\'ve created a new ASP.NET MVC project using the intranet template. web.config contains the appropriate values (e.g.

相关标签:
9条回答
  • 2020-12-07 10:00

    I recently spent three days trying to solve the same problem and it drove me crazy. It was happening on a load-balanced setup where one of the servers was authenticating correctly while the other failed. Investigating the problem - and eventually solving it - it turned out to be unrelated to the load-balanced environment, it could happen with any server when authenticating using Windows Authentication and the server is called with a name other than the one recognized by Active Directory

    1. Enable Kerberos logging

    To correctly diagnose your issue, you will need to enable Kerberos logging on the machine hosting your IIS site. To do so, add the following registry entry:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

    Add Registry Value LogLevel with ValueType REG_DWORD and value 0x1.

    Once you turn on logging, then you try to authenticate, you will get errors logged in your Windows Application Log. You can ignore the error KDC_ERR_PREAUTH_REQUIRED (this is just part of the handshake) but if you get the error KDC_ERR_C_PRINCIPAL_UNKNOWN that means your AD controller doesn't recognize your server therefore you need to follow the steps below.

    2. KDC_ERR_C_PRINCIPAL_UNKNOWN

    if you're getting KDC_ERR_C_PRINCIPAL_UNKNOWN, that means the name "mysite.mydomain.com" is different from how the AD recognizes your machine so it's unable to provide a valid kerberos ticket. In that case, you need to register a Service Principal Name (SPN) for " 'www.mysite.mydomain" on the AD.

    On your AD controller, run this command - you will need Domain Admin privilege:

    Setspn -A HTTP/mysite.mydomain YOUR_MACHINE_HOSTNAME
    

    3. Use a custom identity for your Application pool

    Finally, make you Application pool use a custom account that belongs to the Active Directory instead of using NetworkService. This can be done in advanced settings of your application pool.

    and .. voila.


    Notes: The problem could (unlikely) be related to having multiple SPNs registered to the same machine, in that case you will need to run a command to remove duplicate SPNs, but I doubt this is the case. Also try adding a different binding to your site (that doesn't use a custom name) something like htttp://localhost:custom_port_number and see if authentication works. If it works, this is an extra indication that you're suffering from the same problem I had.

    0 讨论(0)
  • 2020-12-07 10:02

    You should check to see if you have Windows Authentication installed/enabled. That may sound weird but in IIS 7 you have to install and enable the various authentication methods. Check out http://support.microsoft.com/kb/942043/ for more info, see quoted section below.

    Cause 1
    The Web application is configured to use Integrated Windows authentication. However, the Windows Authentication feature is not turned on. Or, the Integrated Windows authentication native module section of the ApplicationHost.config file or of the Web.config file is not valid. To resolve this problem, see Resolution 1.

    Original
    Usually when you try to view an asp.net web page hosted on IIS and receive a login prompt it doesn't mean your credentials weren't received or that you aren't authenticated. What it means is that the account that your website is running under doesn't have the right permissions to work with the files.

    In IIS 6 and 7 you can easily change the user account that your app pool runs under. Try changing the app pool identity to an account with more access specifically designed for this. Or if you want to stick with the existing account (IUSR_? Network Service?) you can grant that account more permissions on the directory where your website is stored.

    This article is specifically targeted at BizTalk but has almost no references to it and focuses on troubleshooting permissions issues with IIS and app pools: http://msdn.microsoft.com/en-us/library/aa954062.aspx

    0 讨论(0)
  • 2020-12-07 10:10

    I got this error when I enabled Windows authentication. I wanted to authorize the user based on Windows login and there is no login page in my application.

    I got the error fixed by adding the below in my Web config file. Under the tag system.web, I changed authentication mode="None" to authentication mode="Forms".

    Under the tag appSettings, I added add key="owin:AutomaticAppStartup" value="false"

    0 讨论(0)
提交回复
热议问题