在发布场和使用场之间配置服务器到服务器身份验证
适用于:2013 2016 2019 Subscription Edition SharePoint in Microsoft 365
当场使用发布场的 User Profile 服务应用程序时,SharePoint 会代表用户使用服务器到服务器身份验证来发出某些功能的请求:
当用户的个人网站位于外部场中的 Web 应用程序时,请遵循内容 Web 应用程序上的文档。 内容 Web 应用程序代表用户向“我的网站”Web 应用程序发出 OAuth 请求。
为位于内容 Web 应用程序上但通过用户“我的网站”新闻源在“我的网站”Web 应用程序上执行的站点创建或答复网站源帖子。 “我的网站”Web 应用程序将代表用户向内容 Web 应用程序发出请求,以编写帖子或回复。
要重新填充源缓存的用户配置文件服务应用程序任务,必须从个人网站或内容网站进行读取。 如果用户配置文件服务应用程序在不同的服务器场中运行,它将向“我的网站”Web 应用程序或内容 Web 应用程序发送 OAuth 请求,以将用户或网站源数据读取到缓存中。
开始之前
本文中的过程要求已配置以下各项:
- 在使用场和发布场之间共享用户配置文件服务应用程序,如 SharePoint Server 中跨服务器场共享服务应用程序中所述。
- 在发布和使用场上配置订阅设置和应用管理服务应用程序,如本文“配置订阅设置和应用管理服务应用程序”部分所述
确认您具有以下成员身份:
- SQL Server 实例上的 Securityadmin 固定服务器角色。
- 要更新的所有数据库上的 db_owner 固定数据库角色。
- 运行 PowerShell cmdlet 的服务器上的内置管理员组的成员。
管理员可以使用 Add-SPShellAdmin cmdlet 授予使用 SharePoint Server cmdlet 的权限。
注意
[!注意] 如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。 有关 PowerShell 权限的其他信息,请参阅 Add-SPShellAdmin。
在发布服务器场和使用服务器场之间,配置服务器到服务器的身份验证。
以下过程介绍如何在发布场和使用场之间配置服务器到服务器身份验证,并仅授予必要的权限以允许社交功能正常工作。 每个场都保留其自己的唯一身份验证领域。
授权使用场向托管 MySites Web 应用程序的场发送 OAuth 请求
在 运行 MySites Web 应用程序 (可能不是发布场) 的场中的 SharePoint 服务器中,启动 SharePoint 命令行管理程序并运行此 PowerShell 脚本,将使用服务器场注册为受信任的颁发者、获取其应用主体并向其授予所需的授权:
# Register the consuming farm as a trusted issuer using information in its metadata file
$trustedIssuer = New-SPTrustedSecurityTokenIssuer -MetadataEndpoint "https://<ConsumingFarmWinClaimsWebApp>/_layouts/15/metadata/json/1" -Name "<ConsumingFarmFriendlyName>"
# Get the app principal and set required authorizations
$mySiteHost = Get-SPWeb "http://<MySiteHostUrl/"
$appPrincipal = Get-SPAppPrincipal -Site $mySiteHost -NameIdentifier $trustedIssuer.NameId
# Grant permissions AppOnly and Write on the MySite host
Set-SPAppPrincipalPermission -EnableAppOnlyPolicy -Site $mySiteHost -AppPrincipal $appPrincipal -Scope SiteSubscription -Right Write
# Grant permissions Manage on the PrivateAPI and Read on the SocialPermissionProvider
$privateAPITypeId = New-Object -TypeName System.Guid ("a2ccc2e2-1703-4bd9-955f-77b2550d6f0d")
$socialPermissionProviderId = New-Object -TypeName System.Guid ("fcaec196-a98c-4f8f-b60f-e1a82272a6d2")
$mgr = New-Object -TypeName Microsoft.SharePoint.SPAppPrincipalPermissionsManager ($mySiteHost)
$mgr.AddSiteSubscriptionPermission($appPrincipal, $privateAPITypeId, [Microsoft.SharePoint.SPAppPrincipalPermissionKind]::Manage)
$mgr.AddSiteSubscriptionPermission($appPrincipal, $socialPermissionProviderId, [Microsoft.SharePoint.SPAppPrincipalPermissionKind]::Read)
授权发布场向使用场发送 OAuth 请求
在 使用场中的 SharePoint 服务器中,启动 SharePoint 命令行管理程序并运行此 PowerShell 脚本,将发布场注册为受信任的颁发者,获取其应用主体并向其授予所需的授权:
# Register the publishing farm as a trusted issuer using information in its metadata file
$trustedIssuer = New-SPTrustedSecurityTokenIssuer -MetadataEndpoint "https://<PublishingFarmWinClaimsWebApp>/_layouts/15/metadata/json/1" -Name "<PublishingFarmFriendlyName>"
# Get the app principal
$centralAdminWeb = Get-SPWeb "http://<ConsumingFarmCentralAdminURL/"
$appPrincipal = Get-SPAppPrincipal -Site $centralAdminWeb -NameIdentifier $trustedIssuer.NameId
# Grant app only permission and Read on the SiteSubscription
Set-SPAppPrincipalPermission -EnableAppOnlyPolicy -AppPrincipal $appPrincipal -Site $centralAdminWeb -Scope SiteSubscription -Right Read
# Grant permissions Manage on the PrivateAPI
$privateAPITypeId = New-Object -TypeName System.Guid ("a2ccc2e2-1703-4bd9-955f-77b2550d6f0d")
$mgr = New-Object -TypeName Microsoft.SharePoint.SPAppPrincipalPermissionsManager ($centralAdminWeb)
$mgr.AddSiteSubscriptionPermission($appPrincipal, $privateAPITypeId, [Microsoft.SharePoint.SPAppPrincipalPermissionKind]::Manage)
另请参阅
概念
在 SharePoint Server 中跨服务器场共享服务应用程序
规划 SharePoint Server 中的服务器到服务器身份验证