透過應用程式 Proxy 對應用程式單一登入 (SSO) 進行 Kerberos 限制委派
您可以為透過應用程式 Proxy 發佈的內部部署應用程式,提供受整合式 Windows 驗證保護的單一登入。 這些應用程式需要 Kerberos 票證才能進行存取。 應用程式 Proxy 會使用 Kerberos 限制委派 (KCD) 來支援這些應用程式。
若要深入了解單一登入 (SSO),請參閱什麼是單一登入?。
您可以在 Active Directory 中提供私人網路連接器權限來模擬使用者,以使用整合式 Windows 驗證 (IWA) 啟用應用程式的單一登入。 連接器會使用此權限,來代表他們傳送和接收權杖。
使用 KCD 單一登入的運作方式
此圖表說明使用者嘗試存取使用 IWA 之內部部署應用程式時的流程。
- 使用者輸入 URL,以透過應用程式 Proxy 存取內部部署應用程式。
- 「應用程式 Proxy」將要求重新導向至 Microsoft Entra 驗證服務,以進行預先驗證。 目前,Microsoft Entra ID 只會套用適用的驗證和授權原則,例如多重要素驗證。 如果使用者通過驗證,則 Microsoft Entra 會建立權杖,並將其傳送給使用者。
- 使用者將權杖傳遞給「應用程式 Proxy」。
- 應用程式 Proxy 會驗證權杖並從中擷取使用者主體名稱 (UPN),然後連接器會透過雙重驗證的安全通道,提取 UPN 與服務主體名稱 (SPN)。
- 連接器會執行與內部部署 AD 交涉的 Kerberos 限制委派 (KCD),以模擬使用者將 Kerberos 權杖提供給應用程式。
- Active Directory 會將應用程式的 Kerberos 權杖傳送給連接器。
- 連接器會使用接收自 AD 的 Kerberos 權杖,以將原始要求傳送給應用程式伺服器。
- 應用程式會將回應傳送至連接器,然後再傳回至應用程式 Proxy 服務,最後再傳回給使用者。
必要條件
開始使用 IWA 應用程式的單一登入之前,請確定您的環境已完成下列設定和組態︰
- 您的應用程式 (例如 SharePoint Web 應用程式) 設定為使用整合式 Windows 驗證。 如需詳細資訊,請參閱啟用支援 Kerberos 驗證,或者若是使用 SharePoint,請參閱為 SharePoint 2013 中的 Kerberos 驗證做規劃。
- 您的所有應用程式都有服務主體名稱。
- 執行「連接器」的伺服器與執行應用程式的伺服器,皆已加入網域且屬於相同網域或信任網域。 如需有關加入網域的詳細資訊,請參閱 將電腦加入網域。
- 執行連接器的伺服器具有存取權,可讀取使用者的 TokenGroupsGlobalAndUniversal 屬性。 這個預設設定可能已受到環境強化安全性所影響。
設定 Active Directory
根據您的私人網路連接器和應用程式伺服器是否位於相同的網域,Active Directory 組態會有所不同。
連接器和應用程式伺服器位於相同網域
在 Active Directory 中,移至 [工具]>[使用者和電腦]。
選取正在執行連接器的伺服器。
按一下滑鼠右鍵,然後選取 [屬性]>[委派]。
選取 [信任這台電腦,但只委派指定的服務]。
選取使用任何驗證通訊協定。
在 [這個帳戶可以呈送委派認證的服務] 下方,新增應用程式伺服器的 SPN 身分識別值。 這可讓私人網路連接器針對清單中所定義的應用程式,在 AD 中模擬使用者。
連接器和應用程式伺服器位於不同網域
如需跨網域使用 KCD 的先決條件清單,請參閱 跨網域的 Kerberos 限制委派。
使用 Web 應用程式服務帳戶 (電腦或專用網域使用者帳戶) 的
principalsallowedtodelegateto
屬性,從應用程式 Proxy (連接器) 啟用 Kerberos 驗證委派。 應用程式伺服器會在webserviceaccount
的內容中執行,而委派的伺服器則是connectorcomputeraccount
。 在webserviceaccount
網域的網域控制站 (執行 Windows Server 2012 R2 或更新版本) 上執行以下命令。 在這兩個帳戶使用一般名稱 (非 UPN)。若
webserviceaccount
是電腦帳戶,請使用下列命令:$connector= Get-ADComputer -Identity connectorcomputeraccount -server dc.connectordomain.com Set-ADComputer -Identity webserviceaccount -PrincipalsAllowedToDelegateToAccount $connector Get-ADComputer webserviceaccount -Properties PrincipalsAllowedToDelegateToAccount
若
webserviceaccount
是使用者帳戶,請使用下列命令:$connector= Get-ADComputer -Identity connectorcomputeraccount -server dc.connectordomain.com Set-ADUser -Identity webserviceaccount -PrincipalsAllowedToDelegateToAccount $connector Get-ADUser webserviceaccount -Properties PrincipalsAllowedToDelegateToAccount
設定單一登入
根據使用應用程式 Proxy 發佈應用程式中的所述指示來發佈您的應用程式。 請務必選取 [Microsoft Entra ID] 做為 [預先驗證方法]。
應用程式出現於企業應用程式清單後,將其選取並按一下 [單一登入]。
將單一登入模式設定為 [整合式 Windows 驗證]。
輸入應用程式伺服器的 [內部應用程式 SPN] 。 在此範例中,已發佈應用程式的 SPN 為
http/www.contoso.com
。 此 SPN 必須在連接器可以呈送委派認證的服務清單中。針對要代表使用者使用的連接器選擇 [委派的登入身分識別]。 如需詳細資訊,請參閱使用不同的內部部署和雲端身分識別。
非 Windows 應用程式的 SSO
Microsoft Entra 應用程式 Proxy 的 Kerberos 委派流程會在 Microsoft Entra 在雲端驗證使用者開始。 一旦要求到達內部部署,Microsoft Entra 私人網路連接器會利用與本機 Active Directory 互動,代表使用者發出 Kerberos 票證。 此程序稱為「Kerberos 限制委派 (KCD)」。
在下一個階段中,要求會傳送至具有此 Kerberos 票證的後端應用程式。
有數個機制會定義如何傳送這類要求中的 Kerberos 票證。 大部分的非 Windows 伺服器必須以 SPNEGO 權杖的形式接收。 Microsoft Entra 應用程式 Proxy 支援此機制,但預設為停用。 連接器可針對 SPNEGO 或標準 Kerberos 權杖進行設定,但不能同時設定兩者。
如果您為 SPNEGO 設定連接器電腦,請確定該連接器群組中的所有其他連接器也都已採用 SPNEGO 進行設定。 預定採用標準 Kerberos 權杖的應用程式則應透過其他並非針對 SPNEGO 進行設定的連接器來路由。 有些 Web 應用程式會接受這兩種格式,而不需要任何設定變更。
若要啟用 SPNEGO:
開啟以系統管理員身分執行的命令提示字元。
透過命令提示字元,在需要 SPNEGO 的連接器伺服器中執行下列命令。
REG ADD "HKLM\SOFTWARE\Microsoft\Microsoft Entra private network connector" /v UseSpnegoAuthentication /t REG_DWORD /d 1 net stop WAPCSvc & net start WAPCSvc
非 Windows 應用程式通常會使用使用者名稱或 SAM 帳戶名稱,而不是網域的電子郵件地址。 如果這種情況適用於您的應用程式,就必須設定指定的登入身分識別欄位,將您的雲端身分識別連線到您的應用程式身分識別。
使用不同的內部部署和雲端身分識別
應用程式 Proxy 會假設使用者在雲端與內部部署中具有完全相同的身分識別。 但在某些環境中,由於公司原則或應用程式相依性,組織可能必須使用替代識別碼登入。 在這類案例中,您仍然可以使用 KCD 進行單一登入。 為每個應用程式設定 [委派的身分識別登入],以指定在執行單一登入時所應使用的身分識別。
此功能可讓具有不同內部部署與雲端身分識別的許多組織,可從雲端單一登入到內部部署應用程式,而不需要使用者輸入不同的使用者名稱與密碼。 這包括下列組織:
- 在內部有多個網域 (joe@us.contoso.com、joe@eu.contoso.com),並且在雲端有單一網域 (joe@contoso.com)。
- 在內部有無法路由傳送的網域名稱 (joe@contoso.usa),並且在雲端有合法網域名稱。
- 請勿在內部使用網域名稱 (joe)
- 在內部部署與雲端中使用不同的別名。 例如:joe-johns@contoso.com 對上 joej@contoso.com
使用應用程式 Proxy,您就可以選取要用來取得 Kerberos 票證的身分識別。 這項設定會因應用程式而異。 其中的一些選項適合不接受電子郵件地址格式的系統,另外的選項則設計用於替代登入。
如果使用委派的登入身分識別,則組織的所有網域或樹系中的這個值可能不是唯一。 您可以藉由使用兩個不同的連接器群組發佈這些應用程式兩次來避免此問題。 因為每個應用程式有不同的使用者對象,您可以將其「連接器」加入不同的網域。
若使用內部部署 SAM 帳戶名稱登入身分識別,則必須將裝載連接器的電腦新增至使用者帳戶所在的網域中。
設定不同身分識別的 SSO
設定 Microsoft Entra Connect 設定,讓主要的身分識別會是電子郵件地址 (郵件)。 這是在自訂程序中完成 (透過變更同步設定中的 [使用者主體名稱] 欄位)。 這些設定也決定使用者如何登入 Microsoft 365、Windows 電腦與其他使用 Microsoft Entra ID 作為其身分識別存放區的應用程式。
在您想要修改之應用程式的應用程式組態設定中,選取要使用的 [委派的登入識別] :
- 使用者主體名稱 (例如
joe@contoso.com
) - 替代使用者主體名稱 (例如
joed@contoso.local
) - 使用者主體名稱的使用者名稱部分 (例如,
joe
) - 替代使用者主體名稱的使用者名稱部分 (例如,
joed
) - 內部部署 SAM 帳戶名稱 (視網域控制站組態而定)
- 使用者主體名稱 (例如
疑難排解不同身分識別的 SSO
如果 SSO 程序發生錯誤,它會顯示在連接器電腦事件記錄中,如疑難排解所述。 但在某些情況下,要求會成功傳送至後端應用程式,同時此應用程式會以各種其他 HTTP 回應來回覆。 疑難排解這些情況應該要從檢查連接器電腦上應用程式 Proxy 工作階段事件記錄中的事件編號 24029 開始。 用於委派的使用者身分識別會出現在事件詳細資料的 [使用者] 欄位內。 若要開啟工作階段記錄,請選取事件檢視器檢視功能表中的 [顯示分析與偵錯記錄]。