発行ファームと使用ファーム間でサーバー間認証を構成する
適用対象:2016 2019 Subscription Edition SharePoint in Microsoft 365
ファームが発行ファームのユーザー プロファイル サービス アプリケーションを使用すると、SharePoint は、一部の機能について、ユーザーの代わりにサーバー間認証を使用して要求を発行します。
ユーザーの個人用サイトが外部ファームの Web アプリケーションにある場合は、コンテンツ Web アプリケーションのドキュメントに従います。 コンテンツ Web アプリケーションは、ユーザーの代わりに個人用サイト Web アプリケーションに OAuth 要求を行います。
コンテンツ Web アプリケーション上にあるが、個人用サイト Web アプリケーションでユーザーの個人用サイト ニュースフィードを介して実行されたサイトのサイト フィード投稿を作成または返信します。 個人用サイト Web アプリケーションは、投稿または返信を書き込むようユーザーに代わってコンテンツ Web アプリケーションの要求を行います。
フィード キャッシュを再入力するユーザー プロファイル サービス アプリケーション タスクは、個人用サイトまたはコンテンツ サイトから読み取る必要があります。 ユーザー プロファイル サービス アプリケーションが別のファームで実行されている場合、ユーザーまたはサイト フィード データをキャッシュに読み取る OAuth 要求が個人用サイト Web アプリケーションまたはコンテンツ Web アプリケーションに送信されます。
開始する前に
この記事の手順では、次を既に構成している必要があります。
- 「 SharePoint Server のファーム間でサービス アプリケーションを共有する」で説明されているように、使用しているファームと発行ファームの間でユーザー プロファイル サービス アプリケーションを共有しました。
- この記事の「サブスクリプション設定と App Management サービス アプリケーションの構成」セクションに記載されているように、発行ファームと使用ファームの両方でサブスクリプション設定と App Management サービス アプリケーションを構成しました
次のメンバーシップがあることを確認します。
- SQL Server インスタンスの Securityadmin 固定サーバー ロール。
- 更新するすべてのデータベースに対する db_owner 固定データベース ロール。
- PowerShell コマンドレットを実行しているサーバー上の組み込みの Administrators グループのメンバー。
管理者は Add-SPShellAdmin コマンドレットを使用して、SharePoint Server コマンドレットを使用する権限を付与できます。
注:
アクセス許可がない場合は、セットアップ管理者または 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 でサーバー間認証を計画する