簡體   English   中英

IIS 服務器上的 Entity Framework Core 和 Windows 身份驗證

[英]Entity Framework Core and Windows authentication on IIS Server

我第一次嘗試在我的 ASP.NET Core 3.1 MVC 站點上使用 Windows 身份驗證,以使用 EF Core 連接到 SQL 服務器。

本地一切正常(使用 IIS Express),但在服務器上,出現問題。

我的網站有"hi,<myDomain/myAccount>!" 在頁面的右上角,它是正確的,但是當我請求一個帶有數據庫查詢的頁面時,我收到了這個錯誤:

SqlException:用戶“MyDomain\MyServerName$”登錄失敗

為什么? 如何配置 EF Core 連接字符串?

更新:

  • 我無法使用表單身份驗證
  • 我沒有用戶列表
  • 我可以使用模擬(WinAuth?活動目錄?)
  • 每個用戶(更多可以登錄網站的用戶都可以訪問 sql 數據庫
  • 我可以更改一些 IIS 服務器設置
  • 這是我第一次使用 winAuth(由 Visual Studio 創建項目工具自動配置 => 使用 windows 身份驗證)
  • “應用程序池在什么樣的用戶下運行?” 我不知道,我認為默認的

這可能與在 IIS 中運行應用程序池的憑據以及這些特定憑據具有的訪問權限有關。 您說您沒有使用模擬,在這種情況下,需要使用具有適當數據庫訪問權限的系統帳戶從您在 IIS 上運行的應用程序向 SQL 服務器發出請求。 系統帳戶是 singleton 帳戶,僅作為 IIS 中應用程序的“應用程序池標識”而存在。

在您的服務器上的 IIS 上,應用程序池在什么樣的用戶下運行? 在大多數使用 Windows 身份驗證的情況下,您希望使用某種系統帳戶來運行應用程序池,然后讓該系統帳戶訪問數據庫。 如果您不想使用系統帳戶,則必須使用模擬,然后使用 AD 組授予模擬用戶訪問 SQL 服務器數據庫的權限。

由於您說對 SQL 服務器的請求以 DOMAIN\SERVERNAME 的形式出現,因此您可能需要更改 IIS 中的該設置以將請求設置為來自系統帳戶,然后讓該系統帳戶顯式訪問 Z97078840A01401數據庫。

您可以通過調整 IIS 中的高級設置並輸入您想要在 IIS 中運行應用程序的帳戶的信息(用戶名/密碼)或“as”來更改此設置。

在此處輸入圖像描述

在此處輸入圖像描述

然后,將這個相同的 DOMAIN\USERNAME 帳戶添加到數據庫中,作為可以讀取/寫入/刪除等的用戶。如果您不這樣做,您也可以簡單地將在其請求中被拒絕的 DOMAIN\SERVERNAME 添加到數據庫想使用自定義系統帳戶。

在此處輸入圖像描述

至於“如何配置 EFCore 連接字符串?”,通常在 Startup.cs 文件中完成。 在那里,您可以直接使用.UseSqlServer(connectionstring)方法從 appsettings.json 輸入連接字符串。

您可以使用Configuration.GetConnectionString("KEY")訪問連接字符串。

在那里配置后,您無需再次配置它(除非可能從 dev/qa/prod 環境更改)。

在此處輸入圖像描述

在此處輸入圖像描述

暫無
暫無

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

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