Iis

集成 Windows 身份驗證、Azure Active Directory 和 AAD 加入 Azure VM

  • June 7, 2020

我希望有人能夠通過幫助確定我所缺少的內容或確認是否確實有可能來提供幫助。

背景

我們有一個新的 Azure VM,上面安裝了 Windows 2019 Datacenter 並安裝了 IIS。

  • 該機器已加入 Azure AD。
  • 我可以使用我的 Azure AD 帳戶通過 RDP 登錄 VM。
  • 我們沒有本地廣告。
  • 我們沒有 AAD 域服務。
  • VM 只能通過 VPN 連接訪問。
  • 在 IIS 上,預設網站已切換為僅集成 Windows 身份驗證。

VM 具有指向其 IP 地址的 DNS“A”記錄。例如catchyname.ourdomain.com解析到虛擬機。這是在我們的私有 Azure DNS 中為內部 Azure 網路和我們的外部 DNS 提供程序設置的。

問題

直接登錄到 VM 時,我可以通過瀏覽http://machinename/或通過訪問預設的 IIS 歡迎頁面,http://localhost並且它被正確提供。

如果我嘗試通過http://127.0.0.1>、通過<http://catchyname.ourdomain.com或通過機器 IP 地址導航到同一頁面,則會要求使用者輸入使用者名和密碼。有趣的是,挑戰框辨識出我的 AD 使用者(當我登錄到 VM 時)並請求隨附的 PIN,但無法接受任何輸入,並以 401.2.5 錯誤和消息響應:

由於身份驗證標頭無效,您無權查看此頁面。

當我檢查日誌時,對於成功的請求,我可以看到 IIS 日誌中的源 IP 地址顯示為::1

如果我使用正確的 URL 登錄到依賴於集成 Windows 身份驗證的盒子上的另一個應用程序(SSRS2017)http:/machinename/Reports/browse,它還允許我進入並顯示我正確登錄的使用者AzureAD\MyUserName

如果我添加machinename到我的C:\Windows\System32\drivers\etc\hosts文件並嘗試通過它遠端瀏覽http:/machinename/它也會失敗。

問題

是否可以為 IIS 中的站點啟用 AAD 身份驗證,這些站點通過 DNS 別名解析,其執行方式與我通過電腦名稱或通過 localhost 導航時的執行方式相同?如果是,我需要採取哪些步驟?

如果我能解決這個問題,下一步是看看我們是否可以使用這種身份驗證方法為我們的 Windows 桌面啟用這些網站,這些桌面也加入了 Azure AD,因此普通使用者可以瀏覽到 VM 上的站點並成功訪問它們。

我嘗試過的事情

在過去的 24 小時裡,我用Google搜尋了很多,並調查了建議更改系統資料庫以禁用本地 IIS 網站的環回檢查的文章,我已經閱讀了有關為 .NET 應用程序配置聯合身份驗證的文章,但感覺我太深入了在此刻。

我一直在回想這樣一個事實,即如果我瀏覽http:\\localhost\一切似乎都有效,我不知道為什麼這會有所不同http:\\dns-alias\

有人可以幫忙嗎?

謝謝!

您正在做的事情不起作用,這就是為什麼有一些替代方案:

您已啟用 Windows 集成身份驗證,這實際上取決於域環境才能正常工作,而您沒有:https ://docs.microsoft.com/en-us/aspnet/web-api/overview/security/integrated- windows-身份驗證

IIS 不了解 Azure AD 帳戶身份驗證,IIS 根本不會與 Azure AD 對話進行身份驗證,因為它只是缺少該功能,與您的 DNS 記錄是什麼或它指向的位置無關:https://docs.microsoft。 com/en-us/iis/configuration/system.webserver/security/authentication/

您可能的選擇是:

  1. 要求您的開發團隊在應用程式碼中集成 Azure AD 身份驗證(如果您擁有該應用程序並有權訪問程式碼,如果您不想投資更改程式碼,則不是我的首選方法):https ://docs.microsoft .com/en-us/aspnet/visual-studio/overview/2012/windows-azure-authentication
  2. 使用 Azure AD 線上發布您的應用程序,無需使用 VPN,使用 Microsoft 提供的名為Azure AD Application Proxy的簡單代理服務,將其安裝在 IIS 伺服器上,線上註冊應用程序並進行一些配置,就是這樣,您的應用程序可以在任何地方安全訪問。最好的部分是您可以使用 Azure AD 身份驗證甚至 Azure AD 條件訪問策略之類的東西。

這裡有很多要閱讀的內容,祝您學習愉快:

https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/application-proxy https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/overview

引用自:https://serverfault.com/questions/1020292