0
嗨,大家好我很難弄清楚爲什麼WindowsIdentity中的模擬不起作用。Windows模擬問題
我將介紹這個想法以及下面的代碼。
所以這個想法是,我需要在我的應用程序內訪問另一個應用程序API。
public async Task<UserHrtbProfileDTO> HasHrtbAccessAsync(int userId, string systemUser)
{
WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
using (identity.Impersonate())
{
using (HttpClientHandler handler = new HttpClientHandler
{
Credentials = CredentialCache.DefaultNetworkCredentials,
UseDefaultCredentials = true
})
{
using (HttpClient client = new HttpClient(handler, true))
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string requestURI = string.Format(ConfigurationManager.AppSettings["HRTB:Profile_Url"], userId);
HttpResponseMessage response = await client.GetAsync(requestURI);
return response.RequestMessage.RequestUri.OriginalString.Contains(requestURI)
? new UserHrtbProfileDTO
{
HrtbProfileUrl = string.Format(ConfigurationManager.AppSettings["HRTB:Profile_Url"], userId),
ResponseURI = response.RequestMessage.RequestUri.AbsoluteUri,
}
: new UserHrtbProfileDTO
{
ResponseURI = response.RequestMessage.RequestUri.AbsoluteUri,
RequestURI = requestURI,
HasHrtbAccess = false,
IdentityUserName = identity.Name + "\n" + identity.IsAuthenticated + "\n" + identity.AuthenticationType + "\n" + identity.ImpersonationLevel + "\n"
};
}
}
}
}
如果我在本地IIS運行的行爲是好的,我有機會,我需要有和訪問被拒絕在那裏我沒有它。請求所針對的API響應返回我期望的響應。
但是,當我部署並從服務器運行響應是不同的,因此行爲是不應該的。 我猜測,請求不是從已經做出來的用戶的角度發出的。
任何想法,建議或不同的方法,我可以解決這個問題。 謝謝大家。