我有一个相当基本的问题:我们建立了一个内部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身份验证。
答案 0 :(得分:0)
现在回答我自己的问题,因为我觉得我已经做了大量的研究,得出了可靠的结论(如果有更好的答案,我会接受其他事情)。
似乎没有一种方法可以替代父级身份验证。由于我们正在使用IIS进行身份验证,因此代码无法覆盖IIS所需的NTLM身份验证。即使我添加了用于基本身份验证的标签,IIS仍将其限制在顶层。
我们将切换到HTTPS(无论如何都需要这样做以提高安全性),然后在IIS中启用基本身份验证,而不是NTLM。这应该可以解决连接Tableau时遇到的当前问题。
答案 1 :(得分:0)