使用证书设置 Microsoft Entra ID 以进行 SSO

本指南将指导您设置 SAP ERP 连接器,以便用户可以访问 SAP 数据,并使用其 Microsoft Entra ID 身份验证在 Microsoft Power Platform 中运行远程函数调用 (RFC)。 该过程涉及配置用于安全通信的公有证书和私有证书。

重要提示

本文仅旨在帮助您设置概念验证。 这些设置和建议不适用于生产用途。 有关本主题的详细信息,请咨询您的安全团队、内部策略和 Microsoft 合作伙伴以获取更多指南。

先决条件

确保您已经:

您还需要熟悉公钥和私钥技术。

证书

我们生成一个示例自签名根证书,类似于证书颁发机构提供的证书。 您可以使用它为您的用户颁发令牌。

创建演示公钥基础结构

通过实施我们的演示PKI(公钥基础结构)的另一半来扩展设置安全网络通信文档。

演示 PKI 流程图

创建文件夹结构。

cd C:\
mkdir pki-certs
cd C:\pki-certs\
mkdir signingUsersCert
mkdir userCerts

创建扩展文件以确保使用正确的元数据和限制创建我们的证书。

signingUsersCert/extensions.cnf

subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true,pathlen:0
keyUsage = cRLSign, keyCertSign

userCerts/extensions.cnf

subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth

创建必要的 index.txtserial 文件以跟踪已签名的证书。

# Create the necessary serial and index files if they don't exist
if (-Not (Test-Path "signingUsersCert\index.txt")) { New-Item -Path "signingUsersCert\index.txt" -ItemType File }
if (-Not (Test-Path "signingUsersCert\serial")) { Set-Content -Path "signingUsersCert\serial" -Value "0001" }

生成我们的中级用户证书。

openssl genrsa -out signingUsersCert/users.key.pem 2048

# Create Certificate Signing Request
openssl req -new -key signingUsersCert/users.key.pem -sha256 -out signingUsersCert/users.csr.pem -subj "/O=Contoso/CN=Users Intermediate Cert"

# Sign the certificate with the rootCA cert.
openssl x509 -req -in signingUsersCert/users.csr.pem -days 3650 `
  -CA rootCA/ca.cert.pem -CAkey rootCA/ca.key.pem `
  -out signingUsersCert/users.cert.pem `
  -extfile signingUsersCert/extensions.cnf -extensions v3_ca `
  -CAserial rootCA/serial

生成用户证书

执行以下操作,为 SAP 用户名为 TESTUSER01 的用户生成并签署证书:

# Create the private key.
openssl genrsa -out userCerts/TESTUSER01.key.pem 2048

# Generate the certificate signing request
openssl req -key userCerts/TESTUSER01.key.pem -new -sha256 -out userCerts/TESTUSER01.csr.pem -subj "/CN=TESTUSER01"

# Sign the certificate + add extensions with the intermediate cert.
openssl x509 -req -days 365 -in userCerts/TESTUSER01.csr.pem -sha256 `
  -CA signingUsersCert/users.cert.pem -CAkey signingUsersCert/users.key.pem `
  -out userCerts/TESTUSER01.cert.pem -extfile userCerts/extensions.cnf `
  -CAserial signingUsersCert/serial

备注

CN=TESTUSER01 应该是第一个参数。

您现在已具有根证书、中间 SNC(安全网络通信的简称)证书、中间用户证书和用于标识用户证书的证书。

使用以下命令验证链:

$ openssl verify -CAfile rootCA/ca.cert.pem -untrusted signingUsersCert/users.cert.pem userCerts/TESTUSER01.cert.pem

userCerts/TESTUSER01.cert.pem: OK

Windows 应用商店

执行以下步骤将用户签名证书和证书链添加到 Windows 应用商店。

  1. 从用户签名证书和私钥生成 .p12 文件。
openssl pkcs12 -export -out user_signing_cert.p12 -inkey .\signingUsersCert\users.key.pem -in .\signingUsersCert\users.cert.pem
  1. 打开 Windows 证书管理器:
    1. Win + R,键入 certlm.msc,然后按 Enter。
  2. 导入公共根 CA 证书。
    1. 导入到 Trusted Root Certification Authorities
  3. 导入用户证书 + 密钥:
    1. 在证书管理器中,导航到相应的证书存储(例如,个人)。
    2. 右键单击并选择 All Tasks > Import
    3. 按照向导导入 .p12 文件,确保将密钥标记为可导出,以便 OPDG(本地数据网关的简称)可以使用它加密数据。
    4. 右键单击 Users Intermediate Cert并选择 All Tasks>Manage Private Keys...
  4. NT SERVICE\PBIEgwService 用户添加到有权限的人员列表中。
  5. 检查 Windows 证书存储中证书的使用者名称:
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*Users Intermediate Cert*" } | Format-List -Property Subject

Entra ID 到 SAP 用户映射

您可以使用规则将 X.509 证书明确映射到用户,也可以将用户中间证书添加到 SAP 中。

将 X.509 证书显式映射到用户

将少量 Entra ID 用户显式映射到 SAP 用户。

导航 SAP GUI 到 T 代码SM30

输入表 VUSREXTID 并选择维护按钮。

当提示 Type of ACL 时,选择 DN 选项。

选择 New Entry 并针对外部 ID 输入 CN=TESTUSER01@CONTOSO.COM(替换您自己的 UPN 的内容)。 确保 CN 首先显示。 针对用户名字段选择您的 UPN;最后检查 Activated 选项并保存结果。

备注

不要包含 p: 前缀。

使用规则将 X.509 证书映射到用户

使用证书规则 将 Entra ID 用户批量映射为 SAP 用户。

确保 login/certificate_mapping_rulebased 配置文件参数设置为当前值 1

备注

这种映射方法在重新启动时不会持续。

然后,在 T 代码 CERTRULE 中创建以下规则

T 代码:CERTRULE

备注

等待两分钟,确保与 SAP 的缓存连接已过期,然后重新测试连接。 如果没有,您可能会遇到未找到适合 X.509 客户端证书的 SAP 用户 错误。

用户中间证书

执行以下步骤将用户中间证书添加到 SAP:

  1. 打开 t-code STRUST,双击 STRUST 将公共证书 users.cert.pem 文件添加到框中。
  2. 在 SAP GUI 中,转到事务代码 STRUST。
  3. 如果 SNC SAPCryptolib 具有红色 X,请右键单击并选择创建
  4. 选择 SNC SAPCryptolib,然后双击自己的证书
  5. 选择导入证书,然后选择 signingUsersCert\users.cert.pem 公共证书。
  6. 选择添加到证书列表

SAP 系统更新

SsoCertificateSubject 添加到 SAP 系统参数中。

"SsoCertificateSubject": "CN=Users Intermediate Cert, O=Contoso",

同时启用

"SncSso": "On"

将连接替换为新的使用 Microsoft Entra ID (using certificates) 的连接以使用 Microsoft Entra ID 帐户登录到 SAP。

重要提示

完成本教程后,删除临时的 TESTUSER01 公钥和私钥。

重要提示

确保在完成此设置后安全处理并最终删除私钥,以保持安全完整性。

了解更多信息:内部部署数据网关常见问题配置基于证书的身份验证