搭配 Jamf Pro 設定 macOS Kerberos SSO

Apple 自 2019 年後直接在作業系統裡面內建了 macOS Kerberos SSO Extension 的整合,讓依賴 Microsoft Active Directory 地端環境的公司,現在也能利用 Kerberos SSOe 完成 SSO,這個功能必須要搭配 MDM 才能啟用,沒辦法透過 UI 或 Script 的方式開啟。

Jamf Pro 設定方式

前往 Computers > Configuration Profiles > Single Sign-On Extension,並將頁面切換成 Kerberos 後,完成相關的設定。例如:

  • Realm 就填入 AD 網域的名稱,應該是全大寫的
  • Hosts 就填入要自動完成 Kerberos SSOe 的網站有哪些:
    例如公司的網站都是 *.gleelab.com,這時候只需要填寫 .gleelab.com 就可以了

macOS 使用者體驗

接著使用者的 macOS 電腦就會在上方工具列的地方出現一把鑰匙,點擊後按下登入,就會出現下方的登入視窗。使用者就在下面輸入 AD 使用者名稱及密碼,就能登入到 AD 網域裡。如果在 Jamf Pro 裡面有配置密碼同步的話,使用者的 macOS 本機帳戶也會被同步成 AD 的密碼。

It just works ?

Apple 最著名的台詞就是:「It just works」,看起來似乎是這樣沒有錯。只要現在打開 Safari,並且連線到公司的某一個 Kerberos 為認證的網站,使用者應該不再需要輸入帳號密碼,就能夠直接登入。但問題總是沒這麼簡單,在最近跟客戶討論的案例裡,發現很多網站還是需要輸入帳密,似乎 Kerberos SSOe 沒有工作,這是為什麼呢?

NTLM 與 Kerberos 很愛攪在一起

