【发布时间】: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