[英]asp.net core 2.1, C# app, c# web service, access SQL database
我整個星期都在與以下問題作斗爭,並希望有人能提供幫助。 我的應用程序分為三個部分。
該應用程序與Web服務進行通信,該Web服務又從SQL數據庫獲取數據。 我正在使用Windows身份驗證。 當應用程序在我的計算機上本地運行時,它將毫無問題地從Web服務接收數據。 當我將應用程序托管在Web服務器上時(應用程序和Web服務都托管在同一台計算機上),我收到401(身份驗證)錯誤。
在應用程序中,我獲得了當前在控制器中使用的Windows用戶:
System.Security.Claims.ClaimsPrincipal currentUser = this.User;
WindowsIdentity identity = (WindowsIdentity) currentUser.Identity;
要訪問Web服務(依次訪問數據庫),我使用以下代碼:
await WindowsIdentity.RunImpersonated(identity.AccessToken, async () =>
{
request = new HttpRequestMessage(HttpMethod.Get, uri);
});
我在IIS上檢查了代碼是否在服務器上運行時是否獲得了正確的身份->實際上,我確實是Windows用戶,而不是IIS AppPool用戶(我在更換為使用System.Security之前已獲得了該用戶)。 Claims.ClaimsPrincipal)。
我知道問題是,盡管我使用的是正確的用戶,但身份沒有傳遞給Web服務。 有任何想法嗎?
好的,所以經過大量在線研究之后,我發現了問題所在。 自2003年以來,Microsoft實施了針對中間人攻擊的環回檢查-由於我的FQDN與URL基址不同,這對我造成了問題。 我停用了此檢查( http://artykul8.com/2010/01/windows-server-iis-sharepoint-and-null-sid-audit-failures/ ),現在我的憑據已正確通過。 由於這是一個測試服務器,因此此解決方案沒有問題:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.