从 SAP OData 连接器中设置 Microsoft Entra ID、Azure API 管理和 SAP 以进行 SSO

您可以将 Power Platform SAP OData 连接器设置为使用 Microsoft Entra ID 凭据实现单一登录 (SSO) 到 SAP。 这样,您的用户就可以访问 Power Platform 解决方案中的 SAP 数据,而无需多次登录多个服务,同时还能履行其在 SAP 中的授权和指定角色。

本文将引导您完成该流程,包括在 SAP 和 Microsoft Entra ID 之间设置信任,以及配置 Azure API 管理以将 Microsoft Entra ID OAuth 令牌转换为用于对 SAP 进行 OData 调用的 SAML 令牌。

显示通过 Azure API 管理从 Power Platform 和 Copilot 流到 SAP 的流量的解决方案关系图。

您还可以在博文 SAP OData 连接器现在支持 OAuth2 和 SAP 主体传播中获得有关设置过程的更多见解和上下文!。

先决条件

  • SAP 实例
  • Azure API 管理资源

从 SAP 下载本地提供程序 SAML 元数据

要使用 SAML 2.0 在 SAP 和 Microsoft Entra ID 之间建立信任关系,请先从 SAP 下载元数据 xml 文件。

以 SAP 基础管理员角色在 SAP GUI 中执行这些步骤。

  1. 在 SAP GUI 中,运行事务 SAML2 以打开相关的 SAP 客户端相关向导,然后选择本地提供程序选项卡。

  2. 选择元数据,然后选择下载元数据。 您将在稍后步骤中将 SAP SAML 元数据上传到 Microsoft Entra ID 中。

  3. 记下符合 URI 的提供程序名称

备注

Microsoft Entra ID 要求该值与 URI 兼容。 如果提供者名称已设置并且不与 URI 兼容,请先咨询 SAP Basis 团队,然后再决定是否更改该名称。 更改提供者名称可能会破坏现有的 SAML 配置。 更改它的步骤超出了本文介绍的范围。 请咨询您的 SAML 基础团队以寻求指导。

有关更多信息,请参阅 SAP 的官方文档

将 SAP 元数据导入到 Microsoft Entra ID 企业应用程序

Azure 门户中以 Microsoft Entra ID 管理员身份执行以下步骤。

  1. 选择 Microsoft Entra ID>企业应用程序

  2. 选择新应用程序

  3. 搜索 SAP Netweaver

  4. 给企业应用程序命名,然后选择创建

  5. 转到单点登录,选择 SAML

  6. 选择上传元数据文件并选择您从 SAP 下载的元数据文件。

  7. 选择添加

  8. 回复 URL(断言使用者服务 URL)更改为 SAP OAuth 令牌终结点。 URL 采用格式 https://<SAP server>:<port>/sap/bc/sec/oauth2/token

  9. 登录 URL 更改为与 URI 兼容的值。 此参数未使用,并且可以设置为与 URI 兼容的任何值。

  10. 选择保存

  11. 属性和声明下,选择编辑

  12. 确认声明名称唯一用户标识符(名称 ID)设置为 user.userprincipalname [nameid=format:emailAddress]

  13. SAML 证书下,针对证书 (Base64)联合元数据 XML 选择下载

将 Microsoft Entra ID 配置为 SAP 中 OAuth 2.0 的受信任身份供应程序

  1. 按照Microsoft Entra ID 文档中关于 SAP NetWeaver 和 OAuth2 部分的步骤操作。

  2. 在 SAP 中创建 OAuth2 客户端后,请返回本文。

更多详情,请参阅 SAP 有关 SAP NETWEAVER 的官方文档。 请注意,您必须是 SAP 管理员才能访问这些信息。

创建表示 Azure API 管理资源的 Microsoft Entra ID 应用程序

设置 Microsoft Entra ID 应用程序,以授予对 Microsoft Power Platform SAP OData 连接器的访问权限。 此应用程序允许 Azure API 管理资源将 OAuth 令牌转换为 SAML 令牌。

