共用方式為


設定從 SharePoint Server 到 Microsoft 365 中 SharePoint 的伺服器對伺服器驗證

適用於:是-img-13 2013是-img-16 2016是-img-19 2019是-img-se訂閱版本 是-img-sopMicrosoft 365 中的 SharePoint

本文是設定 SharePoint 混合式解決方案程序藍圖的一部分。 當您執行本文中的程序時,請確定您遵循藍圖

注意事項

建議您使用 SharePoint 混合式 設定精靈,在 Microsoft 365 中建立 SharePoint Server 與 SharePoint 之間的伺服器對伺服器驗證。 如果您因為任何原因而無法使用混合式設定精靈,請遵循本文中的步驟來啟用伺服器對伺服器驗證。

設定伺服器對伺服器的驗證

本文針對整合 SharePoint Server 和 Microsoft 365 中 SharePoint 的 SharePoint 混合式環境部署程序提供指引。

提示

請依本文中顯示的順序完成程序,以獲得最可靠的結果。

驗證 Web 應用程式設定

在 SharePoint 混合式架構中,同盟使用者可以將要求從任何 SharePoint Server Web 應用程式傳送至 Microsoft 365 中的 SharePoint,而 Web 應用程式則是設定成搭配使用整合式 Windows 驗證與 NTLM。

例如,您需要確定想要用於方案的內部部署搜尋中心網站設定成搭配使用整合式 Windows 驗證與 NTLM。 如果不是,則需要重新設定 Web 應用程式使用 Windows 驗證與 NTLM 或在 Web 應用程式上使用符合要求的搜尋中心網站。 您也必須確定預期從 Microsoft 365 中的 SharePoint 傳回搜尋結果的使用者是同盟使用者。

驗證 Web 應用程式是否符合需求

  1. 確認將執行此程序的使用者帳戶為 SharePoint 伺服器陣列管理員群組的成員。

  2. 在管理中心選取[應用程式管理],然後選取[管理 Web 應用程式]。

  3. 在 [名稱]欄中,選取您要驗證的 Web 應用程式,然後選取功能區上的[驗證提供者]。

  4. 在 [驗證提供者]對話方塊的 [區域]欄中,選取與搜尋中心網站相關聯的區域。

  5. 在 [編輯驗證]對話方塊中,驗證已選取 [整合式 Windows 驗證] 和 [NTLM] (如下圖所示)。

    Web 應用程式的驗證類型設定。

設定 HTTP 上的 OAuth (如有必要)

依預設,SharePoint Server 中的 OAuth 需要 HTTPS 。 如果您將主要 Web 應用程式設定為使用 HTTP ,而不是 SSL,您必須透過 SharePoint Server 伺服器陣列中每個網頁伺服器上的 HTTP 來啟用 OAuth。

注意事項

如果您將主要 Web 應用程式設定為使用 SSL,就不需要採取此步驟。

若要在 HTTP 上啟用 OAuth,請在 SharePoint Server 伺服器陣列的每部網頁伺服器上,使用伺服器陣列管理員帳戶從 SharePoint 2016 管理命令介面 命令提示字元執行下列命令。

$serviceConfig = Get-SPSecurityTokenServiceConfig
$serviceConfig.AllowOAuthOverHttp = $true
$serviceConfig.Update()

如果已在 HTTP 上啟用 OAuth 進行測試,但想要重新設定環境來使用 SSL,您可以在 SharePoint Server 伺服器陣列的每部網頁伺服器上,使用伺服器陣列管理員帳戶從 SharePoint 2016 管理命令介面 命令提示字元執行下列命令,以便在 HTTP 上停用 OAuth。

$serviceConfig = Get-SPSecurityTokenServiceConfig
$serviceConfig.AllowOAuthOverHttp = $false
$serviceConfig.Update()

設定內部部署 SharePoint Server 與 Microsoft 365 中 SharePoint 之間的伺服器對伺服器驗證

本節將協助您設定下列兩者之間的伺服器對伺服器驗證:

  • SharePoint Server

  • Microsoft 365 中的 SharePoint

  • Microsoft Entra ID

當您設定混合式環境的伺服器對伺服器驗證時,您會在內部部署 SharePoint 伺服器陣列與 Microsoft 365 租使用者中的 SharePoint 之間建立信任關係,後者會使用 Microsoft Entra 標識符作為受信任的令牌簽署服務。 新增必要 PowerShell模組和嵌入式管理單元,此程序可以發生於內部部署 SharePoint 網頁伺服器的單一 PowerShell 視窗中。

提示