事實上是許多公司內部的開發者,利用大量的 Windows 驗證整合技術(Integrated Windows Authentication),這個技術會透過交談的方式判定應該要走 Kerberos 或是降轉成 NTLM。要讓 Kerberos 驗證發生有以下條件(取自於黑暗執行緒 - 關於IIS整合式Windows驗證的冷知識

  • 只適用已加入網域的客戶端
  • 客戶端必須自己連上AD DC(TCP/UDP 88 Port)
  • 不易穿透Proxy
  • 憑證效期長(10小時),DC負荷較輕
  • 認證過程為HTTP 401 –> 傳送Token(6-16KB) –> HTTP 200
  • 認證身分可以轉用。例如:使用者登入IIS後,Web使用同一AD帳號登入SQL
  • Negotiate提供者的優先選項
  • 必須搞定SPN註冊(手續挺複雜)
  • 非常容易失敗,如果你…
  • 在URL使用IP而不是機器名稱
  • 沒註冊SPN
  • 重複註冊SPN
  • SPN註冊錯帳號 (KRB_ERR_AP_MODIFIED)
  • 客戶端無法連線DNS/DC
  • Proxy/Local Intranet Zone沒設好關於IIS整合式Windows驗證的冷知識

閱讀上面的幾個條件後,我們把焦點放在「非常容易失敗」的那一小段裡,總結出幾個偵錯的方向:

  1. 確定測試案例裡要使用域名連線
  2. 檢查 SPN 註冊是否正常
  3. 檢查 Negotiate Provider 的優先級
  4. 利用 Wireshark 觀察背後驗證的流程(參考黑暗執行緒 - Windows驗證歷程觀察與Kerberos/NTLM判別

利用 app-sso 指令偵錯

理論上我們能用 Safari 拜訪某一個 Kerberos 網站並且成功,其實已經驗證從 Jamf Pro 安裝下來的 Kerberos SSOe 設定是正常可用的了,但如果需要在本機上再驗證一次的話,可以利用 app-sso 這個指令確認。

app-sso -i 網域名稱

利用 klist 與 kdestroy 確認 SPN

kdestroy 這個指令可以把目前拿到的 Kerberos Ticket 全部清空,方便進行驗證。而 klist 指令可以列出目前已經拿到了哪一些 Kerberos Ticket,並且檢查他的 SPN。

檢查 IIS 的 Negotiate 與 SPN 的設定

(1) 檢查 IIS 的 Negotiate Provider 是否正確,匿名式驗證是否已經關閉。

(2) 打開 Active Directory Users and Computers,並且新增一個使用者,例如叫做 iis_service。這個使用者應該要是一個 Service Account,然後在屬性編輯器裡的 ServicePrincipleName 應該會是空白的。

(3) 打開 Powershell 準備輸入以下指令,假設提供的網址叫做 web.gleelab.com,那麼 SPN 的設定方式就要輸入:

Setspn /s HTTP/web.gleelab.com gleelab\iis_service

(4) 調整 ApplicationPool

(5) 選擇 IIS 網站上的 Configurtion Editor,並將裡面的 UseAppPoolCredentials 設為 True

(6) 接著打開 Powershell 執行 iisreset

以上步驟更詳細的教學可以參考 Configuring Kerberos Authentication on IIS Website

讓 Chrome 也支援 Kerberos SSOe

在 Jamf Pro 上面的 Computers 新增 Configuration Profile > Application & Custom Settings:

  • Domain: com.google.Chrome
  • Plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AuthNegotiateDelegateAllowlist</key>
<string>*.gleelab.com</string> 若有多個網域,可以使用逗點分隔
<key>AuthServerAllowlist</key>
<string>*.gleelab.com</string> 若有多個網域,可以使用逗點分隔
<key>AmbientAuthenticationInPrivateModesEnabled</key>
<integer>3</integer> 無痕模式要不要也啟用 Kerberos SSOe,可參考文件
</dict>
</plist>

Read more

Apple 生態系的真實威脅—我們都可能是目標

Apple 生態系的真實威脅—我們都可能是目標

從一場分享開始的警醒 前陣子在 Jamf Nation Live Taipei 分享了 2024-2025 年 Apple 裝置威脅報告,深入探討了全球 Apple 生態系正面臨的資訊安全威脅。 許多人對 Apple 產品有一種根深蒂固的信心—拿著 Mac 或 iPhone,就像拿到了數位世界的「免死金牌」。說實話,Apple 在軟硬體整合上的安全設計確實領先業界,這不是誇大其詞。但也正因為這份信心,我開始想更深入地了解真實情況。 從 Jamf Security 360 報告開始,我觀察了全球情報機構(如 Citizen Lab、Google TAG、Kaspersky)揭露的真實案例。那時我才意識到一個有點殘酷的事實,也正好對應了同事最常對我說的那句話:Apple 設備並非堅不可摧,使用者自身往往才是最大的弱點。 為什麼 Apple 用戶成了高價值目標

By Glee Tsai

從 Jamf Pro 自定義註冊畫面帶使用者資訊至 Jamf Connect 失敗的處理方式

Jamf Pro 在設定裡面的 Enrollment Customization,本來可以設定在使用者完成設備註冊的當下,同步把 SAML 裡的資訊帶給後面的 Jamf Connect Login,這樣就可以減少一步使用者還需要登入的步驟。但在撰文的當下,Jamf Pro 11.1 仍在這個功能上有問題,在跟 Jamf Support Team 了解後,大概能用一種 Workaround 來解決,只是要特別留意以下事情: 1. 在 Jamf Pro 裡的 Enrollment Customization 不要再打勾 Enable Jamf Pro to pass user information to Jamf Connect 了(因為勾了也沒有用) 2. 確保

By Glee Tsai

在 Apple 零接觸部署下僅允許某個群組啟動設備

在 Jamf Pro 有整合 Single Sign On 的情況下,可以前往 Settings > Enrollment Customization 設定僅允許一個群組中的成員啟用設備。如果這個成員沒有在這個群組裡面的話,就不能夠開箱設備。如果以 Entra ID 為例,需要把 Object ID 填在下方的欄位即可。 對照到我在 Entra ID 上的群組設置: 至於如果不是 Entra ID,而是其它的 SSO Provider 的話,最好可以用 SAML Tracer 這一套 Google Chrome 外掛去看一下自己的 SAML 文件是如何表達群組的,例如下圖能看到這個使用者屬於以下五個群組。 接著有另外一個很重要的事情要提醒,如果你要阻擋註冊的成員,可以登入到 Jamf Pro

By Glee Tsai

在 Conditional Access 條件下設置 Jamf Connect Login 的 MFA 挑戰

Mac 世界的零接觸話題,每年都可以有新的話題出現。圍繞著使用者體驗,讓用戶在拿到電腦的那一刻,就能自動化配置所有公司要求的設定,不需 IT 人員幫忙。這不僅是節省 IT 人員的時間而已,更是讓整個出機流程變得更為流暢。 除了軟體與設定可以全自動化部署以外,使用者帳號當然也可以自助化的設定在電腦裡,而且完全按照公司的規範。所以如果公司正在使用 Entra ID 這樣的目錄服務時,當然也可以把 Entra ID 上面的帳密同步化成電腦本機電腦上的帳密,減少人員帳密疲疺的風險。然而,要求更高等級的公司,可能會要求人員在登入 Entra ID 時必須通過兩階段驗證,而這可能就為同步密碼帶來挑戰。 以 Jamf Connect 來說,這一套軟體可以在 Mac 設備開箱時自動就安裝在電腦上,並且出現一個可客製化的登入視窗給用戶登入 Entra ID。剖析這套軟體,事實上是由兩個 OIDC 授權類別完成的,一個是 Authorization Code Grant,

By Glee Tsai