我可以为 ASP.NET 中的特定应用程序使用基本身份验证覆盖 IIS Windows 身份验证吗?

Can I override IIS Windows auth with Basic auth for a specific app in ASP.NET?

我们构建了一个托管在 IIS 上的内部 ODATA API。它已经启动 运行 一段时间了,一切都按预期工作。

现在,我有一个特定的应用程序 (Tableau Desktop) 需要连接到一些 ODATA API 端点。 Tableau Desktop 在连接到 ODATA 时无法使用 Windows 身份验证(我知道 Tableau Server 可以),所以我想我会研究一种方法来覆盖默认身份验证。

我的问题是:作为主机的 IIS 使用 Windows 身份验证控制对所有端点的身份验证。我想覆盖主机身份验证以允许用户在特定端点上使用基本身份验证连接到 Tableau。

如果完全启用 Windows 身份验证,它会否决我强制执行基本身份验证的任何尝试。

是否可以关闭特定 endpoints/controllers 的 Windows 身份验证?

我尝试通过添加这些标签来实现,但它不起作用:

[OverrideAuthentication, OverrideAuthorization]
[Authorize, IdentityBasicAuthentication]
public class ProjectTrackingController : ODataController

IdentityBasicAuthentication 标记是我放在一起用于检查基本凭据的自定义授权组件。每次我发出请求时,这个自定义组件都会被命中,但即使我在 browser/Tableau 中输入我的凭据,请求也会与“协商”header 一起传递,该协商似乎有 Windows凭据。似乎从未尝试使用基本身份验证对 HTTP 请求进行授权。

目前似乎没有办法覆盖父级身份验证。由于我们正在使用 IIS 进行身份验证,因此代码无法覆盖 IIS 所需的 NTLM 身份验证。尽管我为基本身份验证添加了标记,但 IIS 将此限制在顶层。

我们将切换到 HTTPS(无论如何都需要这样做以获得更好的安全性),然后在 IIS 而不是 NTLM 中启用基本身份验证。这应该可以解决我们在连接 Tableau 时遇到的当前问题。