使用 Microsoft Entra ID 配置 SAP NetWeaver 进行单一登录

本文介绍如何将 SAP NetWeaver 与 Microsoft Entra ID 集成。 将 SAP NetWeaver 与 Microsoft Entra ID 集成后,可以:

  • 在 Microsoft Entra ID 中控制谁有权访问 SAP NetWeaver。
  • 让用户能够使用其 Microsoft Entra 帐户自动登录到 SAP NetWeaver。
  • 在中心位置管理帐户。

先决条件

本文中概述的方案假定你已具备以下先决条件:

  • 已启用 SAP NetWeaver 单一登录 (SSO) 的订阅。
  • SAP NetWeaver V7.20 或更高版本

方案描述

  • SAP NetWeaver 支持 SAML(SP 发起的 SSO)和 OAuth。 本文中,您将在测试环境中配置并测试 Microsoft Entra SSO。

注意

此应用程序的标识符是一个固定字符串值,因此只能在一个租户中配置一个实例。

注意

根据组织的要求在 SAML 或 OAuth 中配置应用程序。

要配置 SAP NetWeaver 与 Microsoft Entra ID 的集成,需要从库中将 SAP NetWeaver 添加到托管 SaaS 应用列表。

  1. 以至少云应用程序管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到 Entra ID>企业应用>新应用程序
  3. 在“从库中添加”部分的搜索框中,键入 SAP NetWeaver
  4. 在结果面板中选择“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,请执行以下步骤:

  1. 配置 Microsoft Entra SSO ,使用户能够使用此功能。
    1. 创建 Microsoft Entra 测试用户,以使用 B.Simon 测试 Microsoft Entra 单一登录功能。
    2. 分配 Microsoft Entra 测试用户 ,使 B.Simon 能够使用 Microsoft Entra 单一登录。
  2. 使用 SAML 配置 SAP NetWeaver 以在应用程序端配置 SSO 设置。
    1. 创建 SAP NetWeaver 测试用户,以便在 SAP NetWeaver 中创建与 B.Simon 对应的用户,并将该用户链接到其在 Microsoft Entra 中的表示形式。
  3. 测试 SSO 以验证配置是否正常工作。
  4. 配置适用于 OAuth 的 SAP NetWeaver 以在应用程序端配置 OAuth 设置。
  5. 从 Microsoft Entra ID 请求访问令牌 ,以使用 Microsoft Entra ID 作为标识提供者(IdP)。

配置 Microsoft Entra SSO

在本部分,你将启用 Microsoft Entra 单一登录。

若要配置 SAP NetWeaver 的 Microsoft Entra 单一登录,请执行以下步骤:

  1. 打开新的 Web 浏览器窗口,以管理员身份登录到 SAP NetWeaver 公司站点

  2. 请确保“http”和“https”服务处于活动状态,并且在 SMICM“T-Code”中分配了相应的端口 。

  3. 登录到 SAP 系统 (T01) 的业务客户端(需要 SSO)并激活 HTTP 安全会话管理。

    1. 转到事务代码“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
      

      注意

      根据组织要求调整上述参数,以上参数仅作为指示给出。

    2. 如果需要调整参数,请在 SAP 系统的实例/默认配置文件中调整参数,然后重启 SAP 系统。

    3. 双击相关客户端以启用 HTTP 安全会话。

      HTTP 安全会话

    4. 激活以下 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)
      
  4. 转到 SAP 系统 [T01/122] 的业务客户端中的事务代码“SAML2”。 它将在浏览器中打开用户界面。 在此示例中,我们假定 122 为 SAP 业务客户端。

    事务代码

  5. 提供用户名和密码以在用户界面中输入,然后选择“ 编辑”。

    用户名和密码

  6. 提供程序名称 从 T01122 替换为 http://T01122 并选择“保存”。

    注意

    默认情况下,提供程序名称采用 <sid><client> 格式,但 Microsoft Entra ID 需要格式为 <protocol>://<name> 的名称,建议将提供程序名称保留为 https://<sid><client> 以允许在 Microsoft Entra ID 中配置多个 SAP NetWeaver ABAP 引擎。

    多个 SAP NetWeaver ABAP 引擎

  7. 生成服务提供程序元数据:- 在 SAML 2.0 用户界面上配置 本地提供程序受信任的提供程序 设置后,下一步是生成服务提供商的元数据文件(这将包含 SAP 中的所有设置、身份验证上下文和其他配置)。 此文件生成后,将此文件上传到 Microsoft Entra ID。

    生成服务提供程序元数据

    1. 转到“本地提供程序”选项卡

    2. 选择 元数据

    3. 将生成的“元数据 XML 文件”保存在计算机上,并将其上传到“基本 SAML 配置”部分,以便在 Azure 门户中自动填充“标识符”和“回复 URL”值 。

按照以下步骤启用 Microsoft Entra SSO。

  1. 以至少云应用程序管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到 Entra ID>Enterprise 应用>SAP NetWeaver 应用程序集成页,找到 “管理 ”部分,然后选择 “单一登录”。

  3. 在“选择单一登录方法”页上选择“SAML” 。

  4. “使用 SAML 设置单个 Sign-On” 页面上,选择 基本 SAML 配置 的铅笔图标来编辑设置。

    编辑基本 SAML 配置

  5. 如果要在 IDP 发起的模式下配置应用程序,请在“基本 SAML 配置部分”中执行以下步骤 :

    1. 选择“上传元数据文件”以上传之前获取的服务提供商元数据文件

    2. 选择 文件夹徽标 以选择元数据文件,然后选择“ 上传”。

    3. 成功上传元数据文件后, 标识符回复 URL 值会自动填充在 “基本 SAML 配置” 部分文本框中,如下所示:

    4. 在“登录 URL” 文本框中,使用以下模式键入 URL:

    注意

    某些客户遇到了为其实例配置的回复 URL 不正确的错误。 如果你收到了任何此类错误,请使用这些 PowerShell 命令。 首先使用回复 URL 更新应用程序对象中的回复 URL,然后更新服务主体。 使用 Get-MgServicePrincipal 获取服务主体 ID 值。

    $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>"
    
  6. SAP NetWeaver 应用程序需要特定格式的 SAML 断言,因此,需要在 SAML 令牌属性配置中添加自定义属性映射。 以下屏幕截图显示了默认属性的列表。 选择 “编辑” 图标以打开“用户属性”对话框。

    编辑属性

  7. 在“用户属性” 对话框的“用户声明” 部分中,按上图所示配置 SAML 令牌属性,并执行以下步骤:

    1. 选择 “编辑”图标 以打开 “管理用户声明 ”对话框。

      编辑图标

      图像

    2. 从“转换”列表中,选择“ExtractMailPrefix()”

    3. 从“参数 1”列表中选择“user.userprincipalname” 。

    4. 选择“ 保存”。

  8. 在“使用 SAML 设置单一登录”页的“SAML 签名证书”部分中找到“联合元数据 XML”,选择“下载”以下载该证书并将其保存在计算机上 。

    证书下载链接

  9. 在“设置 SAP NetWeaver”部分,根据要求复制相应的 URL。

    复制配置 URL

创建和分配 Microsoft Entra 测试用户

创建和分配用户帐户的快速入门中遵循准则,以创建名为 B.Simon 的测试用户帐户。

使用 SAML 配置 SAP NetWeaver

  1. 登录到 SAP 系统并转到事务代码 SAML2。 这将打开带有 SAML 配置屏幕的新浏览器窗口。

  2. 要为受信任的标识提供程序 (Microsoft Entra ID) 配置终结点,请转到“受信任的提供程序”选项卡。

    配置单 Sign-On 受信任的提供程序

  3. 按“添加”,然后从上下文菜单选择“上传元数据文件”

    配置 Sign-On 2

  4. 上传已下载的元数据文件。

    配置单 Sign-On 3

  5. 在下一个屏幕中,键入别名。 例如,键入 aadsts,然后按“下一步”以继续操作。

    配置单个 Sign-On 4

  6. 请确保“摘要算法”应为“SHA-256”且无需进行任何更改,然后按“下一步”

    配置单项 Sign-On 5

  7. 在“单一登录终结点”上使用“HTTP POST”,然后选择“下一步”以继续操作。

    单一配置 Sign-On 6

  8. 单一注销终结点 上,选择 “HTTPRedirect ”,然后选择“ 下一步 ”以继续。

    配置单个 Sign-On 7

  9. 工件端点上,按“下一步”继续。

    配置单 Sign-On 8

  10. 身份验证要求上,选择“ 完成”。

    单独配置 Sign-On 9

  11. 转到选项卡“受信任的提供程序”“联合身份验证”(屏幕底部)>。 选择 “编辑”。

    配置单个 Sign-On 10

  12. “联合身份验证”选项卡(底部窗口)下选择“添加”。

    配置单项 Sign-On 11

  13. 在弹出窗口中,从支持的 NameID 格式中选择“未指定”,然后选择“确定”。

    配置单个 Sign-On 12

  14. 将“用户 ID 源”值指定为“断言属性”,将“用户 ID 映射模式”值指定为“电子邮件”,并将“断言属性名称”指定为

    配置单一登录

  15. 请注意,“用户 ID 源”和“用户 ID 映射模式”值确定 SAP 用户与 Microsoft Entra 声明之间的关联。

方案:SAP 用户到 Microsoft Entra 用户映射。

  1. 从 SAP 获取 NameID 详细信息的屏幕截图。

    配置单一 Sign-On 13

  2. 提及 Microsoft Entra ID 中的所需声明的屏幕截图。

    配置单 Sign-On 14

    方案:根据 SU01 中配置的电子邮件地址选择 SAP 用户 ID。 在这种情况下,应在 su01 中为每个需要 SSO 的用户配置电子邮件 ID。

    1. 从 SAP 获取 NameID 详细信息的屏幕截图。

      配置单项 Sign-On 15

    2. 提及 Microsoft Entra ID 中的所需声明的屏幕截图。

    单一配置 Sign-On 16

  3. 选择“保存”,然后选择“启用”,以启用标识提供者。

    单一配置 Sign-On 17

  4. 出现提示后,选择 “确定 ”。

    配置单个 Sign-On 18

创建 SAP NetWeaver 测试用户

在本部分,你将在 SAP NetWeaver 中创建名为 B.Simon 的用户。 请与内部 SAP 专家团队合作,或与组织 SAP 合作伙伴合作,以便在 SAP NetWeaver 平台中添加用户。

测试 SSO

  1. 激活标识提供者Microsoft Entra ID 后,请尝试访问以下 URL 以检查 SSO,确保没有提示输入用户名和密码。

    https://<sapurl>/sap/bc/bsp/sap/it00/default.htm

    (或者)使用以下 URL

    https://<sapurl>/sap/bc/bsp/sap/it00/default.htm

    注意

    将 sapurl 替换为实际的 SAP 主机名。

  2. 单击上面的 URL 应转到下面所述的屏幕。 如果能够访问以下页面,Microsoft Entra SSO 设置已成功完成。

    测试单一登录

  3. 如果出现用户名和密码提示,可以使用 URL 启用跟踪来诊断问题:

    https://<sapurl>/sap/bc/webdynpro/sap/sec_diag_tool?sap-client=122&sap-language=EN#

配置 SAP NetWeaver 的 OAuth

  1. SAP 记录的流程可以在以下位置找到:NetWeaver 网关服务启用和 OAuth 2.0 范围设置

  2. 转到“SPRO”并找到“激活和维护服务”。

    激活和维护服务

  3. 在本示例中,我们使用 OAuth 将 OData 服务 DAAG_MNGGRP 连接到 Microsoft Entra SSO。 使用技术服务名称搜索服务 DAAG_MNGGRP,如果该服务尚未激活,请将其激活(查看“ICF 节点”选项卡下的 green 状态)。 确保系统别名(实际运行服务的已连接后端系统)正确。

    OData 服务

    • 然后选择顶部按钮栏上的下推按钮 OAuth 并分配 scope (保留提供的默认名称)。
  4. 例如,范围是 DAAG_MNGGRP_001。 它是通过自动添加数字从而基于服务名称生成的。 报告 /IWFND/R_OAUTH_SCOPES 可用于更改范围名称或手动创建。

    配置 OAuth

    注意

    消息 soft state status isn't supported – 可以忽略,因为未出现问题。

为 OAuth 2.0 客户端创建服务用户

  1. OAuth2 使用 service ID 来代表最终用户获取访问令牌。 OAuth 设计的重要限制:OAuth 2.0 Client ID 必须与 OAuth 2.0 客户端在请求访问令牌时用于登录的 username 相同。 因此,对于我们的示例,我们将使用名称CLIENT1注册 OAuth 2.0 客户端。 作为先决条件,SAP 系统中必须存在同名 (CLIENT1) 的用户,并且我们要将该用户配置为由被引用的应用程序使用。

  2. 注册 OAuth 客户端时,我们将使用 SAML Bearer Grant type

    注意

    有关更多详细信息,请参阅关于 SAML 持有者授予类型的 OAuth 2.0 客户端注册的说明 此处

  3. 执行 T-Code SU01 将用户 CLIENT1 创建为 System type,并分配密码。 将密码保存好以便向 API 程序员提供凭据,程序员应将其与用户名一起保存到调用代码中。 不要分配配置文件或角色。

使用创建向导注册新的 OAuth 2.0 客户端 ID

  1. 要注册新的 OAuth 2.0 客户端,请启动事务 SOAUTH2。 该事务将显示有关已注册的 OAuth 2.0 客户端的概述。 选择“创建”,针对本示例中名为 CLIENT1 的新 OAuth 客户端启动向导。

  2. 转到 T-Code: SOAUTH2 并提供说明,然后选择 下一步

    SOAUTH2

    OAuth 2.0 客户端 ID

  3. 从下拉列表中选择已添加的“SAML2 IdP – Microsoft Entra ID”,然后单击“保存”。

    SAML2 IdP – Microsoft Entra ID 1

    SAML2 IdP – Microsoft Entra ID 2

    SAML2 IdP – Microsoft Entra ID 3

  4. 请在范围分配下选择添加,以添加之前创建的范围:DAAG_MNGGRP_001

    范围

    范围分配

  5. 选择 “完成”。

从 Microsoft Entra ID 请求访问令牌

若要使用 Microsoft Entra ID(前称 Azure AD)作为标识提供者(IdP)从 SAP 系统请求访问令牌,请执行以下步骤:

步骤 1:在 Microsoft Entra ID 中注册应用程序

  1. 登录到 Azure 门户:在 portal.azure.com 导航到 Azure 门户。
  2. 注册新应用程序
    • 转到“Microsoft Entra ID”。
    • 选择“应用注册”>“新建注册”。
    • 填写应用程序详细信息,例如名称、重定向 URI 等。
    • 选择“注册”。
  3. 配置 API 权限
    • 注册后,导航到“API 权限”。
    • 选择“添加权限”,然后选择“我的组织使用的 API”。
    • 搜索 SAP 系统或相关 API 并添加所需的权限。
    • 为权限授予管理员同意。

步骤 2:创建客户端密码

  1. 导航到已注册的应用程序:转到“证书和机密”。
  2. 创建新的客户端密码
    • 选择“新建客户端密码”。
    • 输入说明并设置有效期。
    • 选择“添加”并记下身份验证所需的客户端机密值。

步骤 3:为 Microsoft Entra ID 集成配置 SAP 系统

  1. 访问 SAP Cloud Platform:登录到 SAP Cloud Platform Cockpit。
  2. 设置信任配置
    • 转到“安全性”>“信任配置”。
    • 通过从 Microsoft Entra ID 导入联合元数据 XML,将 Microsoft Entra ID 添加为受信任的 IdP。 这可以在 Microsoft Entra ID 应用注册的“终结点”部分(位于联合元数据文档下)中找到。
  3. 配置 OAuth2 客户端
    • 在 SAP 系统中,使用从 Microsoft Entra ID 获取的客户端 ID 和客户端机密配置 OAuth2 客户端。
    • 设置令牌终结点和其他相关的 OAuth2 参数。

步骤 4:请求访问令牌

提示

请考虑使用 Azure API 管理简化 Azure、Power Platform、Microsoft 365 等所有客户端应用的 SAP 主体传播过程,包括智能令牌缓存、安全令牌处理和管理选项(例如请求限制)。 详细了解 Azure API 管理中的 SAP Principal Propagation 机制。 如果首选 SAP Business Technology Platform,请参阅 本文

  1. 准备令牌请求:

    • 使用以下详细信息构建令牌请求:
      • 令牌终结点:这通常是 https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
      • 客户端 ID:Microsoft Entra ID 中的应用程序(客户端)ID。
      • 客户端密码:来自Microsoft Entra ID 的客户端机密值。
      • 范围:所需的范围(例如 https://your-sap-system.com/.default, )。
      • 授予类型:用于 client_credentials 服务器间身份验证。
  2. 发出令牌请求:

    • 使用 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'
      
  3. 提取访问令牌

    • 如果请求成功,响应将包含访问令牌。 使用此访问令牌对 SAP 系统的 API 请求进行身份验证。

步骤 5:将访问令牌用于 API 请求

  1. 在 API 请求中包含访问令牌
    • 每次向 SAP 系统发出请求时,请在 Authorization 标头中包含访问令牌。
    • 示例标头:
      Authorization: Bearer {access_token}
      

为 SAP NetWeaver 配置 SAML2 和 OAuth2 的企业应用程序,以同时支持这两种协议。

若要并行使用 SAML2 进行 SSO 和 OAuth2 进行 API 访问,可以在两种协议的 Microsoft Entra ID 中配置相同的企业应用。

典型的设置默认为 SAML2 进行 SSO 和 OAuth2 进行 API 访问。

Azure 门户屏幕截图,其中突出显示了用于并行使用 SAML2 和 OAuth2 的配置。