Azure 门户中以 Microsoft Entra ID 管理员身份执行以下步骤。

  1. 选择 Microsoft Entra ID>应用注册>新建注册

  2. 输入名称,然后选择注册

  3. 选择证书和密码>新建客户端密码

  4. 输入描述,然后选择添加

  5. 请复制此密钥并将其保存到安全位置。

  6. 选择 API 权限>添加权限

  7. 选择 Microsoft Graph>委托的权限

  8. 搜索并选择 openid

  9. 选择添加权限

  10. 选择身份验证>添加一个平台>Web

  11. 重定向 URI 设置为 https://localhost:44326/signin-oidc

  12. 选择访问令牌ID 令牌,然后选择配置

  13. 选择公开 API

  14. 应用程序 ID URI 旁边,选择添加

  15. 接受默认值并选择保存

  16. 选择添加范围

  17. 范围名称设置为 user_impersonation

  18. 谁可以同意? 设置为管理员和用户

  19. 选择添加范围

  20. 复制应用程序(客户端)ID

授权 Azure API 管理资源使用 Microsoft Entra ID 企业应用程序访问 SAP Netweaver

  1. 当创建 Microsoft Entra ID 企业应用程序时,它会创建一个匹配的应用注册。 找到与为 SAP NetWeaver 创建的 Microsoft Entra ID 企业应用程序相匹配的应用程序注册

  2. 选择公开 API>添加客户端应用程序

  3. 将 Azure API 管理实例 Microsoft Entra ID 应用程序注册的应用程序(客户端)ID 粘贴到客户端 ID 中。

  4. 选择 user_impersonation 范围,然后选择添加应用程序

授权 Microsoft Power Platform SAP OData 连接器访问 Azure API 管理公开的 API

  1. 在 Azure API 管理的 Microsoft Entra ID 应用程序注册中,选择公开 API> 在授权客户端应用程序下添加 Power Platform SAP OData 连接器 6bee4d13-fd19-43de-b82c-4b6401d174c3 的客户端 ID。

  2. 选择 user_impersonation 范围,然后选择保存

配置 SAP OAuth

在 SAP 中创建 OAuth 2.0 客户端,以允许 Azure API 管理代表用户获取令牌。

有关详细信息,请参阅 SAP 的官方文档

以 SAP 基础管理员角色在 SAP GUI 中执行这些步骤。

  1. 运行事务 SOAUTH2

  2. 选择创建

  3. 客户端 ID 页上:

    • 对于 OAuth 2.0 客户端 ID,选择 SAP 系统用户。
    • 输入说明,然后选择下一步
  4. 客户端身份验证页面上,选择下一步

  5. 授权类型设置页面上:

    • 对于受信任的 OAuth 2.0 IDP,请选择 Microsoft Entra ID 条目。
    • 选择允许刷新,然后选择下一步
  6. 分配范围页面上,选择添加,选择 Azure API 管理使用的 OData 服务(例如 ZAPI_BUSINESS_PARTNER_0001),然后选择下一步

  7. 选择完成

配置 Azure API 管理

将 SAP OData XML 元数据导入 Azure API 管理实例。 然后,应用 Azure API 管理策略来转换令牌。

  1. 打开 Azure API 管理实例,然后按照步骤创建 SAP OData API。

  2. API 下,选择命名值

  3. 添加以下键/值对:

价值
AADSAPResource SAP 本地提供程序 URI
AADTenantId 您的租户 GUID
APIMAADRegisteredAppClientId Microsoft Entra ID 应用程序 GUID
APIMAADRegisteredAppClientSecret 之前步骤中的客户端密码
SAPOAuthClientID SAP 系统用户
SAPOAuthClientSecret SAP 系统用户密码
SAPOAuthRefreshExpiry 令牌刷新到期
SAPOAuthScope 在 SAP 配置期间选择的 OData OAuth 范围
SAPOAuthServerAddressForTokenEndpoint Azure API 管理调用以执行令牌获取的 SAP 终结点

备注

请注意,SAP SuccessFactors 的设置略有不同。 有关详细信息,请参阅适用于 SAP SuccessFactors 的 Azure API 管理策略

应用 Azure API 管理令牌策略

使用 Azure API 管理策略将 Microsoft Entra ID 颁发的令牌转换为 SAP NetWeaver 接受的令牌。 这是使用 OAuth2SAMLBearer 流完成的。 有关详细信息,请参阅 SAP 的官方文档

  1. 从 Microsoft 的官方 GitHub 页面复制 Azure API 管理策略

  2. 打开 Azure 门户

  3. 转到 Azure API 管理资源。

  4. 选择 API,然后选择创建的 OData API。

  5. 选择 所有操作

  6. 入站处理下,选择策略 </>

  7. 删除现有策略并粘贴复制的策略

  8. 选择保存