[!提示] 您將記錄步驟、執行的 PowerShell Cmdlet,以及任何可能發生的錯誤。 您應在完成時擷取 PowerShell 緩衝區的所有內容,再關閉視窗。 這樣可提供您所採取步驟的歷程記錄,這在您必須疑難排解程序或向其他人說明程序時十分有用。 這也適用於在各階段設定時重新整理記憶體。

以下是本節中您必須完成之程序的高階檢視:

  1. 在 SharePoint Server 伺服器陣列的網頁伺服器上安裝線上服務管理工具。

  2. 設定伺服器對伺服器的驗證:

    • 設定您將在稍後步驟使用的變數。

    • 將內建 SharePoint Server STS 憑證上傳至 Microsoft 365 中的 SharePoint。

    • 將服務主體名稱 (SPN) 新增至 Azure。

    • 向內部部署 SharePoint Server 登錄 Microsoft 365 中的 SharePoint 應用程式主體物件識別碼。

    • 設定內部部署 SharePoint Server 伺服器陣列與 Microsoft 365 中 SharePoint 之間的一般驗證領域。

    • 設定內部部署 Microsoft Entra 應用程式 Proxy。

安裝線上服務管理工具並設定 Windows PowerShell 視窗

若要繼續,您需要在內部部署 SharePoint Server 網頁伺服器上安裝這些工具:

  • Microsoft Graph PowerShell

  • Microsoft 365 中 SharePoint 的管理命令介面

這最容易在 SharePoint 伺服器數位中的網頁伺服器上完成,因為在網頁伺服器上載入 Microsoft.SharePoint.PowerShell 嵌入式管理單元比在未安裝 SharePoint Server 的伺服器上更容易。

對 SharePoint Server、Microsoft 365 中的 SharePoint 和 Microsoft Entra 標識符的驗證需要不同的用戶帳戶。 如需如何判斷要使用哪一個帳戶的資訊,請參閱<混合式設定和測試所需的帳戶>。

注意事項

為了更輕鬆地完成本節中的步驟,我們將在 SharePoint Server 網頁伺服器上開啟 PowerShell 命令提示字元視窗,並新增模組和嵌入式管理單元,讓您連線到 SharePoint Server、Microsoft 365 中的 SharePoint,以及 Microsoft Entra 標識符。 (我們將在本文稍後提供如何執行這項操作的詳細步驟。) 接著,我們會讓此視窗保持開啟,以用於本文中所有剩餘的 PowerShell 步驟。

安裝線上服務管理工具並設定 PowerShell 視窗:

  1. 安裝 最新版的 Microsoft Graph PowerShell

  2. 安裝 Microsoft 365 中 SharePoint 的管理命令介面:

    Microsoft 365 中 SharePoint 的管理命令介面 (64 位元版本)

    如需詳細資訊,請參閱 Microsoft 365 中 SharePoint 管理命令介面簡介

  3. 開啟 PowerShell 視窗。

  4. 為了協助確保您未填滿緩衝區以及未遺失任何命令歷程記錄,請增加 PowerShell 視窗的緩衝區大小:

  5. 選取 PowerShell 視窗的左上角,然後選取[屬性]。

  6. 在 PowerShell [屬性] 視窗中,選取 [版面配置]索引標籤。

  7. 在 [螢幕緩衝區大小] 下,將 [高度]欄位設定為[9999],然後選取[確定]。

  8. 此步驟會載入您已下載的模組,以在 PowerShell 工作階段中使用它們。 請將下列命令複製到 PowerShell 工作階段,然後按 Enter 鍵。

    Add-PSSnapin Microsoft.SharePoint.PowerShell
    Import-Module Microsoft.PowerShell.Utility
    Import-Module Microsoft.Graph
    

    如果您稍後需要再次執行任何設定步驟,請一定要再次執行這些命令,以在 PowerShell 中載入所需的模組和嵌入式管理單元。

  9. 在 PowerShell 命令提示字元輸入下列命令,登入 Microsoft 365 中的 SharePoint:

       Connect-MgGraph -Scopes "Group.ReadWrite.All","RoleManagement.ReadWrite.Directory"
    

    系統會提示您登入。 您必須使用 Microsoft 365 全域系統管理員帳戶登入。 您可以探索 連線到 Microsoft Graph 的其他方式

    讓 PowerShell 視窗保持開啟,直到您已經完成本文中的所有步驟。 您將會需要此視窗以完成以下章節中的各種程序。

設定伺服器對伺服器 (S2S) 驗證

現在您已安裝工具,可讓您在 Microsoft 365 中遠端管理 Microsoft Entra 識別碼和 SharePoint,您已準備好設定伺服器對伺服器驗證。

關於將建立的變數

