簡體   English   中英

Windows 身份驗證不適用於具有 ASP.NET 核心的 IIS

[英]Windows Authentication Does not work on IIS with ASP.NET Core

我正在嘗試對 ASP.NET 核心 MVC 應用程序使用 Windows 身份驗證。 以下是問題陳述。

當應用程序使用 IISExpress 運行時,它運行沒有任何問題。 但是當它被配置為 IIS 中的站點並運行時,它會提示輸入憑據,甚至在輸入更正的憑據后,應用程序也會顯示狀態為 401 的錯誤頁面。

詳細信息:應用程序是一個普通樣板 ASP.NET 核心 MVC 應用程序,啟用了 Windows 身份驗證。 我正在嘗試尋找在實際應用中使用的解決方案。

架構:.NET Core 2.2

環境:Visual Studio 2019 on Windows Server 2019機器,IIS 10.0

以下是我在樣板應用程序中所做的更改。 更改 Startup.cs 文件以使用身份驗證。

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.Configure<IISOptions>(options =>
        {
            options.AutomaticAuthentication = true;
        });

        services.AddAuthentication(IISDefaults.AuthenticationScheme);

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

在 Startup.cs 文件的Configure方法中添加了以下代碼行。

app.UseAuthentication();

在項目屬性中為調試啟用 windows 身份驗證,並配置 IIS 托管和 OutProcess 托管 model。

[Web 項目屬性的屏幕截圖]

將應用程序配置為 IIS 中的網站,並啟用了 Windows 身份驗證。

[IIS的屏幕截圖]

我嘗試過的事情。

  1. 嘗試在 web.config 文件中添加forwardWindowsAuthToken="true"
  2. 嘗試在瀏覽器的 Inte.net 選項中的 Local Intr.net 站點中添加站點。 [本地 Intranet 站點的屏幕截圖]
  3. 嘗試在 WebHostBuilder 的 Program.cs 中使用UseIIS()

我嘗試過的 StackOverflow 問題的建議。

Asp.Net core MVC 應用程序 Windows IIS 中的身份驗證

ASP.Net Core:保留 windows 身份驗證

Asp.Net Core Windows 身份驗證在 IIS 中不起作用

如果我在 IIS 和應用程序上都啟用了 Windows 身份驗證,應用程序會在瀏覽時提示輸入憑據。 即使在輸入當前憑據后,它也不會通過 go 並重新提示。 嘗試 3 次后,應用程序顯示帶有 401 錯誤的錯誤頁面。

如果我的應用程序提示輸入憑據,我相信配置是正確的,但我不明白為什么即使在提供更正的憑據后它也不接受用戶登錄。

注意:所有活動、開發、調試、托管等都發生在同一台 Windows 2019 服務器機器上。 該機器也托管域 controller,並嘗試使用其中一個有效域用戶登錄。

我現在完全一無所知,我嘗試的任何事情最終都會導致同樣的問題。 隨時詢問是否需要更多詳細信息。

編輯 1 ------------------------------------------

我在 IIS 上使用端口 8081 且未綁定名稱配置我的站點時收效甚微。

在此處輸入圖像描述

這樣,當我瀏覽 http://localhost:8081 時,它會毫無問題地登錄當前用戶。 但是當我用任何綁定名稱配置它時,例如sample.localapp.com它開始提示輸入憑據但從不接受它。

提前致謝。

我在 Windows 10 遇到了同樣的問題。解決方案在對此處描述的問題的第一條評論中進行了詳細說明

  1. 打開注冊表編輯器
  2. 導航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  3. 右鍵單擊 MSV1_0 並創建一個名為 BackConnectionHostNames 的新多字符串值
  4. 雙擊 BackConnectionHostNames 並輸入本地站點的名稱 DNS。
  5. 重新啟動計算機。

請將 IIS_IUSRS 添加到發布文件夾或您的 web 應用程序所在的位置

在此處輸入圖像描述

你好朋友,我知道你在問題中給出了答案,但我會嘗試詳細說明:

c:\windows\system32\drivers\etc\host文件中刪除您的綁定名稱,然后在IIS管理器轉到您的網站,右鍵單擊它並選擇編輯綁定...選項,編輯您的綁定網站,清除主機名:字段,然后您現在可以在瀏覽器中寫入 url http://servername:port/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM