【问题标题】:override IIS windows auth with basic auth in asp.net在 asp.net 中使用基本身份验证覆盖 IIS Windows 身份验证
【发布时间】:2019-01-28 01:39:24
【问题描述】:

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

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

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

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

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

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

IdentityBasicAuthentication 标记是一个自定义授权组件,我将其放在一起用于检查基本凭据。每次我发出请求时都会触发此自定义组件,但即使我在浏览器/Tableau 中键入我的凭据,请求也会与似乎具有 Windows 凭据密钥的“协商”标头一起传递。似乎从未尝试使用 Basic auth 授权 HTTP 请求。

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

【问题讨论】:

  • IIS 是第一道防线。
  • 我明白这一点,老实说,我什至不想完全忽略 IIS 身份验证......我遇到的问题是 Tableau 需要 HTTP 响应标头中的“基本”身份验证(WWW-authenticate)在它进行身份验证之前...但是当前 API 将 NTLM 作为身份验证方法发回,因此 Tableau 不知道如何处理它...我不知何故需要发送响应“Basic”而不是“NTLM”,因此 Tableau 将验证...如果这没有意义,请告诉我
  • 我知道有一些方法可以覆盖父身份验证......这就是我试图用我添加的标题标志来做的......但它们并没有像我期望的那样工作他们到...我得到身份验证请求去我的自定义方法就好了...但它总是 NTLM...我需要确保浏览器/Tableau 请求凭据为“基本”
  • 很奇怪,Tableau 文档说它支持基于 Active Directory 的身份验证,onlinehelp.tableau.com/current/server/en-us/security_auth.htm 也许您应该与 Tableau 支持人员联系以获取更多信息。
  • 这是 Tableau Server 文档...我说的是 Tableau Desktop,更具体地说,当使用 Tableau Desktop 连接到 ODATA 端点时...我将更新我的问题以反映这一点

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


【解决方案1】:

现在回答我自己的问题,因为我觉得我已经做了足够的研究,在这一点上有一个可靠的结论(如果有更好的答案,我会接受其他的)。

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

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

【讨论】:

    【解决方案2】:

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

    的所有人
    • 在他们的应用/后端代码中实现了基本身份验证,
    • 在 IIS 之外工作,但不在 IIS 之后:

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

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

    点击Basic Authentication,然后点击Disable

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

    【讨论】:

      猜你喜欢
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多