規劃 SharePoint 中人員選擇器的自訂宣告提供者

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

您可以使用 SharePoint Server 隨附的宣告提供者,也可以建立自己的自訂宣告提供者來連線到其他宣告來源,並在使用者的安全性權杖中提供其他宣告。 例如,若您具備的客戶關係管理 (CRM) 應用程式中含有 Active Directory 網域服務 (ADDS) 中找不到的角色,您就可建立自訂宣告提供者連線至該資料庫,並新增 CRM 角色資料至使用者的原始宣告 Token。 如需有關宣告提供者使用模式的詳細資訊,請參閱<宣告提供者.>。

SharePoint Server 中的宣告提供者可用來增強宣告並提供名稱解析。 在宣告增強角色中,宣告提供者會在登入期間,透過額外的宣告以增強使用者的安全性權杖。 如需有關宣告增強的詳細資訊,請參閱<規劃人員選擇>。 在名稱解析角色中,宣告提供者列出、解析、搜尋並判斷出在「人員選擇」中使用者、群組及宣告較「易記」的顯示方式。 宣告選擇可讓應用程式在設定 SharePoint 網站或 SharePoint 服務的安全性時在「人員選擇」中呈現宣告。 如需人員選擇器的詳細資訊,請參閱在 SharePoint 中規劃人員選擇器

根據預設,當執行查詢時,「人員選擇」中解析的資訊會依據宣告提供者提供的資訊。 當您使用現成的宣告提供者時,您無法變更所提供的資訊及其顯示方式。 如要變更,您必須建立符合您解決方案需求的自訂宣告提供者,以在使用者指派權限至網站、清單或文件庫等項目時,可尋找及選取使用者、群組及宣告。

當您建立一個自訂宣告提供者時,即可控制要顯示哪些資訊,以及要從「人員選擇」控制項中傳回哪些查詢結果。 根據預設,您可設定 Web 應用程式以使用宣告驗證,然後在伺服器上登錄宣告提供者。

閱讀本文之前,您應該先瞭解 在 SharePoint Server 中規劃使用者驗證方法 和宣告 角色中所述的概念。 如需有關宣告式驗證的詳細資訊,請參閱<SharePoint 宣告式身分識別>及<宣告式身分識別及存取控制指南>。

架構

當 Web 應用程式設定為使用宣告型驗證時,SharePoint Server 會自動使用兩個預設宣告提供者:

根據為 Web 應用程式區域選取的驗證方法,SharePoint Server 也會使用表格 1 中列出的一或多個預設宣告提供者。

表 1. 驗證方法與預設宣告提供者

驗證方法 宣告提供者
Windows 驗證
SPActiveDirectoryClaimProvider
表單型驗證
SPFormsClaimProvider
安全性聲明標記語言 (SAML) 權杖型驗證
SPTrustedClaimProvider

您可以使用 Get-SPClaimProvider Microsoft PowerShell Cmdlet 來查看伺服器陣列的宣告提供者清單。

注意事項

如果 Web 應用程式設定為使用 SAML 權杖型驗證,則 SPTrustedClaimProvider 類別不提供「人員選擇」Web 控制項搜尋功能。 任何「人員選擇」控制項中輸入的文字不論其是否為有效的使用者、群組或宣告,在解析後都會自動顯示。 如果您的 SharePoint Server 解決方案將使用 SAML 權杖型驗證,您應該規劃建立自訂宣告提供者來實作自訂搜尋和名稱解析。

宣告提供者會在伺服器陣列上註冊為部署至伺服器陣列的功能。 其範圍在伺服器陣列層級。 每個宣告提供者物件都會使用 SPClaimProviderDefinition 類別來包含宣告提供者的相關資訊,例如顯示名稱、描述、元件和類型。 SPClaimProviderDefinition 類別的兩個重要屬性是 IsEnabled 和 IsUsedByDefault。 這些屬性會決定是否已啟用已註冊的宣告提供者以在伺服器陣列中使用,以及預設是否在特定區域中使用宣告提供者。 根據預設,所有宣告提供者都會在部署至伺服器陣列時啟用。 如需 SPClaimProviderDefinition 類別的相關資訊,請參閱 SPClaimProviderDefinition

如需有關區域及驗證的詳細資訊,請參閱<在 SharePoint Server 中規劃使用者驗證方法>。

自訂宣告提供者設定範例

根據預設,當您在伺服器陣列上登錄自訂宣告提供者時,IsEnabled 及 IsUsedByDefault 屬性都會設定為 True。 根據 SharePoint Server 解決方案所需的區域數目、每個區域所使用的驗證方法,以及每個區域的使用者,您可能想要限制自訂宣告提供者顯示在 [人員 選擇器] 中的區域。

因為宣告提供者的使用範圍是設在伺服器陣列層級,並在區域層級中啟用,因此您必須仔細規劃您想顯示自訂宣告提供者的區域。 一般而言,您應該確定 IsUsedByDefault 屬性設定為 False,然後針對您想要使用自訂宣告提供者的每個區域設定 SPIisSettings 類別。 若要設定選取區域的自訂宣告提供者,您可以建立 PowerShell 腳本,使用 ClaimsProviders () 屬性來設定區域的宣告提供者,或者您可以建立自訂應用程式,讓您啟用選取區域的自訂宣告提供者。

舉例來說,在有兩個 Web 應用程式的情況下:

  • 第一個 Web 應用程式 (PartnerWeb) 有兩個區域,一個內部網路使用 Windows 宣告式驗證,一個內部網路使用表單型驗證,並且使用於員工與合作夥伴的共同作業。

  • 第二個 Web 應用程式 (PublishingWeb) 只有一個區域,其使用表單型驗證,並且是針對員工、企業合作夥伴與客戶合作夥伴的網際網路發佈網站。

現在,假設對於 PartnerWeb 上的外部網路區域,您希望員工能夠與商務合作夥伴共同作業,但不能與客戶合作夥伴共同作業。 若要這樣做,您可以撰寫自訂宣告提供者,根據使用者的身分識別來判斷目前的使用者是商務夥伴還是客戶合作夥伴。 在此範例中,來自 fabrikam.com 的使用者是商務夥伴,但來自 contoso.com 的使用者是客戶合作夥伴。 當身為商務夥伴的使用者在 PartnerWeb Web 應用程式中進行驗證時,名為 BusinessPartner 的角色宣告會新增至宣告權杖。 當客戶合作夥伴通過驗證時,名為 CustomerPartner 的角色宣告會新增至宣告權杖。

如要確認一律不將客戶合作夥伴新增至外部網路共同作業網站,您可在外部網路區域的 PartnerWeb Web 應用程式上新增一個 Web 應用程式原則,來明確拒絕任何具備名為 CustomerPartner 角色宣告的使用者之存取權。 自訂宣告提供者也必須實作搜尋及 Web 應用程式原則的輸入支援,以解析 CustomerPartner 角色宣告,並將其新增至 Web 應用程式原則。 最後,若要在外部網路區域上啟用這項功能,您可以為該區域設定 SPIisSettings 類別,以使用自訂宣告提供者。 下列圖表說明每個 Web 應用程式及區域的驗證方法與宣告提供者設定。

圖表 1. Web 應用程式及區域的驗證方法與宣告提供者設定範例

SPIisSettings 圖

您可在您為自訂宣告提供者所建立的功能接收器中設定 IsUsedByDefault 屬性。

您也可以使用 Set-SPClaimProvider PowerShell Cmdlet 覆寫 IsEnabled 和 IsUsedByDefault 屬性的設定。

重要事項

如果將 IsEnabled 屬性變更為 False,則會停用伺服器陣列的宣告提供者。 如果您需要針對可能因自訂宣告提供者造成的問題進行疑難排解,這就很實用。 一般而言,IsEnabled 屬性應設定為 True。

在一個以上的伺服器陣列中使用自訂宣告

宣告值是由宣告本身、宣告提供者名稱,及宣告提供者在伺服器上安裝之順序組合而成。 因此,如果您想要跨多個伺服器陣列或環境使用宣告,您必須在您想使用宣告的每一個伺服器陣列中,用相同順序安裝宣告提供者。 如果您已安裝自訂宣告提供者,且想在其他伺服器陣列上使用相同宣告,請使用下列步驟:

  1. 以與第一個伺服器陣列相同的順序在其他伺服器陣列上登錄宣告提供者。

  2. 執行第一個伺服器陣列的備份。 如需如何備份伺服器陣列的資訊,請參閱 在 SharePoint Server 中備份伺服器數組。

  3. 使用第一個伺服器陣列的備份來還原其他伺服器陣列。 如需如何還原伺服器陣列的相關資訊,請參閱 在 SharePoint Server 中還原伺服器陣列

自訂宣告提供者的規劃考量

若您計劃要在 SharePoint 解決方案中搭配「人員選擇」使用宣告提供者,請考慮下列問題:

  • 您的 Web 應用程式有哪些區域?每個區域中使用何種驗證方式?

  • 是否必須將任何自訂宣告新增至使用者,以啟用更進階的使用權限或安全使用情況?

  • 您是否會對信任的身分識別提供者使用 SAML 驗證?

  • 在「人員選擇」查詢結果中,使用者及角色的值的來源為何?

SharePoint Server 內容發佈小組想要感謝 Steve Peschka 參與本文。 請參閱 Steve Peschka 的 Share-n-dipity TechNet 部落格

另請參閱

概念

人員選擇與宣告提供者概觀

在 SharePoint Server 中規劃使用者驗證方法