教學課程:將 Microsoft Entra 單一登入 (SSO) 與 SAP NetWeaver 整合
在本教學課程中,您會了解如何將 SAP NetWeaver 與 Microsoft Entra ID 整合。 將 SAP NetWeaver 與 Microsoft Entra ID 整合時,您可以:
- 在 Microsoft Entra ID 中控制可存取 SAP NetWeaver 的人員。
- 讓使用者使用其 Microsoft Entra 帳戶自動登入 SAP NetWeaver。
- 在一個集中式位置管理您的帳戶。
必要條件
若要開始使用,您需要下列項目:
- Microsoft Entra 訂用帳戶。 如果您沒有訂用帳戶,可以取得免費帳戶。
- 啟用 SAP NetWeaver 單一登入 (SSO) 的訂用帳戶。
- SAP NetWeaver V7.20 或更新版本
案例描述
- SAP NetWeaver 支援 SAML (SP 起始的 SSO) 和 OAuth。 在本教學課程中,您會在測試環境中設定及測試 Microsoft Entra SSO。
注意
此應用程式的識別碼是固定的字串值,因此一個租用戶中只能設定一個執行個體。
注意
依據您的組織需求,以 SAML 或 OAuth 設定應用程式。
從資源庫新增 SAP NetWeaver
若要設定 SAP NetWeaver 與 Microsoft Entra ID 整合,您需要從資源庫將 SAP NetWeaver 新增到受控 SaaS 應用程式清單中。
- 以至少 雲端應用程式系統管理員 的身分登入 Microsoft Entra 系統管理中心。
- 瀏覽至 [身分識別] > [應用程式] > [企業應用程式] > [新增應用程式]。
- 在 [從資源庫新增] 區段的搜尋方塊中輸入 SAP NetWeaver。
- 從結果面板選取 [SAP NetWeaver],然後新增應用程式。 將應用程式新增至您的租用戶時,請稍候幾秒鐘。
或者,您也可以使用企業應用程式組態精靈。 在此精靈中,您可以將應用程式新增至租用戶、將使用者/群組新增至應用程式、指派角色,以及逐步進行 SSO 設定。 深入了解 Microsoft 365 精靈。
設定及測試適用於 SAP NetWeaver 的 Microsoft Entra SSO
以名為 B.Simon 的測試使用者,設定及測試使用 SAP NetWeaver 的 Microsoft Entra SSO。 若要讓 SSO 能夠運作,您必須建立 Microsoft Entra 使用者與 SAP NetWeaver 中相關使用者之間的連結關聯性。
若要設定及測試使用 SAP NetWeaver 的 Microsoft Entra SSO,請執行下列步驟:
- 設定 Microsoft Entra SSO,讓您的使用者使用此功能。
- 建立 Microsoft Entra 測試使用者,以使用 B.Simon 測試 Microsoft Entra 單一登入。
- 指派 Microsoft Entra 測試使用者,以允許 B.Simon 使用 Microsoft Entra 單一登入。
- 使用 SAML 設定 SAP NetWeaver,以在應用程式端設定 SSO 設定。
- 建立 SAP NetWeaver 測試使用者,使 SAP NetWeaver 中 B.Simon 的對應身分連結到該使用者在 Microsoft Entra 中的代表身分。
- 測試 SSO,以驗證組態是否能運作。
- 設定適用於 OAuth 的 SAP NetWeaver在應用程式端設定 OAuth 設定。
- 從 Azure AD 要求存取令牌,以使用 Azure AD 作為識別提供者(IdP)。
設定 Microsoft Entra SSO
在本節中,您會啟用 Microsoft Entra 單一登入。
若要使用 SAP NetWeaver 設定 Microsoft Entra 單一登入,請執行下列步驟:
開啟新的 Web 瀏覽器視窗,以系統管理員身分登入您的 SAP NetWeaver 公司網站
確定 http 和 https 服務為作用中,並已在 SMICM T-Code 中指派適當的連接埠。
登入 SAP 系統 (T01) 的商務用戶端 (需要 SSO),並啟用 HTTP 安全性工作階段管理。
移至交易代碼 SICF_SESSIONS。 它會顯示所有相關的設定檔參數以及目前的值。 如下所示:
login/create_sso2_ticket = 2 login/accept_sso2_ticket = 1 login/ticketcache_entries_max = 1000 login/ticketcache_off = 0 login/ticket_only_by_https = 0 icf/set_HTTPonly_flag_on_cookies = 3 icf/user_recheck = 0 http/security_session_timeout = 1800 http/security_context_cache_size = 2500 rdisp/plugin_auto_logout = 1800 rdisp/autothtime = 60
注意
依照貴組織的需求來調整上述參數。這裡所提供的上述參數僅作為指示。
如果需要調整參數,在 SAP 系統的執行個體/預設設定檔中,重新啟動 SAP 系統。
在相關用戶端上按兩下,以啟用 HTTP 安全性工作階段。
啟用以下 SICF 服務:
/sap/public/bc/sec/saml2 /sap/public/bc/sec/cdc_ext_service /sap/bc/webdynpro/sap/saml2 /sap/bc/webdynpro/sap/sec_diag_tool (This is only to enable / disable trace)
在 SAP 系統 [T01/122] 的商務用戶端中,移至交易代碼 SAML2。 它會在瀏覽器中開啟使用者介面。 在此範例中,我們假設 122 為 SAP 商務用戶端。
提供您的使用者名稱和密碼以在使用者介面中輸入,然後按一下 [編輯]。
將 [提供者名稱] 從 T01122 取代為
http://T01122
,然後按一下 [儲存]。注意
根據預設,提供者名稱格式為
<sid><client>
,但 Microsoft Entra ID 預期該名稱的格式為<protocol>://<name>
,因此建議將提供者名稱保持為https://<sid><client>
,以允許在 Microsoft Entra ID 中設定多個 SAP NetWeaver ABAP 引擎。產生服務提供者中繼資料:在 SAML 2.0 使用者介面上設定好 [本機提供者] 和 [信任的提供者] 設定後,下一個步驟是產生服務提供者的中繼資料檔案 (其中包含 SAP 中的所有設定、驗證內容和其他組態)。 產生此檔案之後,請將此檔案上傳至 Microsoft Entra ID。
移至 [本機提供者] 索引標籤。
按一下 [中繼資料]。
在電腦上儲存產生的 [中繼資料 XML 檔案],然後在 [基本 SAML 設定] 區段中上傳該檔案,以在 Azure 入口網站中自動填入 [識別碼] 和 [回覆 URL] 值。
遵循下列步驟來啟用 Microsoft Entra SSO。
以至少 雲端應用程式系統管理員 的身分登入 Microsoft Entra 系統管理中心。
瀏覽至 [身分識別]>[應用程式]>[企業應用程式]>[SAP NetWeaver] 應用程式整合頁面,尋找 [管理] 區段,並選取 [單一登入]。
在 [選取單一登入方法] 頁面上,選取 [SAML]。
在 [以 SAML 設定單一登入] 頁面上,按一下 [基本 SAML 設定] 的鉛筆圖示,以編輯設定。
在 [基本 SAML 設定] 區段上,如果您想要以 IDP 起始模式設定應用程式,請執行下列步驟:
按一下 [上傳中繼資料檔案],上傳您稍早取得的 [服務提供者中繼資料檔案]。
按一下資料夾圖示以選取中繼資料檔案,然後按一下 [上傳]。
當中繼資料檔案成功上傳後,會自動在 [基本 SAML 設定] 區段文字方塊中填入 [識別碼] 及 [回覆 URL] 值,如下所示:
在 [登入 URL] 文字方塊中,以下列模式輸入 URL︰
https://<your company instance of SAP NetWeaver>
注意
某些客戶遇到錯誤,指出我們為其執行個體設定的回覆 URL 不正確。 如果您收到任何這類錯誤,請使用這些 PowerShell 命令。 請先使用回覆 URL 更新應用程式物件中的回覆 URL,然後更新服務主體。 使用 Get-MgServicePrincipal 來取得服務主體識別碼和值。
$params = @{ web = @{ redirectUris = "<Your Correct Reply URL>" } } Update-MgApplication -ApplicationId "<Application ID>" -BodyParameter $params Update-MgServicePrincipal -ServicePrincipalId "<Service Principal ID>" -ReplyUrls "<Your Correct Reply URL>"
SAP NetWeaver 應用程式需要特定格式的 SAML 判斷提示,因此您必須將自訂屬性對應加入 SAML 權杖屬性組態。 下列螢幕擷取畫面顯示預設屬性的清單。 按一下 [編輯] 圖示以開啟 [使用者屬性] 對話方塊。
在 [使用者屬性] 對話方塊的 [使用者宣告] 區段中,如上圖所示設定 SAML 權杖屬性,然後執行下列步驟:
按一下 [編輯] 圖示以開啟 [管理使用者宣告] 對話方塊。
從 [轉換] 清單中,選取 [ExtractMailPrefix()]。
從 [參數 1] 清單中,選取 [user.userprincipalname]。
按一下 [檔案] 。
在 [以 SAML 設定單一登入] 頁面上的 [SAML 簽署憑證] 區段中,尋找 [同盟中繼資料 XML],然後選取 [下載] 來下載憑證,並將其儲存在電腦上。
在 [設定 SAP NetWeaver] 區段上,依據您的需求複製適當的 URL。
建立 Microsoft Entra 測試使用者
在本節中,您將建立名為 B.Simon 的測試使用者。
- 以至少是使用者管理員的身分登入 Microsoft Entra 系統管理中心。
- 瀏覽至 [身分識別]>[使用者]>[所有使用者]。
- 在畫面頂端選取 [新增使用者]>[建立新使用者]。
- 在 [使用者] 屬性中,執行下列步驟:
- 在 [顯示名稱] 欄位中輸入
B.Simon
。 - 在 [使用者主體名稱] 欄位中輸入 username@companydomain.extension。 例如:
B.Simon@contoso.com
。 - 選取 [顯示密碼] 核取方塊,然後記下 [密碼] 方塊中顯示的值。
- 選取 [檢閱 + 建立]。
- 在 [顯示名稱] 欄位中輸入
- 選取 [建立]。
指派 Microsoft Entra 測試使用者
在本節中,您會將 SAP NetWeaver 的存取權授與 B.Simon,讓她能夠使用單一登入。
- 以至少 雲端應用程式系統管理員 的身分登入 Microsoft Entra 系統管理中心。
- 瀏覽至 [身分識別]>[應用程式]>[企業應用程式]>[SAP NetWeaver]。
- 在應用程式的概觀頁面中尋找 [管理] 區段,然後選取 [使用者和群組]。
- 選取 [新增使用者],然後在 [新增指派] 對話方塊中選取 [使用者和群組]。
- 在 [使用者和群組] 對話方塊中,從 [使用者] 列表中選取 [B.Simon],然後按一下畫面底部的 [選取] 按鈕。 如果您預期將角色指派給使用者,則可以從 [選取角色] 下拉式清單中選取該角色。 如果未為此應用程式設定任何角色,您會看到已選取 [預設存取權] 角色。
- 在 [新增指派] 對話方塊中,按一下 [指派] 按鈕。
使用 SAML 設定 SAP NetWeaver
登入 SAP 系統並移至交易程式碼 SAML2。 它會開啟包含 SAML 組態畫面的新瀏覽器視窗。
若要設定信任的識別提供者 (Microsoft Entra ID) 的端點,請移至 [信任的提供者] 索引標籤。
按下 [新增],然後從操作功能表中選取 [上傳中繼資料檔案]。
上傳您下載的中繼資料檔案。
在下一個畫面中輸入別名名稱。 例如,輸入
aadsts
,然後按 [下一步] 繼續。確定 [摘要演算法] 應該是 SHA-256,而不需要任何變更,並且按 [下一步]。
在 [單一登入端點] 上,使用 [HTTP POST] 並且按 [下一步] 繼續。
在 [單一登入端點] 上,選取 [HTTPRedirect] 並且按 [下一步] 繼續。
在 [成品端點],按 [下一步] 繼續。
在 [驗證需求] 上,按一下 [完成]。
移至 [信任的提供者] 索引標籤>[識別身分同盟] (位於畫面底部)。 按一下 [編輯] 。
按一下 [識別身分同盟] 索引標籤 (視窗底部) 之下的 [新增]。
在快顯視窗中,從 [支援的 NameID 格式] 中選取 [未指定],然後按一下 [確定]。
提供使用者識別碼來源值作為判斷提示屬性,並提供使用者識別碼對應模式值作為電子郵件,且判斷提示屬性名稱作為
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
。請注意,[使用者識別碼來源] 和 [使用者識別碼對應模式] 值會決定 SAP 使用者與 Microsoft Entra 宣告之間的連結。
案例 1:SAP 使用者 Microsoft Entra 使用者對應。
SAP 的 NameID 詳細資料螢幕擷取畫面。
提及 Microsoft Entra ID 必要宣告的螢幕擷取畫面。
案例:根據在 SU01 中設定的電子郵件地址選取 SAP 使用者識別碼。 在此情況下,應針對每位需要 SSO 的使用者在 su01 中設定電子郵件識別碼。
SAP 的 NameID 詳細資料螢幕擷取畫面。
提及 Microsoft Entra ID 必要宣告的螢幕擷取畫面。
按一下 [儲存],然後按一下 [啟用] 以啟用識別提供者。
出現提示時,按一下 [確定]。
建立 SAP NetWeaver 測試使用者
在本節中,您要在 SAP NetWeaver 中建立名為 B.simon 的使用者。 請與您內部的 SAP 專家小組合作,或與貴組織的 SAP 夥伴合作,在 SAP NetWeaver 平台中新增使用者。
測試 SSO
啟用識別提供者 Microsoft Entra ID 後,請嘗試存取下列 URL 來檢查 SSO,確保不會出現輸入使用者名稱和密碼的提示。
https://<sapurl>/sap/bc/bsp/sap/it00/default.htm
(或) 使用下列 URL
https://<sapurl>/sap/bc/bsp/sap/it00/default.htm
注意
以實際的 SAP 主機名稱取代 sapurl。
上述 URL 應會帶您前往以下所述的畫面。 如果您能夠連到以下頁面,就表示 Microsoft Entra SSO 成功完成設定。
如果出現使用者名稱和密碼提示,您可以使用 URL 啟用追蹤來診斷問題:
https://<sapurl>/sap/bc/webdynpro/sap/sec_diag_tool?sap-client=122&sap-language=EN#
設定適用於 OAuth 的 SAP NetWeaver
SAP 記載的流程位於位置:NetWeaver 閘道服務啟用和 OAuth 2.0 範圍建立
移至 SPRO,並尋找 [啟用和維護服務]。
在此範例中,我們要使用 OAuth 將 OData 服務:
DAAG_MNGGRP
連線到 Microsoft Entra SSO。 使用技術服務名稱搜尋DAAG_MNGGRP
服務,如果尚未啟動則加以啟動 (在 ICF 節點索引標籤底下查看green
狀態)。 確定系統別名 (已連線的後端系統,也就是實際執行服務的位置) 是否正確。- 然後按一下頂端按鈕列上的 [OAuth]按鈕,並指派
scope
(保留所提供的預設名稱)。
- 然後按一下頂端按鈕列上的 [OAuth]按鈕,並指派
我們範例中的範圍是
DAAG_MNGGRP_001
。 這是從自動新增數字的服務名稱所產生。/IWFND/R_OAUTH_SCOPES
報表可以用來變更範圍的名稱,或以手動方式建立。注意
soft state status is not supported
訊息 – 可以忽略,並不會有問題。
建立 OAuth 2.0 用戶端的服務使用者
OAuth2 會使用
service ID
來代表使用者取得存取權杖。 OAuth 設計的重要限制:OAuth 2.0 Client ID
必須等同 OAuth 2.0 用戶端要求存取權杖時用於登入的username
。 因此,在我們的範例中,我們將註冊名稱為 CLIENT1 的 OAuth 2.0 用戶端。 必要條件是,相同名稱 (CLIENT1) 的用戶必須存在於 SAP 系統中,且我們將設定為供參考應用程式使用的使用者。註冊 OAuth 用戶端時,我們會使用
SAML Bearer Grant type
。注意
如需詳細資訊,請從這裡參閱 SAML 持有人權杖授與類型的 OAuth 2.0 用戶端註冊。
執行 T-Code
SU01
,以建立使用者 CLIENT1 作為System type
並指派密碼。 儲存密碼,因為您必須將認證提供給 API 程式設計人員,他們應以使用者名稱將它儲存至呼叫程式碼。 不應指派設定檔或角色。
使用建立精靈來註冊新的 OAuth 2.0 用戶端識別碼
若要註冊新的 OAuth 2.0 用戶端,請啟動 SOAUTH2 交易。 交易將會顯示已註冊的 OAuth 2.0 用戶端概觀。 選擇 [建立],為新的 OAuth 用戶端 (在此範例中稱為 CLIENT1) 啟動精靈。
移至 T-Code:SOAUTH2 並提供描述,然後按 [下一步]。
從下拉式清單中選取已新增的 SAML2 IdP – Microsoft Entra ID,然後儲存。
在範圍指派底下按一下 [新增],以新增先前建立的範圍:
DAAG_MNGGRP_001
按兩下 [完成]。
從 Azure AD 要求存取令牌
若要使用 Azure Active Directory (Azure AD) 作為識別提供者 (IdP) 向 SAP 系統要求存取令牌,請遵循下列步驟:
步驟 1:在 Azure AD 中註冊應用程式
- 登入 Azure 入口網站:流覽至 portal.azure.com Azure 入口網站。
- 註冊新的應用程式:
- 移至 [Azure Active Directory]。
- 選取 [應用程式註冊] > [新增註冊]。
- 填寫應用程式詳細數據,例如名稱、重新導向 URI 等。
- 按兩下 [註冊]。
- 設定 API 權限:
- 註冊之後,流覽至 「API 許可權」。
- 按兩下 [新增許可權],然後選取 [我的組織使用的 API]。
- 搜尋 SAP 系統或相關的 API,並新增必要的許可權。
- 授與管理員同意許可權。
步驟 2:建立客戶端密碼
- 流覽至已註冊的應用程式:移至 [憑證和秘密]。
- 建立新的客戶端密碼:
- 按兩下 [新增客戶端密碼]。
- 提供描述並設定到期期間。
- 按兩下 [新增],並記下客戶端密碼值,因為它需要驗證。
步驟 3:設定適用於 Azure AD 整合的 SAP 系統
- 存取 SAP 雲端平臺:登入您的 SAP Cloud Platform Cockpit。
- 設定信任設定:
- 移至 「安全性」 > 「信任設定」。
- 藉由從 Azure AD 匯入同盟元數據 XML,將 Azure AD 新增為受信任的 IdP。 這可以在 Azure AD 應用程式註冊的[端點] 區段中找到(在 [同盟元數據檔] 下)。
- 設定 OAuth2 用戶端:
- 在 SAP 系統中,使用從 Azure AD 取得的用戶端識別碼和用戶端密碼來設定 OAuth2 用戶端。
- 設定令牌端點和其他相關的 OAuth2 參數。
步驟 4:要求存取令牌
提示
請考慮使用 Azure API 管理 簡化 Azure、Power Platform、M365 等所有用戶端應用程式的 SAP 主體傳播程式,包括智慧令牌快取、安全令牌處理和治理選項,例如要求節流。 深入瞭解 AZURE 主體傳播 API 管理。 如果偏好使用 SAP Business Technology Platform,請參閱 這篇文章。
準備令牌要求:
- 使用下列詳細資料建構令牌要求:
- 權杖端點:這通常是
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
。 - 用戶端識別碼:來自 Azure AD 的應用程式(用戶端)標識碼。
- 用戶端密碼:來自 Azure AD 的用戶端密碼值。
- 範圍:必要範圍(例如
https://your-sap-system.com/.default
)。 - 授與類型:用於
client_credentials
伺服器對伺服器驗證。
- 權杖端點:這通常是
- 使用下列詳細資料建構令牌要求:
提出令牌要求:
- 使用 Postman 或文稿之類的工具,將 POST 要求傳送至令牌端點。
- 範例要求 (在 cURL 中):
curl -X POST \ https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id={client_id}&scope=https://your-sap-system.com/.default&client_secret={client_secret}&grant_type=client_credentials'
擷取存取令牌:
- 如果要求成功,回應將會包含存取令牌。 使用此存取令牌向 SAP 系統驗證 API 要求。
步驟 5:使用 API 要求的存取令牌
- 在 API 要求包含存取權杖:
- 針對 SAP 系統的每個要求,請在標頭中包含
Authorization
存取令牌。 - 範例標頭:
Authorization: Bearer {access_token}
- 針對 SAP 系統的每個要求,請在標頭中包含
後續步驟
- 設定Microsoft Entra SAP NetWeaver 以強制執行會話控件,以即時防止組織的敏感數據遭到外泄和滲透。 會話控件會從條件式存取延伸。 了解如何使用 Microsoft Defender for Cloud Apps 來強制執行工作階段控制項。
- 使用 Azure API 管理 設定 SAP 主體傳播 (OAuth2),以控管及保護從 Azure、Power Platform、Microsoft 365 和其他應用程式中的用戶端應用程式存取 SAP 系統的安全。 深入瞭解 AZURE 主體傳播 API 管理。