使用 gx64krb5 将 Kerberos 用于单一登录 (SSO) 到 SAP BW

本文介绍如何使用 gx64krb5 将 SAP Business Warehouse (BW) 数据源配置为从Power BI 服务启用单一登录(SSO)。

重要

Microsoft允许你使用安全网络通信(SNC)库(如 gx64krb5)创建连接,但不支持这些配置。 此外,SAP 不再支持 Power BI 中用于本地数据网关的 gx64krb5,与 CommonCryptoLib 相比,对其进行配置使之适用于网关所需的步骤要复杂得多。 因此,Microsoft 建议改为使用 CommonCryptoLib。 有关详细信息,请参阅 SAP 备注 352295。 请注意,gx64krb5 不允许建立从数据网关到 SAP BW 消息服务器的 SSO 连接;只允许建立与 SAP BW 应用程序服务器的连接。 如果将 CommonCryptoLib 用作 SNC 库,则不存在此限制。 有关如何使用 CommonCryptoLib 配置 SSO 的详细信息,请参阅使用 CommonCryptoLib 为 SSO 配置 SAP BW。 使用 CommonCryptoLib 或 gx64krb5 作为 SNC 库,但两者不能同时使用。 不要同时完成两个库的配置步骤。

注意

不支持同一网关服务器上配置两个库(sapcrypto 和 gx64krb5)。 不建议在同一网关服务器上配置两个库,因为这样做会导致库混用。 如果要同时使用这两个库,请完全分离网关服务器。 例如,为服务器 A 配置 gx64krb5,并为服务器 B 配置 sapcrypto。请记住,不支持使用 gx64krb5 的服务器 A 上的任何故障,因为 SAP 和 Microsoft 不再支持 gx64krb5。

本指南非常全面;如果已完成一些所述步骤,可以跳过这些步骤。 例如,你可能已使用 gx64krb5 配置了适用于 SSO 的 SAP BW 服务器。

在网关计算机和 SAP BW 服务器上设置 gx64krb5

客户端和服务器必须使用 gx64krb5 库才能通过网关完成 SSO 连接。 也就是说,客户端和服务器都必须使用相同的 SNC 库。

  1. SAP Note 2115486 下载 gx64krb5.dll(需要是 SAP 用户)。 确保你使用的版本至少是 1.0.11。 如果在尝试通过网关进行 SSO 连接之前,需要在 SAP GUI 中测试 SSO 连接,也可以下载 gsskrb5.dll(库的 32 位版本)(建议)。 在 SAP GUI 中测试需要使用 32 位版本,因为 SAP GUI 仅限于 32 位。

  2. 将 gx64krb5.dll 放在网关计算机上网关服务用户可访问的位置。 如果要使用 SAP GUI 测试 SSO 连接,还需要将 gsskrb5.dll 的副本放在计算机上,并将 SNC_LIB 环境变量设置为指向它。 网关服务用户和服务用户将模拟的 Active Directory (AD) 用户均需要 gx64krb5.dll 的副本的读取和执行权限。 建议向经过身份验证的用户组授予对 .dll 文件的权限。 出于测试目的,还可以向网关服务用户和用于测试的 AD 用户显式授予这些权限。

  3. 如果尚未使用 gx64krb5.dll 配置用于 SSO 的 BW 服务器,则将 .dll 的另一个副本放在 SAP BW 服务器计算机上 SAP BW 服务器可访问的位置。

    有关配置 gx64krb5.dll 以便与 SAP BW 服务器一起使用的详细信息,请参阅 SAP 文档(需要 SAP 用户)。

  4. 在客户端和服务器计算机上,设置 SNC_LIB 和 SNC_LIB_64 环境变量 :

    • 如果使用 gsskrb5.dll,请将 SNC_LIB 变量设置为其绝对路径。
    • 如果使用 gx64krb5.dll,请将 SNC_LIB_64 变量设置为其绝对路径。

在 BW 服务器上配置 SAP BW 服务用户并启用 SNC 通信

如果尚未使用 gx64krb5 配置用于 SNC 通信(例如 SSO)的 SAP BW 服务器,请完成本部分。

注意

