[英]Can I override IIS Windows auth with Basic auth for a specific app in ASP.NET?
我們構建了一個內部 ODATA API,托管在 IIS 上。它已經啟動並運行了一段時間,一切都按預期工作。
現在,我有一個特定的應用程序 (Tableau Desktop) 需要連接到一些 ODATA API 端點。 連接到 ODATA 時,Tableau Desktop 無法使用 Windows 身份驗證(我知道 Tableau Server 可以),所以我想我會研究一種方法來覆蓋默認身份驗證。
我的問題是:IIS 作為主機,使用 Windows 身份驗證控制對所有端點的身份驗證。 我想覆蓋主機身份驗證以允許用戶在特定端點上使用基本身份驗證連接到 Tableau。
如果完全啟用 Windows 身份驗證,它會否決我為強制執行基本身份驗證所做的任何嘗試。
是否可以關閉特定端點/控制器的 Windows 身份驗證?
我嘗試通過添加這些標簽來做到這一點,但它不起作用:
[OverrideAuthentication, OverrideAuthorization]
[Authorize, IdentityBasicAuthentication]
public class ProjectTrackingController : ODataController
IdentityBasicAuthentication 標記是我放在一起用於檢查基本憑據的自定義授權組件。 每次我發出請求時都會點擊此自定義組件,但即使我在瀏覽器/Tableau 中鍵入我的憑據,請求也會與“協商”header 一起傳遞,它似乎具有 Windows 憑據的密鑰。 似乎從未嘗試使用基本身份驗證授權 HTTP 請求。
現在回答我自己的問題,因為我覺得我已經做了足夠的研究來得出一個可靠的結論(如果出現更好的答案,我會接受其他的東西)。
目前似乎沒有辦法覆蓋父級身份驗證。 由於我們使用 IIS 進行身份驗證,因此代碼無法覆蓋 IIS 所需的 NTLM 身份驗證。 盡管我為基本身份驗證添加了標簽,但 IIS 在頂層限制了這一點。
我們將切換到 HTTPS(無論如何都需要這樣做以提高安全性),然后在 IIS 中啟用基本身份驗證而不是 NTLM。 這應該可以解決我們在連接 Tableau 時看到的當前問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.