設定 Microsoft Entra ID 搭配 Kerberos 進行 SSO
您可以將 Power Platform SAP ERP 連接器設定為使用 Microsoft Entra ID 憑證進行 Kerberos 式單一登入 (SSO)。 您的使用者可以在 Power Platform 解決方案中存取 SAP 資料並執行 SAP 遠端函數呼叫 (RFC),而無需多次登入多個服務。 本文將引導您完成此過程,包括在內部部署資料閘道上設定 Kerberos 限制委派 (KCD) 以實現安全通訊。
進一步了解 Kerberos 限制委派。
這些說明假設您是從頭開始進行。 大多數客戶已經完成了一些步驟。 確定您的情境需要完成哪些步驟超出了本文的範圍。 例如,如果您的 SAP 系統已設定為 Kerberos 式 SSO,則可以跳過在 Active Directory 網域服務中建立 SAP 服務帳戶部分。
必要條件
具有 Active Directory 網域服務 (AD DS) 的 Windows Server。 本指南中使用的範例網域是 corp.bestrun.com (NetBIOS:CORP)。
加入 Active Directory 網域的內部部署資料閘道伺服器 (版本 2024 年 10 月或更高版本)。 如需進一步了解,請參閱安裝內部部署資料閘道。
來自以下角色的協助:
- Microsoft Entra ID 管理員
- SAP 基準管理員
- Power Platform 管理員
在 AD DS 中建立 SAP 服務帳戶
作為網域管理員,您將首先建立一個服務帳戶,然後定義服務主體名稱 (SPN) 並為其啟用 Kerberos 加密。
注意
如果您的 SAP Basis 管理員確認您的 SAP 系統已設定為 Kerberos 式 SSO,請跳過此部分。
以網域管理員身分執行下列步驟來設定服務帳戶:
在網域控制站主機電腦上,開啟 Microsoft 管理主控台 (MMC) 並執行 Active Directory 使用者和電腦嵌入式管理單元。
在您的網域中,以滑鼠右鍵按一下使用者,,然後選擇新建>使用者。
在完整名稱和使用者登入名稱輸入 Kerberos<SID>,其中 <SID> 是 SAP 系統的識別碼,例如 A4H。
選取下一步。
輸入並確認新服務帳戶的密碼。
選擇使用者無法變更密碼和密碼永不過期。
選擇下一步,然後選擇完成。
建立服務帳戶後,定義其服務主體名稱 (SPN) 並啟用 Kerberos 加密。
開啟 ADSI 編輯嵌入式管理單元 (adsiedit.msc) 並連接到您的網域。
從網域的預設命名內容中選擇 CN=Users。
以滑鼠右鍵按一下 CN=Kerberos<SID> 使用者物件,然後選擇屬性。
在屬性清單中,選擇 ServicePrincipalName。
選取編輯。
以 SAP/<SID> 格式輸入服務主體名稱,其中 <SID> 是 SAP 系統的識別碼,例如 A4H。
選擇新增,然後選擇確定。
返回 Active Directory 使用者和電腦嵌入式管理單元。
在使用者清單中,以滑鼠右鍵按一下新的 SAP 服務帳戶 Kerberos<SID>,然後選擇屬性。
選擇帳戶索引標籤。
在帳戶選項下,選擇此帳戶支援 Kerberos AES 256 位元加密。
選取確定。
重要
啟用 Kerberos AES 256 位元加密可能會導致其他用戶端 (例如 SAP GUI) 從該 Active Directory 帳號請求 Kerberos 票證出現問題。 這是因為它變更了可用的加密方法清單,並且其他用戶端不再具有通用的加密密碼。 檢查 Active Directory 記錄以確定所有用戶端正在使用哪些加密方法,然後使用正確的值手動更新 msDS-SupportedEncryptionTypes
屬性。 更新後,AES 256 加密選項應會自動出現,無需手動選擇。 如需進一步了解,請參閱核心基礎設施和社區部落格上的解密支援的 Kerberos 加密類型的選擇。
在 SAP 中使用 Kerberos SSO 驗證設定安全網路通訊
在 SAP GUI 中以 SAP Basis 管理員身分執行下列步驟。
若要啟動 SAP Single Sign-On 精靈,請在命令欄位中輸入 SNCWIZARD。
在精靈開始頁上,選擇繼續。
接受系統 SNC 身分識別的預設值,然後選擇繼續。
在預設設定檔參數頁面上,選擇繼續。
選取關閉。
從 SAP 系統登出並重新啟動 SAP 應用程式伺服器。
登入 SAP GUI 並再次執行 SNCWIZARD。
在開始頁面上,選擇繼續。
在 Kerberos 憑證頁面上,選擇繼續。
在 SPNEGO 設定中,選擇顯示/變更以切換到編輯模式,然後選擇新增。
輸入下列值:
- 使用者主體名稱:Kerberos<SID>@DOMAIN,其中 Kerberos<SID> 是服務帳戶使用者名稱,DOMAIN 是大寫字母的 Active Directory 網域的完整名稱;例如,KerberosA4H(at)CORP.BESTRUN.COM。
- 密碼和確認密碼:您在建立 Active Directory 帳戶時輸入的密碼。
選擇檢查 Active Directory 中的使用者以驗證使用者,然後選擇登出。
選取儲存。
在X.509 憑證頁面上,選擇跳過。
選擇完成。
接下來,將 SNC 使用者名稱 (基於 Windows 網域使用者名稱) 對應到 SAP 使用者主體名稱。
在 SAP GUI 中,執行交易 SU01。
在使用者欄位中輸入測試使用者識別碼 (例如 JDAVIS),然後選擇變更。
選取 SNC 索引標籤。
在 SNC 名稱欄位中輸入使用者主體名稱;例如,p:CN=JDAVIS(at)CORP.BESTRUN.COM。
選取儲存。
為 Kerberos 限制委派設定內部部署資料閘道
預設情況下,內部部署閘道會作為電腦本機服務帳戶 NT Service\PBIEgwService
運作。 若要將 Kerberos 限制委派與通訊協定的 S4U 擴充套件結合使用,閘道必須作為網域中的服務帳戶運作。
以網域管理員身分執行下列步驟。
在網域控制站主機電腦上,返回 Active Directory 使用者和電腦嵌入式管理單元。
在您的網域中,以滑鼠右鍵按一下使用者,,然後選擇新建>使用者。
在完整名稱和使用者登入名稱輸入 GatewaySvc。
選取下一步。
輸入並確認新網域服務帳戶的密碼。
選擇使用者無法變更密碼和密碼永不過期。
選擇下一步,然後選擇完成。
建立網域服務帳戶後,接下來您將定義其服務主體名稱並為其啟用 Kerberos 限制委派。
在提升的 PowerShell 視窗中,輸入以下命令為新服務帳戶建立 SPN。 將 <OPDG 主機名稱>替換為您的內部部署資料閘道的主機名稱,將<網域>替換為您的網網域名稱稱。 您可以透過在命令提示字元下輸入
hostname
命令來尋找主機名稱。setspn –s gateway/<OPDG hostname> <domain>\GatewaySvc
在Active Directory 使用者和電腦嵌入式管理單元中,以滑鼠右鍵按一下新服務帳戶,然後選擇屬性。
選擇委派索引標籤。
選擇僅信任此使用者委派指定的服務和使用任何驗證通訊協定。
選取新增。
選擇使用者或電腦。
在物件名稱欄位中輸入 Kerberos<SID>,其中<SID> 是 SAP 系統的識別碼,例如 A4H。
選擇檢查名稱,然後選擇確定。
允許的服務清單現在包含 SAP 系統的 SPN。 新閘道服務帳戶只能使用 Kerberos S4U2proxy 通訊協定擴充代表傳播的使用者請求 SAP 系統的服務票證。
- 選擇全選。
- 選取確定。
- 再次選擇確定。
- 必須將內部部署資料閘道服務帳戶授予內部部署資料閘道主機上的本機原則。 透過從管理員命令提示字元執行 gpedit.msc,使用本機群組原則編輯器執行此設定。
- 前往本機電腦原則 ->電腦設定 ->Windows 設定 ->安全性設定 ->本機原則 ->使用者權限指派。 透過按兩下內部部署資料閘道網域服務帳戶 (例如 CORP\GatewaySvc),授予本機原則作為作業系統的一部分。
- 選擇新增使用者或群組。
- 輸入內部部署資料閘道的網域服務帳戶的名稱 (例如 GatewaySvc),然後選擇檢查名稱將其解析為完整的現有名稱。 選取確定。 服務帳戶的網網域名稱稱 (例如 CORP\GatewaySvc) 現已新增至原則的使用者清單中。 選擇確定以套用新設定。
- 透過按兩下驗證後模擬用戶端原則,重複相同的步驟。 選擇新增使用者或群組,然後使用檢查名稱將內部部署資料閘道的服務帳戶解析為完整的現有名稱。 選取確定。
- 服務帳戶的名稱 (例如 CORP\GatewaySvc) 現已新增至原則的使用者清單。 選取確定。 關閉本機群組原則編輯器。
- 從閘道主機上的桌面連結啟動內部部署資料閘道應用程式,或透過執行 C:\Program Files\On-premises data gateway\EnterpriseGatewayConfigurator.exe。選擇登入以在環境中註冊內部部署資料閘道的 Power Platform 系統管理員使用者身分登入。
- 從設定器功能表中選擇服務設定。 選取變更帳戶。
- 選擇套用並重新啟動。
- 輸入內部部署資料閘道的服務帳戶名稱 (例如 CORP\GatewaySvc) 和密碼。 選取設定。
- 透過選擇登入來提供您的 Power Platform 系統管理員登入帳戶。
- 選擇移轉、還原或接管現有閘道,以還原您的閘道註冊。
- 從下拉方塊中選擇您的閘道叢集和執行個體,並提供在初始註冊期間選擇的修復金鑰。 選取設定。
- 恢復完成後,您的內部部署資料閘道服務執行個體將使用網域服務帳戶 (例如 CORP\GatewaySvc)。
安裝並設定 SAP 加密庫
對於內部部署資料閘道和 SAP 系統之間的 SNC 通訊,SAP 加密庫必須與 SAP NCo 3.1 一起安裝在閘道主機上。
- 從 SAP 支援入口網站的軟體下載 (需要 S 使用者) 下載最新版本的 SAP 加密庫,並將庫檔案 (sapcrypto.dll) 複製到閘道主機上的內部部署資料閘道的安裝目錄 (C:\程式檔案\內部部署資料閘道)。 以滑鼠右鍵按一下 sapcrypto.dll 檔案,然後從操作功能表中選擇屬性。
- 切換到詳細資訊索引標籤以檢查程式庫的版本。 它應該是 8.5.25 或更高版本。 選取確定。
- 在同一目錄 (C:\Program Files\On-premises data gateway) 中建立一個新的文字檔案 sapcrypto.ini,內容如下:ccl/snc/enable_kerberos_in_client_role = 1。
- 儲存檔案。
- 建立 CCL_PROFILE 系統環境變數並將其值設為 sapcrypto.ini 設定檔的路徑。 在閘道主機上,啟動控制面板並導覽至系統和安全性 ->系統。 選擇進階系統設定。
- 選擇環境變數。
- 在系統變數下,選擇新建。
- 在變數名稱輸入 CCL_PROFILE。 對於變數值,輸入 sapcrypto.ini 檔案的完整路徑,例如 C:\Program Files\On-premises data gateway\sapcrypto.ini。 選取確定。
- 再次選擇確定。
設定 FullDomainResolutionEnabled OPDG 設定
為了協助內部部署資料閘道找到 Active Directory 使用者,我們需要在內部部署資料閘道設定中設定一個設定值。
- 在閘道主機上,在編輯器中開啟內部部署資料閘道安裝資料夾 (C:\Program Files\On-premises data gateway) 中的檔案 Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config。
- 搜尋設定 FullDomainResolutionEnabled 並將其值設為 True。
- 從內部部署資料閘道設定器的服務設定索引標籤中選擇立即重新啟動以套用變更。
在 Active Directory 中設定使用者對應
如果 Microsoft Entra ID 使用者主體名稱與 Active Directory 本機電子郵件屬性相同,則可以跳過此步驟。
若要在此方案中為使用者啟用 Kerberos 式主體傳播,需要從 Microsoft Entra ID 中的使用者完整使用者名稱 (使用者主體名稱,UPN) 到 Active Directory 中的使用者本機名稱的對應。 為此,我們使用本機 Active Directory 使用者未使用的屬性 msDS-cloudExtensionAttribute1
來儲存 Microsoft Entra ID UPN。 也可以使用任何其他未使用的 Active Directory 屬性。
在應用程式測試使用者 Jack Davis 的情境中,將本機 Active Directory 網域使用者帳戶 jdavis@corp.bestrun.com
的 msDS-cloudExtensionAttribute1 屬性設定為使用者的 Microsoft Entra ID UPN jdavis@bestruncorp.onmicrosoft.com
,以連結兩個帳戶。
- 在閘道主機上,在編輯器中開啟內部部署資料閘道安裝資料夾 (C:\Program Files\On-premises data gateway) 中的檔案 Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config。
- 搜尋設定 ADUserNameReplacementProperty 並將其值設為 SAMAccountName。
- 搜尋設定 ADUserNameLookupProperty 並將其設定為值 msDS-cloudExtensionAttribute1。 儲存文件中的變更。
- 從內部部署資料閘道設定器的服務設定索引標籤中選擇立即重新啟動以套用變更。
- 在網域控制站主機上,選擇開始,然後從功能表中選擇Windows 管理工具 ->ADSI 編輯。 在 ADSI 編輯器中,在左側物件樹中導覽至網域的預設命名上下文下的 CN=Users。 右鍵點選測試使用者的物件 (例如 CN=Jack Davis),然後從操作功能表中選擇屬性。
- 從清單中選擇屬性 msDS-cloudExtensionAttribute1,然後選擇編輯。
- 在值欄位中輸入測試使用者的 Microsoft Entra ID UPN (例如 jdavis@<domainname>.onmicrosoft.com)。 將 <domainname> 替換為您的 Microsoft Entra ID 租用戶的網域名稱,例如 bestruncorp。 選取確定。
建立 Power Automate 流程
所有內部部署元件 (SAP 系統、內部部署資料閘道和 AD) 現在都已針對 Kerberos 式主體傳播進行了正確設定。 在此步驟中,建立並執行 Power Automate 流程來測試設定。
在 https://make.powerautomate.com 登入 Power Automate。
選擇我的流程 ->新流程 ->即時雲端流程
為流程命名,選擇手動觸發流程,然後選擇建立。
將 SAP ERP 連接器動作呼叫 SAP 函數 (V3)新增至您的流程中。
如果您沒有建立任何 SAP ERP 連線,系統會提示您建立一個連線。 如果您有現有連線,請建立一個新連線。
- 驗證類型應為 Microsoft Entra ID (使用 Kerberos)。
- 資料閘道應是本指南中設定的內部部署資料閘道。
- 選擇登入。
在 SAP ERP 呼叫 SAP 功能 (V3) 動作中,設定以下參數:
- RFC 名稱設定為 STFC_CONNECTION。
- SAP 系統設定為 (根據 SAP Basis 管理員變更這些值)。
json { "AppServerHost": "<SAP 伺服器名稱>", "Client": "<SAP 用戶端>", "LogonType": "ApplicationServer", "SncLibraryPath": "C:\Program Files\On-premises data gateway\sapcrypto.dll", "SncPartnerName": "p:<SAP 合作夥伴名稱>", "SncQOP": "Default", "SncSso": "On", "SystemNumber": "<SAP 系統編號>", "UseSnc": "true" }
如果一切成功,則可以輸入 REQUTEXT 參數,其中可以輸入 Hello World 等值。
儲存並測試流程。