本節說明將在下面程序中設定的變數。 這些變數包含許多其餘設定步驟中使用的重要資訊。

變數 Comments
$spcn The root domain name of your public domain. This value should not be in the form of a URL; it should be the domain name only, with no protocol.
例如,adventureworks.com。
$spsite 內部部署主要 Web 應用程式的內部 URL,例如 http://sharepointhttps://sharepoint.adventureworks.com 。 這個值是使用正確通訊協定 ( http: // 或 https:// ) 的完整 URL。
這是用於混合式功能的 Web 應用程式的內部 URL。
例如,http://sharepoint 或 https://sharepoint.adventureworks.com
$site 內部部署主要 Web 應用程式的物件。 填入此變數的命令會取得 $spsite 變數中所指定網站的物件。
會自動填入此變數。
$spoappid Microsoft 365 中的 SharePoint 應用程式主體標識碼一律為 000000003-0000-0ff1-ce00-000000000000000。 這個泛型值會識別 Microsoft 365 組織中 Microsoft 365 物件中的 SharePoint。
$spocontextID 內容標識碼 (Microsoft 365 租使用者中 SharePoint 的 ObjectID) 。 此值是唯一的 GUID,可識別您在 Microsoft 365 租使用者中的 SharePoint。
執行命令來設定變數時,會自動偵測這個值。
$metadataEndpoint Microsoft Entra 識別碼 Proxy 用來連線到您 Microsoft Entra 租用的 URL。
您不需要輸入此變數的值。

步驟 1:設定變數

現在,您已識別需要設定的變數,請使用這些指示來設定它們。 預先填入最常用的變數,應該可協助您更快速地執行其餘步驟。 只要未關閉 PowerShell 工作階段,就會持續填入這些變數。 無論您在何處看到角括號 () <> ,請小心提供準確的資訊,並在執行命令之前一律移除角括弧。 請勿在角括弧 之外 改變程序代碼。

注意事項

如果您稍後必須重新執行其中的任何設定步驟,則應該在此步驟中執行下列 PowerShell 命令,以重新填入重要變數。

複製下列變數宣告,並將它們貼到文字編輯器 (例如 [記事本])。 請設定您組織特有的輸入值。 從使用線上服務管理工具設定的 PowerShell 命令提示字元中,執行命令。

$spcn="*.<public_root_domain_name>.com"
$spsite=Get-Spsite <principal_web_application_URL>
$site=Get-Spsite $spsite
$spoappid="00000003-0000-0ff1-ce00-000000000000"
$spocontextID = (Get-MgOrganization).Id
$metadataEndpoint = "https://accounts.accesscontrol.windows.net/" + $spocontextID + "/metadata/json/1

填入這些變數之後,只要在 PowerShell 視窗中輸入變數名稱,即可檢視其值。 例如,輸入 $metadataEndpoint 會傳回類似下列的值:

https://accounts.accesscontrol.windows.net/00fceb75-246c-4ac4-a0ad-7124xxxxxxxx/metadata/json/1

步驟 2:將 STS 憑證上傳到 Microsoft 365 中的 SharePoint

在此步驟中,您會將 SharePoint Server 伺服器陣列的 STS 憑證上傳到 Microsoft 365 中的 SharePoint 租用戶,以讓 SharePoint Server 和 Microsoft 365 中的 SharePoint 連線以及使用彼此的服務應用程式。

將 STS 憑證上傳至 Microsoft 365 中的 SharePoint 時所牽涉的架構

此步驟中的命令只會將內部部署 STS 憑證 (公鑰新增至 Microsoft 365 組織的 Microsoft 365 中 SharePoint 主體物件) 。

在 PowerShell 命令提示字元處,輸入下列命令。

Import-Module Microsoft.Graph.Applications

$params = @{
	keyCredential = @{
		type = "AsymmetricX509Cert"
		usage = "Verify"
		key = [System.Text.Encoding]::ASCII.GetBytes("MIIDYDCCAki...")
	}
	passwordCredential = $null
	proof = "eyJ0eXAiOiJ..."
}

Add-MgServicePrincipalKey -ServicePrincipalId $spoappid -BodyParameter $params

步驟 3:新增公用功能變數名稱的 SPN 以 Microsoft Entra 標識碼

在此步驟中,您會將服務主體名稱 (SPN) 新增至 Microsoft Entra 租使用者。 Microsoft 365 中的 SharePoint 主體物件和您公司的公用 DNS 命名空間會形成 SPN。

就像 Active Directory 中的 SPN 函式一樣,建立此 SPN 會以 Microsoft Entra 標識符註冊物件,該標識碼可用來支援 SharePoint Server 與 Microsoft 365 中 SharePoint 之間的相互驗證。 SPN 的基本語法如下:

<服務類型>/<實例名稱>

其中:

  • <服務類型> 是 Microsoft 365 中的 SharePoint 主體物件,與 Microsoft 365 租使用者中的所有 SharePoint 相同。

  • <執行個體名稱> 是您公司之公用 DNS 網域命名空間的 URL,一律以萬用字元表示,即使安全通道 SSL 憑證是 SAN 憑證也是一樣。

以下為範例:

00000003-0000-0ff1-ce00-000000000000/*.<public domain name>.com

如果您的憑證中的一般名稱是 sharepoint.adventureworks.com,則 SPN 的語法看起來像這樣:

00000003-0000-0ff1-ce00-000000000000/*.adventureworks.com

使用通配符值可讓 Microsoft 365 中的 SharePoint 驗證與該網域中 任何主機 的連線。 This is useful if you ever need to change the host name of the external endpoint (if your topology includes one) or if you want to change your SharePoint Server web application, in the future.

若要將SPN新增至 Microsoft Entra識別碼,請在 Microsoft Graph PowerShell 命令提示字元中輸入下列命令。

$msp = Get-MgServicePrincipal -Filter "AppId eq '$spoappid'"
$params =@{
  "servicePrincipalNames"="$spoappid/$spcn"
}
Update-MgServicePrincipal -ServicePrincipalId $msp.Id -BodyParameter $params

若要驗證是否已設定 SPN,請在 Microsoft Graph PowerShell 命令提示字元中輸入下列命令。

$msp = Get-MgServicePrincipal -Filter "AppId eq '$spoappid'"
$spns = $msp.ServicePrincipalNames
$spns

您應該會看到 Microsoft 365 組織中 Microsoft 365 內 SharePoint 目前的 SPN 清單,而且其中一個 SPN 應該包括您的公用根網域名稱 (前面會加上 Microsoft 365 中的 SharePoint 應用程式主體識別碼)。 此登錄是萬用字元登錄,而且應該如下例所示:

00000003-0000-0ff1-ce00-000000000000/*.<public domain name>.com

這應該是清單中 一包含公用根功能變數名稱的SPN。

步驟 4:向 SharePoint Server 登錄 Microsoft 365 中的 SharePoint 應用程式主體物件識別碼

這個步驟將向內部部署 Microsoft 365 中的 SharePoint 應用程式管理服務登錄 Microsoft 365 中的 SharePoint 應用程式主體物件 ID,這允許使用 OAuth 向 Microsoft 365 中的 SharePoint 驗證 SharePoint Server。

在 PowerShell 命令提示字元處,輸入下列命令。

$spoappprincipalID = (Get-MgServicePrincipal -Filter "servicePrincipalName eq '$spoappid'").Id
$sponameidentifier = "$spoappprincipalID@$spocontextID"
$appPrincipal = Register-SPAppPrincipal -site $site.rootweb -nameIdentifier $sponameidentifier -displayName "SharePoint"

若要驗證這個步驟,請在 PowerShell 命令提示字元處輸入 $appPrincipal 變數。

$appPrincipal | fl

預期的輸出是名稱為 SharePoint Online 的登錄應用程式主體描述,與下面類似。

Microsoft 365 中 SharePoint 的已登錄應用程式主體

步驟 5:設定 Microsoft 365 中的 SharePoint 驗證領域

這個步驟會將 SharePoint Server 伺服器陣列的驗證領域設定為組織 Microsoft 365 組織的內容 ID。

在 PowerShell 命令提示字元處,輸入下列命令:

Set-SPAuthenticationRealm -realm $spocontextID

若要驗證這個步驟,請在 PowerShell 命令提示字元處輸入下列命令:

$spocontextID
Get-SPAuthenticationRealm

各個命令的輸出是代表 Microsoft 365 中的 SharePoint 租用內容識別碼的 GUID。 這些 GUID 應該相同。

重要事項

[!重要事項] 如果所設定的伺服器陣列設定指令碼指定伺服器陣列驗證領域值,則應該將設定指令碼更新為新的值。 > 如需伺服器陣列設定腳本中領域值需求的詳細資訊,請參閱 規劃 SharePoint Server 中的伺服器對伺服器驗證。 因為您此時已經設定這個 SharePoint 伺服器陣列參與混合式設定,所以 SharePoint 伺服器陣列驗證領域值必須一律符合租用內容識別碼。 如果您變更這個值,伺服器陣列將無法再參與混合式功能。

步驟 6:設定內部部署 Proxy 以 Microsoft Entra 識別碼

在此步驟中,您會在 SharePoint Server 伺服器陣列中建立 Microsoft Entra 識別碼 Proxy 服務。 這可讓 Microsoft Entra 標識碼作為受信任的令牌簽發者,讓 SharePoint Server 用來簽署和驗證來自 Microsoft 365 中 SharePoint 的宣告令牌。

在 PowerShell 命令提示字元中,輸入下列命令。

New-SPAzureAccessControlServiceApplicationProxy -Name "ACS" -MetadataServiceEndpointUri $metadataEndpoint -DefaultProxyGroup
New-SPTrustedSecurityTokenIssuer -MetadataEndpoint $metadataEndpoint -IsTrustBroker:$true -Name "ACS"

若要驗證 New-SPAzureAccessControlServiceApplicationProxy 命令:

  1. 瀏覽 SharePoint 2016 管理中心網站,然後選取 [安全性]> [一般安全性]> [管理信任]

  2. 確定具有名稱開頭為 ACS 且類型為 [受信任服務取用者] 的項目。

    若要驗證這個步驟,請在 PowerShell 命令提示字元處輸入下列命令。

    Get-SPTrustedSecurityTokenIssuer
    

    預期的輸出是伺服器陣列受信任權杖發行者的描述,其中 RegisteredIssuerName 屬性的值如下:

    00000001-0000-0000-c000-000000000000@<context ID>

    其中:

    • <內容標識符> 是 Microsoft 365 租使用者中 SharePoint 的內容識別碼,也就是$spocontextID變數中的值。

從 2021 年 10 月開始,需要額外的步驟來調整現有的 SharePoint 混合式組態,以使用新的 Microsoft 365 搜尋引擎來使用和驗證。

腳本必須在安裝 SharePoint 內部部署的伺服器上執行, (2013、2016 或 2019) 。 腳本會嘗試在執行的伺服器上安裝必要的模組相依性 (MSOnline、AzureAD) 。

  1. 下載 設定腳本

  2. 從下載文稿的目錄中,使用 SharePoint 內部部署伺服器陣列系統管理員帳戶,使用下列命令來執行腳本:

    Update-FederatedHybridSearchForM365.ps1 -HybridWebApp YourHybridWebApplication -Force
    

    如需參數值的詳細資訊,請執行下列命令:

    Get-Help .\Update-FederatedHybridSearchForM365.ps1
    
  3. 出現提示時,請使用 Microsoft 365 全域管理員帳戶登入。

  4. 等候腳本執行完成;如果有任何問題,請連絡 Microsoft 支援服務。

  5. 腳本執行之後,使用者將不會在實作此變更時看到任何變更。

步驟 8 (僅適用於 SharePoint Server 2013) :授與新的應用程式主體查詢AsUserIgnoreAppPrincipal 許可權

SharePoint Server 2013 在每個同盟查詢中都需要隱藏的條件約束。 反向 Proxy 會傳回反向 Proxy 網站本身中編製索引的檔,而不是如預期般傳回內部內部部署搜尋網站。 若要避免這種情況,您必須在 SharePoint Server 2013 系統管理網站中執行下列步驟:

  1. 移至 <CentralAdminURL>/_layouts/appinv.aspx並搜尋 c3959f3a-5ad4-4d2b-b1f0-bc70f9a5d0a1,您應該會在其中找到 格蘭同盟搜尋 Bot 技能

  2. 如果 [應用程式域] 字段中有專案,請保留專案,如果是空的,請使用localhost。

  3. 在 [重新導向 URL] 中,使用 https://localhost.

  4. 在 [許可權要求 XML] 字段中,貼上下列 XML 摘錄:

    <AppPermissionRequests>
    <AppPermissionRequest Scope="http://sharepoint/search" Right="QueryAsUserIgnoreAppPrincipal" />
    </AppPermissionRequests>
    
  5. 組態頁面看起來應該類似下列螢幕快照。 最後,選取[建立]。

將 QueryAsUserIgnoreAppPrincipal 許可權授與應用程式

驗證和後續步驟

完成此主題中的工作和其驗證步驟後,您應檢查 SSO 和「目錄同步處理」設定。

因此,您會有所採取步驟的歷程記錄,而且應該將 PowerShell 緩衝區的整個內容擷取至檔案。 如果您因疑難排解或任何其他原因而需要參照設定歷程記錄,則這十分重要。 如果設定跨多天或牽涉多人,則這也可協助您從中斷之處繼續。

完成且驗證此主題中的設定工作後,請繼續執行您的設定藍圖

另請參閱

SharePoint Server 的混合

安裝及設定混合式 SharePoint Server