Windows-Server-2016

在 ADFS 4.0 中使用備用瀏覽器時,“DeviceContext”聲明在哪裡?

  • April 6, 2018

我知道這可能不是問這個問題的最佳地點。但是,經過幾天的努力,並在 Microsoft 論壇上發帖後,我束手無策。

我們正在使用混合 ADFS 4.0 (Server 2016) / Azure AD / Office 365 設置,設備註冊和 SSO 工作。

我們正在嘗試使用基於設備的訪問策略啟用多因素身份驗證。我們不希望“已辨識”的設備看到額外的 MFA 提示。我們正在使用Microsoft Claims Xray評估 ADFS 返回的索賠。

我們已成功啟用 MFA 並將 ADFS 配置為僅在設備無法辨識時提示 MFA。這是因為被辨識的設備在活動目錄中具有額外的屬性(isRegisteredUser;isManaged;isKnown;trustType;等),我們可以對這些屬性採取行動。我們已經在 iPad 上使用 IE、Firefox、Chrome 和 Safari 進行了測試。但是,“DeviceContext”聲明僅在從 iPad 上的 IE 或 Safari 完成身份驗證時才會出現。

出於某種原因,當從 Chrome 或 Firefox 發出請求時,似乎沒有進行設備身份驗證。身份驗證有效,我們只是看不到任何允許我們根據設備是否已註冊做出決定的 devicecontext 聲明。因此,這些瀏覽器會獲得額外的 MFA 提示。

我根本無法在網上找到任何符合我確切問題的文章。有一些執行緒是相似的,但結果卻是不同的問題,或者最終陷入了死胡同。我希望有人有這種類似的設置,並且知道為什麼 Chrome 和 Firefox 不會執行額外的基於設備的身份驗證,但 iPad 上的 safari 會。所有設備都有有效的證書來執行身份驗證。

我在任何事件日誌中都沒有出現任何錯誤。瀏覽器根本不會發出設備身份驗證請求,也不會發出 devicecontext 聲明。這可能不受支持,但我找不到任何指示一種或另一種方式的資訊。

設備上下文聲明對於 ADFS/Azure AD 確定設備是否被辨識、管理、合規等是必要的。沒有它們,如果繞過 MFA 依賴於“辨識”已知設備,則依賴於 MFA 和 SSO 的方案將被破壞。當設備身份驗證與 ADFS 中的使用者身份驗證一起執行時,會生成設備上下文聲明。

我發現在 Windows 7 中,Workplace Joined 機器是基於每個使用者的,並接收儲存在“目前使用者”證書儲存中的設備身份驗證證書。在身份驗證期間,即使在 Chrome 中也可以使用證書成功執行設備身份驗證。

在 Windows 10 中,我發現 Azure AD 設備註冊是按機器進行的,並且機器會收到儲存在“本地機器”證書儲存中的設備身份驗證證書。在認證過程中,IE 和 Edge 成功使用此證書完成設備認證。Chrome 不會接觸“本地機器”證書儲存中的任何證書。如果使用 Chrome 時無法辨識設備,則 MFA 會失敗,並提示使用者進行輔助形式的身份驗證。

對於沒有合適答案的替代瀏覽器,這似乎是一個已知問題。如果不進行設備身份驗證,就無法通過條件訪問策略繞過 MFA 來辨識設備。

Microsoft為 Google Chrome提供了一個外掛,允許它在使用 MFA 時執行設備身份驗證。但是,有幾個注意事項需要注意:

  • 該外掛僅適用於 Chrome,並且僅適用於 Windows 10 Creators Updates (1703) 或更高版本。
  • 該外掛僅適用於 Azure AD 條件訪問策略。
  • 基於 ADFS 設備的條件訪問策略將不起作用。
  • 由於之前的限制,除 Office 365 之外的 ADFS 中的依賴方信任將無法使用該外掛。

長話短說,Windows 7 設備身份驗證似乎工作正常,如果您使用 Chrome,辨識的設備將支持基於設備的條件訪問策略。使用 Chrome 的 Windows 10 設備支持基於設備的條件訪問策略的能力有限。移動設備在註冊到 MDM 時會收到基於使用者的證書,因此它們似乎也支持在管理設備時繞過 MFA。

我認為這裡的主要問題是 Chrome 的開發人員故意阻止它訪問“本地電腦”證書儲存以進行身份驗證。這可以通過 Process Monitor 進行驗證,也可以通過查看 Chrome 證書設置中的可用證書來驗證。

我很抱歉這麼說,但 Mozilla 繼續他們任性的做法,導致他們的瀏覽器很難在企業中使用,並且開發人員讓 Firefox 無法訪問任何 Windows 證書儲存。因此,除非您故意將證書導入 Firefox,否則基於設備的條件訪問在任何作業系統上都不起作用。

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