适用于:
2013
2016
2019
Subscription Edition
SharePoint in Microsoft 365
OIDC 是一种身份验证协议,它使用 JSON Web 令牌 (JWT) 来验证用户的标识,并向其授予对受保护资源的访问权限。 JWT 使用颁发者与使用者) 之间共享 (对称密钥或非对称密钥 (公钥/私钥对) 进行数字签名。
SharePoint Server 当前支持具有 x5c 密钥的 OIDC 身份验证流,这些密钥是包含公钥和其他元数据的证书。 但是,某些 OIDC 提供程序可能不使用 x5c 密钥,而是使用用 RSA 模数和 RSA 公共指数直接表示的 RSA 公钥。 为了支持这些提供程序,SharePoint Server 添加了在 JWT 中分析和验证 RSA 公钥的功能。
本文介绍版本 24H2 中的新改进,这些改进将帮助你使用 RSA 公钥在 SharePoint Server 中设置 OIDC 身份验证。
使用 RSA 公钥的 OIDC 配置概述
- 通过执行此处所述的步骤,使用全局管理员凭据使用 Microsoft Entra ID 设置 OIDC。
- 根据 SharePoint Server 场的版本修改 SharePoint Server 场属性。 有关详细信息,请参阅 更改 SharePoint 场属性。
-
使用本文中所述的步骤使用 RSA 公钥创建
SPTrustedIdentityTokenIssuer,将 SharePoint 配置为信任标识提供者。 - 使用
SPTrustedIdentityTokenIssuer在上一步中创建的 将 SharePoint 中的 Web 应用程序配置为与 Microsoft Entra OIDC 联合。 有关详细信息,请参阅 创建新的 Web 应用程序。 - 确保 Web 应用程序配置了 SSL 证书。 若要配置 Web 应用程序,请执行 设置证书的步骤。
- 以 Windows 管理员和联合 (Microsoft Entra ID) 管理员身份创建团队网站集。 有关详细信息,请参阅 创建网站集。
- 使用自定义声明提供程序或SharePoint Server 订阅版中包含的新 UPA 支持的声明提供程序设置人员选取器。 请参阅设置人员选取器。
步骤 3:将 SharePoint 配置为使用 RSA 公钥信任标识提供者
对于 RSA 公钥,可以创建或设置 来 SPTrustedTokenIssuer 存储 SharePoint 需要信任为 OIDC 提供程序的配置。 您可以手动或使用元数据终结点将 SharePoint 配置为信任标识提供者。
使用元数据终结点配置具有 RSA 公钥的 SharePoint OIDC
使用 RSA 公钥的元数据终结点时,管理员可以遵循用于 x5c 密钥的同一 PowerShell 命令。 SharePoint 从元数据终结点响应中找出使用了哪种类型的密钥,并相应地创建 SPTrustedIdentityTokenIssuer 。 有关详细信息,请参阅使用元数据终结点将 SharePoint 配置为信任Microsoft Entra ID。有关示例。
使用 RSA 公钥手动配置 SharePoint OIDC
为 RSA 公钥手动创建或设置 SPTrustedIdentityTokenIssuer 时,必须在运行 New-SPTrustedIdentityTokenIssuer 或 Set-SPTrustedIdentityTokenIssuer cmdlet 时指定一个新-PublicKey参数来定义 RSA 公钥模数和指数。
New-SPTrustedIdentityTokenIssuer
可以使用 参数运行以下 PowerShell cmdlet -PublicKey :
New-SPTrustedIdentityTokenIssuer -Name "RSA-Manual" -Description "RSA Manually Created" -PublicKey $publicKeyXML -ClaimsMappings $emailClaimMap -IdentifierClaim $emailClaimMap.InputClaimType -DefaultClientIdentifier $clientIdentifier -RegisteredIssuerName $registeredissuernameurl -AuthorizationEndPointUri $authendpointurl -SignOutUrl $signouturl -Scope "openid profile"
New-SPTrustedIdentityTokenIssuer PowerShell cmdlet 使用以下参数:
| 参数 | 说明 |
|---|---|
| 名称 | 为新令牌颁发者提供名称。 |
| 说明 | 为新的令牌颁发者提供说明。 |
| PublicKey | 指定值应是定义 RSA 公钥模数和指数的 XML 字符串 值示例 $publicKeyXML : |
| ClaimsMappings | 一个 SPClaimTypeMapping 对象,用于标识 在 SharePoint 中 id_token 将 中的哪个声明视为标识符。 |
| IdentifierClaim | 指定标识符的类型。 |
| DefaultClientIdentifier | 指定 client_id SharePoint 服务器的 ,该服务器由 OIDC 标识提供者分配。 这是针对 中的 id_tokenaud 声明进行验证的。 |
| RegisteredIssuerName | 指定颁发者标识符,该标识符颁发 。id_token 它用于验证 id_token。 |
| AuthorizationEndPointUrl | 指定 OIDC 标识提供者的授权终结点。 |
| SignoutUrl | 指定 OIDC 标识提供者的注销终结点。 |
若要从 x509 证书中提取正确的 $publicKeyXML 值,可以运行以下 PowerShell 命令:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cert.Import("c:\certs\YourSigningCertificateHere.cer")
$publicKeyXml = $cert.PublicKey.Key.ToXmlString($false)
Set-SPTrustedIdentityTokenIssuer
cmdlet Set-SPTrustedIdentityTokenIssuer 支持 RSA 公钥的新 -PublicKey 参数,并采用使用的相同 <RSAKeyValue><Modulus>modulus</Modulus><Exponent>exponent</Exponent></RSAKeyValue> XML 字符串 New-SPTrustedIdentityTokenIssuer 。 示例:
Set-SPTrustedIdentityTokenIssuer -Identity "RSA-Manual" -PublicKey $publicKeyXml -IsOpenIDConnect
OIDC 配置的改进
使用版本 24H2 时,在将 SharePoint Server 配置为信任标识提供者时,管理员可以期待以下改进。
允许在 OIDC 中配置多个客户端标识符
现在允许使用 OIDC SPTrustedIdentityTokenIssuer中的 -ScopedClientIdentifier 开关配置多个客户端标识符。 运行以下命令:
Set-SPTrustedIdentityTokenIssuer -Identity <name> -ScopedClientIdentifier Dictionary<Uri,string> -IsOpenIDConnect
在 Set-SPTrustedIdentityTokenIssuer 中启用 ClaimsMappings 编辑功能
在早期版本的 SharePoint Server 中创建 SPTrustedIdentityTokenIssuer时,需要提供声明映射列表,该列表用于将声明从 IdP 令牌映射到 SharePoint 颁发的令牌。 创建 后 SPTrustedIdentityTokenIssuer ,只能删除现有声明映射,或重新添加已删除的声明映射,这与删除的声明映射相同。 但是,不能添加新的声明映射,而该映射最初不在列表中,也不能更改现有的声明映射。
版本 24H2 版本中的新更新允许用户向 添加新参数, Set-SPTrustedIdentityTokenIssuer 以便可以更改声明映射列表。 使用此新的以下参数,甚至可以修改令牌颁发者的声明映射列表。
新参数: -ClaimsMappings <SPClaimMappingPipeBind[]>
支持无法在重定向 URL 中使用通配符的 OIDC IdP
某些 OIDC IdP(例如 Azure Active Directory B2C)无法使用重定向 URL 中的通配符。 这会导致 SharePoint 无法重定向回身份验证后请求的原始资源。 在此版本中,我们在响应标头中添加了状态属性,以保留重定向 URL,以便 SharePoint 能够知道要重定向到哪个 URL。
可以使用以下 PowerShell cmdlet 在创建的 tokenissuer 上启用它:
Set-SPTrustedIdentityTokenIssuer -Identity <name> -UseStateToRedirect:$True -IsOpenIDConnect
按计时器作业刷新证书
将创建一个新的计时器作业 (RefreshMetadataFeed) ,以每天自动从配置的 OIDC 元数据终结点提取最新的配置设置,并相应地更新 OIDC 受信任的令牌颁发者。 它包括用于令牌加密和签名的证书、令牌颁发者、授权终结点和 SignoutUrl。 可以通过更改计时器作业计划来更改刷新频率。 例如,可以使用 PowerShell 将计时器作业的计划更改为“每周六 5:00”:
Get-SPTimerJob refreshmetadafeed | Set-SPTimerJob -Schedule "weekly at sat 5:00"
使用元数据终结点设置 OIDC 受信任的令牌颁发者时,会启用此计时器作业。 如果在应用此更新之前设置了 OIDC 受信任的令牌颁发者,则需要再次重置此令牌颁发者,以便为此令牌颁发者启用计时器作业。 可以使用 PowerShell 重置令牌颁发者
Set-SPTrustedIdentityTokenIssuer -Identity <OIDCtokenissuer> -MetadataEndPoint <URL>