本部分假定你已经为 BW 创建了一个服务用户,并将适当的 SPN 绑定到该用户(即,以 SAP/ 开头的名称)。

  1. 授予服务用户访问 SAP BW 应用程序服务器的权限:

    1. 在 SAP BW 服务器计算机上,将服务用户添加到“本地管理员”组。 打开“计算机管理”程序,然后确定服务器的“本地管理员”组。

      “计算机管理”程序

    2. 双击“本地管理员”组,然后选择“ 添加 ”以将服务用户添加到该组。

    3. 选择“检查姓名”以确保输入的名称正确无误,然后选择“确定” 。

  2. 将 SAP BW 服务器的服务用户设置为在 SAP BW 服务器计算机上启动 SAP BW 服务器服务的用户:

    1. 打开“运行”,然后输入“Services.msc” 。

    2. 找到与 SAP BW 应用程序服务器实例相对应的服务,右键单击该服务,然后选择“属性”。

      服务的屏幕截图,突出显示属性

    3. 切换到 “登录 ”选项卡,并将用户更改为 SAP BW 服务用户。

    4. 输入用户的密码,然后选择“ 确定”。

  3. 在 SAP Logon 中登录服务器,并使用 RZ10 事务设置以下配置文件参数:

    1. 将 snc/identity/as 配置文件参数设置为:p:<已创建的 SAP BW 服务用户>。 例如,p:BWServiceUser@MYDOMAIN.COM。 请注意, p: 位于服务用户的用户主体名称(UPN)之前,而不是 p:CN=,在将 CommonCryptoLib 用作 SNC 库时,P 位于 UPN 前面。

    2. 将 snc/gssapi_lib 配置文件参数设置为 <BW 服务器上 gx64krb5.dll 的路径>。 将库放在 SAP BW 应用程序服务器可以访问的位置。

    3. 设置以下额外加配置文件参数,并根据需要更改值。 最后五个选项使客户端无需配置 SNC 即可使用 SAP Logon 连接到 SAP BW 服务器。

      设置
      snc/data_protection/max 3
      snc/data_protection/min 1
      snc/data_protection/use 9
      snc/accept_insecure_cpic 1
      snc/accept_insecure_gui 1
      snc/accept_insecure_r3int_rfc 1
      snc/accept_insecure_rfc 1
      snc/permit_insecure_start 1
    4. 将 snc/enable 属性设置为 1。

  4. 设置这些配置文件参数后,在服务器计算机上打开 SAP 管理控制台并重启 SAP BW 实例。

    如果服务器无法启动,请确认已正确设置了配置文件参数。 有关配置文件参数设置的详细信息,请参阅 SAP 文档。 还可参阅本文中的疑难解答一节。

将 SAP BW 用户映射到 Active Directory 用户

如果尚未这样做,请将 AD 用户映射到 SAP BW 应用程序服务器用户,并在 SAP 登录中测试 SSO 连接。

  1. 使用 SAP Logon 登录 SAP BW 服务器。 运行事务 SU01。

  2. 关于“用户”,请输入要为其启用 SSO 连接的 SAP BW 用户。 选择 SAP Logon 窗口左上角附近的“编辑”图标(笔形图标)。

    SAP BW 用户维护屏幕

  3. 选择“SNC”选项卡。在 SNC 名称输入框中,输入 p:<你的 Active Directory 用户>@<你的域>。 对于 SNC 名称, p: 必须位于 AD 用户的 UPN 前面。 请注意,UPN 区分大小写。

    指定的 AD 用户应属于要为其启用对 SAP BW 应用程序服务器的 SSO 访问权限的人员或组织。 例如,如果要为用户 testuser@TESTDOMAIN.COM 启用 SSO 访问权限,请输入 testuser@TESTDOMAIN.COM。

    SAP BW 维护用户屏幕

  4. 选择屏幕左上角附近的“保存”图标(软盘图像)。

通过 SSO 测试登录

验证是否可以使用 SAP Logon through SSO 作为已启用 SSO 访问权限的 AD 用户登录到服务器:

  1. 作为刚刚启用 SSO 访问权限的 AD 用户,请登录到安装了 SAP 登录的域中的计算机。 启动 SAP Logon,并创建新连接。

  2. 将之前下载的gsskrb5.dll文件复制到登录的计算机上的某个位置。 将 SNC_LIB 环境变量设置为此位置的绝对路径。

  3. 启动 SAP 登录并创建新的连接。

  4. 在“创建新系统条目”屏幕中,选择“用户指定的系统”,然后选择“下一步” 。

    新建系统条目屏幕

  5. 在下一屏上填写相应的详细信息,包括应用程序服务器、实例编号和系统 ID。 然后选择“完成”。

  6. 右键单击新的连接,依次选择“属性”、“网络”选项卡 。

  7. 在“SNC 名称”框中,输入 p:>SAP BW 服务用户的 UPN<。 例如,p:BWServiceUser@MYDOMAIN.COM。 选择“确定”。

    系统条目属性屏幕

  8. 双击刚才创建的连接,尝试与 SAP BW 服务器建立 SSO 连接。

    如果连接成功,则进入下一部分。 否则,请查看本文档中先前的步骤,确保它们已正确完成,或查看故障排除部分。 如果在此上下文中无法通过 SSO 连接到 SAP BW 服务器,则无法在网关上下文中使用 SSO 连接到 SAP BW 服务器。

将注册表项添加到网关计算机

将所需的注册表项添加到安装了网关的计算机的注册表中,并添加到要从 Power BI Desktop 连接的计算机。 若要添加这些注册表项,请运行以下命令:

  • REG ADD HKLM\SOFTWARE\Wow6432Node\SAP\gsskrb5 /v ForceIniCredOK /t REG_DWORD /d 1 /f

  • REG ADD HKLM\SOFTWARE\SAP\gsskrb5 /v ForceIniCredOK /t REG_DWORD /d 1 /f

将新的 SAP BW 应用程序服务数据源添加到 Power BI 服务,或编辑现有数据源

  1. 在数据源配置窗口中,与从 Power BI Desktop 登录到 SAP BW 服务器一样,输入 SAP BW 应用程序服务器的“主机名”、“系统编号”和”客户端 ID” 。

  2. 在“SNC 合作伙伴名称”字段中,输入 p:<映射到 SAP BW 服务用户的 SPN>。 例如,如 SPN 为 SAP/BWServiceUser@MYDOMAIN.COM,则应在“SNC 合作伙伴名称”字段中输入 p:SAP/BWServiceUser@MYDOMAIN.COM。

  3. 对于 SNC 库,请选择“自定义”选项,并在网关计算机上提供 GX64KRB5.DLL 或 GSSKRB5.DLL 的绝对路径。

  4. 选择“通过 Kerberos 使用 SSO 执行 DirectQuery 查询”,然后选择“应用” 。 如果测试连接不成功,请验证先前的设置和配置步骤是否已正确完成。

  5. 运行 Power BI 报表

故障排除

排查 gx64krb5 配置问题

如果遇到以下任何问题,请按照以下步骤对 gx64krb5 安装和 SSO 连接进行故障排除:

  • 完成 gx64krb5 安装步骤时遇到错误。 例如,更改配置文件参数后,SAP BW 服务器无法启动。 查看服务器日志(服务器计算机上的 …work\dev_w0),解决这些错误。

  • 由于登录失败,无法启动 SAP BW 服务。 设置 SAP BW“启动”用户时,可能提供了错误密码。 通过在 AD 环境中的计算机上以 SAP BW 服务用户身份登录来验证密码。

  • 你会收到有关基础数据源凭据(例如 SQL Server)的错误,这会阻止服务器启动。 验证是否已向服务用户授予对 SAP BW 数据库的访问权限。

  • 收到以下消息:(GSS-API) 指定的目标未知或无法访问。 此错误通常意味着你指定了错误的 SNC 名称。 在客户端应用程序中,确保在服务用户的 UPN 之前,仅使用“p:”,而不是“p:CN=” 。

  • 收到以下消息:(GSS-API) 提供的名称无效。 确保“p:”是服务器的 SNC 标识配置文件参数的值。

  • 收到以下消息:(SNC 错误)找不到指定的模块。 此错误通常是由于将 gx64krb5.dll 置于需要提升的权限(../管理员权限)才能访问的位置所导致的。

网关连接问题故障排除

  1. 检查网关日志。 打开网关配置应用程序并选择“诊断”,然后选择导出日志”。 最新错误位于检查的任何日志文件的结尾。

    突出显示诊断的本地数据网关应用程序

  2. 打开 SAP BW 跟踪并查看生成的日志文件。 可使用多种不同类型的 SAP BW 跟踪(例如 CPIC 跟踪):

    a. 若要启用 CPIC 跟踪,请设置两个环境变量:CPIC_TRACE 和 CPIC_TRACE_DIR。

    第一个变量设置跟踪级别,第二个变量设置跟踪文件目录。 该目录必须是经过身份验证的用户组的成员可以写入的位置。

    b. 将 CPIC_TRACE 设置为 3,将 CPIC_TRACE_DIR 设置为要将跟踪文件写入其中的任何目录。 例如:

    CPIC 跟踪

    c. 重现问题,确保 CPIC_TRACE_DIR 包含跟踪文件。

    d. 检查跟踪文件的内容,确定阻塞性问题。 例如,你可能会发现gx64krb5.dll未正确加载,或者 AD 用户与你期望启动的 SSO 连接尝试不同。

有关本地数据网关和 DirectQuery 的详细信息,请参阅以下资源: