gpt4 book ai didi

c# - 模拟不工作 - Asp.Net 核心 3.1 应用程序在 IIS 中托管 Windows 身份验证

转载 作者:行者123 更新时间:2023-12-04 15:32:19 30 4
gpt4 key购买 nike

我创建了一个 Blazor Server 应用程序 (.Net core 3.1)。该应用程序使用 Windows 身份验证。该应用程序将需要访问一些 Windows 服务,如文件共享、具有集成安全性的数据库等。因此它具有以下模拟代码。

var identity = await IdentityProvider.GetIdentityAsync();

if (identity.IsAuthenticated && identity is WindowsIdentity wid)
{
return WindowsIdentity.RunImpersonated(wid.AccessToken, () =>
{
Fun1(....); // Should be called using the authentication of logged in user
});

Fun1() 应该使用正在使用该应用程序的 Windows 用户的身份来调用,而不是用于运行该网站的帐户。

例如,我网站的应用程序池标识是 MyDomain\UserX。当用户 MyDomain\UserY 使用该网站时。我希望在 MyDomain\UserY 而不是 MyDomain\UserX 下模拟函数 Fun1()

我在 IIS 上创建了一个网站,发布了代码,禁用了匿名身份验证并启用了 Windows 身份验证。但是,函数Fun1() 仍然使用Application Pool 中的标识调用?是否应更改 Active Directory 中的任何设置?

最佳答案

为了使用登录用户的凭据(正在访问您的 API 的用户而不是网站的应用程序池身份)访问数据库,您需要设置 Kerberos 约束委派。请引用:https://learn.microsoft.com/en-us/windows-server/security/kerberos/kerberos-constrained-delegation-overview

https://blogs.uw.edu/kool/2016/10/26/kerberos-delegation-in-active-directory/#:~:text=What%20is%20Kerberos%20Delegation%3F,tier%20is%20the%20web%20site .

这可能对您没有帮助,因为很久以前就有人问过这个问题。但如果其他人处于相同情况,则可能会有用。

关于c# - 模拟不工作 - Asp.Net 核心 3.1 应用程序在 IIS 中托管 Windows 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61021695/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com