在asp.net中使用基本身份验证来覆盖IIS Windows身份验证

时间:2018-08-21 20:02:35

标签: asp.net iis odata windows-authentication basic-authentication

我有一个相当基本的问题:我们建立了一个内部ODATA API,该API托管在IIS上。它已经启动并运行了一段时间,一切正常。

现在,我有一个特定的应用程序(Tableau)需要连接到某些ODATA API端点...连接到ODATA时,Tableau愚蠢地无法使用Windows身份验证...,所以我想我会考虑覆盖默认身份验证的方法。

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

如果完全启用Windows身份验证...它会否决我为强制进行基本身份验证而进行的任何尝试... 是否可以为特定端点/控制器关闭Windows身份验证?

我尝试通过添加这些标签来做到这一点,但是它不起作用:

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

IdentityBasicAuthentication标记是我用来检查基本凭据的自定义授权组件。即使我在浏览器/ Tableau中键入我的凭据,每次我提出请求时都会击中该自定义组件,但该请求会随“ Negotiate”标头一起传递,该标头似乎具有Windows凭据的密钥。似乎从未尝试过使用Basic auth授权HTTP请求。

编辑:为澄清起见,我专门尝试解决从Tableau Desktop连接到ODATA端点的问题。 Tableau Desktop不支持通过ODATA进行NTLM身份验证。

2 个答案:

答案 0 :(得分:0)

现在回答我自己的问题,因为我觉得我已经做了大量的研究,得出了可靠的结论(如果有更好的答案,我会接受其他事情)。

似乎没有一种方法可以替代父级身份验证。由于我们正在使用IIS进行身份验证,因此代码无法覆盖IIS所需的NTLM身份验证。即使我添加了用于基本身份验证的标签,IIS仍将其限制在顶层。

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

答案 1 :(得分:0)

对于在 Google 上搜索“覆盖 IIS 基本身份验证”和

的每个人
  • 已在其应用/后端代码中实现了基本身份验证,
  • 在 IIS 之外工作,但不在 IIS 之后工作:

您可以要求 IIS 不处理基本身份验证。这将允许您的应用/后端读取身份验证标头并回答它。

在 IIS 中打开站点,然后双击 Authentication

Click Authentication

点击 Basic Authentication,然后点击 DisablePick Basic Authentication, Click Disable

IIS 现在会将基本身份验证标头传递给您的应用/后端,而不会干扰。