簡體   English   中英

我可以為 ASP.NET 中的特定應用程序使用基本身份驗證覆蓋 IIS Windows 身份驗證嗎?

[英]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 時看到的當前問題。

對於在 Google 上搜索“覆蓋 IIS 基本身份驗證”和

  • 已經在他們的應用程序/后端代碼中實現了基本身份驗證,
  • 在 IIS 之外工作,但不在 IIS 之后:

您可以要求 IIS 不處理基本身份驗證。 這將允許您的應用程序/后端讀取身份驗證標頭並回答它。

在 IIS 中打開站點,然后雙擊Authentication

單擊身份驗證

單擊“ Basic Authentication ,然后單擊“ Disable 選擇基本身份驗證,單擊禁用

IIS 現在將基本身份驗證標頭傳遞到您的應用程序/后端,而不會干擾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM