設定發佈和取用伺服器陣列之間的伺服器對伺服器驗證

適用于:yes-img-132013 yes-img-16 2016yes-img-192019 yes-img-se訂閱版本 no-img-sopMicrosoft 365 中的 SharePoint

當伺服器陣列取用發佈伺服器陣列的 User Profile Service 應用程式時,SharePoint 會代表使用者發出要求,以取得某些功能:

  • 當使用者的個人網站位於外部伺服器陣列中的 Web 應用程式時,請遵循內容 Web 應用程式上的檔。 內容 Web 應用程式會代表使用者對「我的網站」Web 應用程式提出 OAuth 要求。

  • 建立或回復位於內容 Web 應用程式上,但透過使用者的「我的網站新聞摘要」在「我的網站」Web 應用程式上執行之網站的網站摘要文章。 「我的網站」Web 應用程式會代表使用者提出內容 Web 應用程式的要求,以撰寫文章或回復。

  • 重新填入摘要快取的使用者設定檔服務應用程式工作必須從個人網站或內容網站讀取。 如果 User Profile Service 應用程式在不同的伺服器陣列中執行,它會將 OAuth 要求傳送至「我的網站」Web 應用程式或內容 Web 應用程式,以將使用者或網站摘要資料讀入快取。

開始之前

本文中的程式需要您已設定下列專案:

確認您具備下列成員身分:

  • SQL Server 執行個體上的 Securityadmin 固定伺服器角色。
  • 所有要更新之資料庫上的 db_owner 固定資料庫角色。
  • 您執行 PowerShell Cmdlet 之伺服器上內建 Administrators 群組的成員。 系統管理員可以使用 Add-SPShellAdmin Cmdlet 授與使用 SharePoint Server Cmdlet 的權限。

    注意事項

    [!附註] 如果您不具備上述權限,請連絡安裝程式系統管理員或 SQL Server 系統管理員要求權限。 如需 PowerShell 權限的其他資訊,請參閱 Add-SPShellAdmin

設定發佈與耗用伺服器陣列之間的伺服器對伺服器驗證

下列程式說明如何在發佈和取用伺服器陣列之間設定伺服器對伺服器驗證,並只授與允許社交功能運作的必要許可權。 每個伺服器陣列都會保留自己的唯一驗證領域。

授權使用伺服器陣列將 OAuth 要求傳送至裝載 MySites Web 應用程式的伺服器陣列

在執行 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 的驗證概觀

在 SharePoint Server 中規劃伺服器對伺服器的驗證

其他資源

New-SPTrustedSecurityTokenIssuer

Set-SPAppPrincipalPermission