先進認証用に強化されたユーザー ピッカー

適用対象:no-img-132013 no-img-162016 no-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

Security Assertion Markup Language (SAML) 1.1 や OpenID Connect (OIDC) 1.0 などのモダン ("信頼された ID プロバイダー") 認証が使用されている場合、People Picker コントロールはユーザーとグループを検索、解決、検証できません。 代わりに、有効な要求ではない場合でも、入力された値を解決するのが既定の動作です。 以前のバージョンの SharePoint Server では、唯一の解決策はカスタム クレーム プロバイダーを使用することでした。

SharePoint Server サブスクリプション エディション (SPSE) では、ユーザー ピッカーが強化され、ユーザー プロファイル アプリケーション (UPA、別名: UPSA) のプロファイルに基づいてユーザーとグループを解決できるようになりました。 UPA は、信頼された ID プロバイダー メンバーシップ ストアからユーザーとグループを同期するように構成する必要があります。 これにより、ユーザー 選択ウィンドウは、カスタム要求プロバイダーを必要とせずに、有効なユーザーとグループを解決できます。

注:

SharePoint Server サブスクリプション エディションでカスタム クレーム プロバイダーを使用することは、引き続き People Picker の問題に対する有効な解決策です。 この記事で説明する UPA に基づく要求プロバイダーの制限が組織にとって制限すぎる場合は、「SharePoint でクレーム プロバイダーを作成する」を参照してください。

重要

"Active Directory Import" (AD Import) と呼ばれる SharePoint Server に含まれる既定のユーザー プロファイル インポート エンジンは、オンプレミスの Active Directory ドメインとフォレストからのユーザー プロファイルのインポートにのみ使用できます。 Microsoft Entra ID からユーザー プロファイルをインポートするように構成することはできません。 Entra ID でサポートされる OIDC 認証を使用している場合は、カスタム クレーム プロバイダーを使用して People Picker 機能を提供することを検討できます。

UPA でサポートされている People Picker を動作させる構成手順を次に示します。

手順 1: SPTrustedIdentityTokenIssuer に UPA-Backed 要求プロバイダーを追加する

注:

SAML 1.1 信頼された ID トークン発行者の場合は、トークン発行者を作成するときに UPA でサポートされる要求プロバイダーを追加するか、後で割り当てることができます。
OIDC 1.0 の信頼された ID トークン発行者の場合は、最初にトークン発行者を作成する必要があります。その後、要求プロバイダーを割り当てることができます。 「UPA のバックアップされた要求プロバイダーを既存の SPTrustedIdentityTokenIssuer に追加する」を参照してください。

新しい SPTrustedIdentityTokenIssuer を作成し、UPA のバックアップされた要求プロバイダーを同時に割り当てる

注:

これは、SAML 1.1 信頼された ID トークン発行者でのみ使用できます。

New-SPTrustedIdentityTokenIssuer PowerShell コマンドレットを使用して新しいトークン発行者を作成し、UseUPABackedClaimProvider スイッチを追加して要求プロバイダーを割り当てます。

New-SPTrustedIdentityTokenIssuer
    -ClaimsMappings <SPClaimMappingPipeBind[]> 
    -Description <String> 
    -IdentifierClaim <String> 
    -Name <String>
    -Realm <String> 
    -SignInUrl <String> 
    [-AssignmentCollection <SPAssignmentCollection>]
    -ImportTrustCertificate <X509Certificate2>
    [-UseWReply]
    [-Confirm] [-RegisteredIssuerName <String>]
    [-SignOutUrl <String>] 
    [-WhatIf] [<CommonParameters>]
    [-UseUPABackedClaimProvider]

次の 3 つのパラメーターには、特別な注意が必要です。

  • ClaimsMappings
    ClaimsMappings は、元のトークンから SharePoint トークンへの要求のマッピングを指定します。 このパラメーターを使用すると、SharePoint は、ユーザー プロファイル サービス アプリケーション プロパティから特定のトークンが指定されたときに SharePoint トークンを生成する方法を理解します。
    New-SPClaimTypeMapping コマンドレットによって作成されたClaimTypeMapping オブジェクトの一覧を受け入れます。 さまざまな種類のトークンの ClaimTypeMapping オブジェクトの例を次に示します。これらのオブジェクトは、 ClaimsMappings パラメーターに提供できます。
$emailClaimMap = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" -IncomingClaimTypeDisplayName "EmailAddress" -SameAsIncoming
$upnClaimMap = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" -IncomingClaimTypeDisplayName "UPN" -SameAsIncoming
$roleClaimMap = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -IncomingClaimTypeDisplayName "Role" -SameAsIncoming
$sidClaimMap = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid" -IncomingClaimTypeDisplayName "SID" -SameAsIncoming
  • IdentifierClaim
    IdentifierClaim パラメーターは、識別子要求として使用する要求の種類 (通常は電子メールまたは UPN) を指定します。 New-SPClaimTypeMapping コマンドレットから作成されたClaimTypeMapping オブジェクトのInputClaimTypeに設定できます。
-IdentifierClaim $emailClaimMap.InputClaimType
  • UseUPABackedClaimProvider
    この switch パラメーターを使用すると、ユーザー ピッカーはユーザー プロファイル アプリケーション サービスからユーザーとグループを検索して選択できます。 また、SPTrustedIdentityTokenIssuerと同じ名前のSPClaimProviderも作成されます。

注:

"UseUPABackedClaimProvider" パラメーターを使用して OIDC SPTrustedIdentityTokenIssuer を作成することはできません。 SAML SPTrustedIdentityTokenIssuer の作成にのみ使用できます。

例:

# Create a new trusted identity token issuer, and assign a UPA-backed claim provider at the same time
New-SPTrustedIdentityTokenIssuer -Name "UPATest" -Description "Contoso.local" -ClaimsMappings $emailClaimMap -IdentifierClaim $emailClaimMap.InputClaimType -UseUPABackedClaimProvider

UPA のバックアップされた要求プロバイダーを既存の SPTrustedIdentityTokenIssuer に追加する

上記の例では、信頼された ID トークン発行者の作成時に UPA に基づく要求プロバイダーを割り当てる方法を示しています (SAML プロバイダーの場合のみ)。 既存の信頼された ID トークン発行者 (SAML または OIDC) があり、UPA でサポートされる要求プロバイダーを追加する場合は、次の例を使用します。

注:

次の PowerShell スクリプト サンプルは、SAML 1.1 と OIDC 1.0 認証プロバイダーの間で若干異なります。 正しいサンプルを選択してください。

SAML の例

# Get the existing trusted identity token issuer named "SAML"
$stsidp = Get-SPTrustedIdentityTokenIssuer "SAML"

# Create the new UPA-backed claim provider 
$claimprovider = New-SPClaimProvider -AssemblyName "Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, publicKeyToken=71e9bce111e9429c"  -Description "UPA-Backed" -DisplayName "UPA-Backed Claim Provider" -Type "Microsoft.SharePoint.Administration.Claims.SPTrustedBackedByUPAClaimProvider" -TrustedTokenIssuer $stsidp

# Set the trusted identity token issuer to use the new claim provider
Set-SPTrustedIdentityTokenIssuer $stsidp -ClaimProvider $claimprovider

OIDC の例

# Get the existing trusted identity token issuer named "OIDC"
$stsidp = Get-SPTrustedIdentityTokenIssuer "OIDC"

# Create the new UPA-backed claim provider 
$claimprovider = New-SPClaimProvider -AssemblyName "Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, publicKeyToken=71e9bce111e9429c"  -Description "UPA-Backed" -DisplayName "UPA-Backed Claim Provider" -Type "Microsoft.SharePoint.Administration.Claims.SPTrustedBackedByUPAClaimProvider" -TrustedTokenIssuer $stsidp

# Set the trusted identity token issuer to use the new claim provider
Set-SPTrustedIdentityTokenIssuer $stsidp -ClaimProvider $claimprovider -IsOpenIDConnect

手順 2: プロファイルを UPSA に同期する

これで、組織で使用される ID プロバイダーから SharePoint ユーザー プロファイル サービス アプリケーション (UPSA) へのユーザー プロファイルの同期を開始して、新しく作成された要求プロバイダーが正しいデータ セットで作業できるようになりました。

ユーザー プロファイルを SharePoint ユーザー プロファイル サービス アプリケーションに同期する 2 つの方法を次に示します。

  • 同期接続設定の認証プロバイダーの種類として、信頼された要求プロバイダー認証を使用して SharePoint Active Directory インポート (AD インポート) を使用します。 AD インポートを使用するには、「 SharePoint Server でユーザー プロファイルの同期を管理する」を参照してください。

    新しい同期接続を追加します。

    重要

    AD Import は、オンプレミスの Active Directory ドメインとフォレストからユーザー プロファイルをインポートする場合にのみ使用できます。 Entra ID からプロファイルをインポートするように構成することはできません。 Entra ID でサポートされる OIDC 認証を使用している場合は、代わりにカスタムクレームプロバイダーを使用して People Picker 機能を提供することを検討してください。

  • Microsoft Identity Manager (MIM) を使用します。 MIM を使用するには、「 SharePoint Server 2016 および 2019 の Microsoft Identity Manager」を参照してください。

  • MIM を設定した後、MIM 同期マネージャー UX 内に 2 つのエージェントが存在する必要があります。 1 つのエージェントを使用して、ソース IDP から MIM データベースにユーザー プロファイルをインポートします。 また、別のエージェントを使用して、MIM データベースから SharePoint ユーザー プロファイル サービス アプリケーションにユーザー プロファイルをエクスポートします。

同期中に、ユーザー プロファイル サービス アプリケーションに次のプロパティを指定します。

a. SPS-ClaimID

  • ソースで、ユーザー プロファイル サービス アプリケーションの SPS-ClaimID プロパティにマップする一意の ID プロパティを選択します (優先 メール または ユーザー プリンシパル名)。
  • これは、New-SPTrustedIdentityTokenIssuer コマンドレットを使用して信頼された ID トークン発行者が作成されたときに、対応する IdentifierClaim パラメーターの値である必要があります。

AD インポート同期の場合、 サーバーの全体管理 -> Application Management -> サービス アプリケーションの管理 -> ユーザー プロファイル サービス アプリケーション -> ユーザー プロパティの管理 UX を使用すると、管理者は SPS-ClaimID プロパティを編集して、ソース ID プロバイダー内のどの属性を SPS-ClaimID に同期するかを指定できます。 これは、信頼された ID トークン発行者の識別子要求として使用されるプロパティである必要があります。 たとえば、識別子要求が電子メールであり、ユーザーのメール アドレスが Active Directory の "mail" 属性に格納されている場合は、この UX で [ユーザー識別子の要求] を "mail" に設定します。

注:

SPS-ClaimID の表示名は UX のクレーム ユーザー識別子であり、管理者は表示名をカスタマイズできます。

識別子の要求が不明な場合は、次の PowerShell を実行して確認できます。 $trust = Get-SPTrustedIdentityTokenIssuer$trust.IdentityClaimTypeInformation

ユーザー識別子を要求します。

プロパティの設定。

同期のプロパティ マッピング。

MIM 同期の場合は、識別子要求 (通常 は電子メール または ユーザー プリンシパル名) を MIM データベースの SPS-ClaimID に SharePoint ユーザー プロファイル サービス アプリケーション エージェントにマップします。

  • MIM 同期サービス マネージャーで、エージェントを選択し、[ 属性フロー UX の構成] を開きます。 メールSPS-ClaimID にマップできます。

    ビルド属性フロー。

b. SPS-ClaimProviderID と SPS-ClaimProviderType

注:

AD インポート同期の場合は、"ユーザー識別子の要求" (SPS-ClaimID) プロパティ マッピングのみを更新する必要があります。 MIM 同期とは異なり、"要求プロバイダー識別子" (SPS-ClaimProviderID) と "要求プロバイダーの種類" (SPS-ClaimProviderType) をマップする必要はありません。

MIM 同期の場合は、[MIM データベースの 属性フロー UX の構成] で次の 2 つのプロパティを SharePoint ユーザー プロファイル サービス アプリケーション エージェントに設定します。

  • SPS-ClaimProviderType を [定数型として信頼済み] に設定します。

  • New-SPTrustedIdentityTokenIssuer コマンドレットを使用して、SPS-ClaimProviderID をプロバイダー名に設定します。

    属性フローを構成します。

手順 3: グループを検索可能にする

重要

UPA でサポートされているクレーム プロバイダーを使用してセキュリティ グループを解決する場合は、グループセキュリティ識別子 (SID) が使用され、グループがユーザー プロファイル サービス アプリケーションにインポートされている場合にのみ機能します。
Entra ID でサポートされる OIDC 認証を使用している場合は、クラウドのみのグループに SID が含まれていないこと、AD Import を Entra ID と同期できないことをお勧めします。
SharePoint サイトのアクセス許可内でクラウドのみのユーザーまたはグループを使用する必要がある場合は、カスタム クレーム プロバイダーのみがソリューションである可能性があります。

People Picker コントロールがセキュリティ グループを操作できるようにするには、次の手順を実行します。

  1. Group オブジェクトに、ID プロバイダーの groupsid 型の SID という名前のプロパティがあることを確認します。
    "groupSID" の要求マッピングがまだない場合は、New-SPClaimTypeMapping を使用してClaimTypeMapping オブジェクトを作成し、このオブジェクトを New-SPTrustedIdentityTokenIssuer コマンドレットにパラメーター-ClaimsMappings指定できます。

例:

# Add Group SID as a claim type to an existing trusted provider named "SAML"
$Trust = Get-SPTrustedIdentityTokenIssuer -Identity "SAML"
$Trust.ClaimTypes.Add("http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid")
$Trust.Update()

# Add a claim mapping for Group SID
$GroupSidClaimMap = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid" -IncomingClaimTypeDisplayName "Group SID" -SameAsIncoming
$Trust = Get-SPTrustedIdentityTokenIssuer "SAML"
Add-SPClaimTypeMapping –TrustedIdentityTokenIssuer $Trust -Identity $GroupSidClaimMaps
  1. ID プロバイダーからユーザー プロファイル サービス アプリケーションの SID プロパティにグループの SID プロパティを同期します。

    • AD インポート同期の場合、SID プロパティはソース ID プロバイダーから SharePoint ユーザー プロファイル サービス アプリケーションに自動的に同期されます。

    • MIM 同期の場合は、ID プロバイダーから MIM へのプロパティ マッピングを取得し、MIM から SharePoint ユーザー プロファイル サービス アプリケーションに移動して、MIM が ID プロバイダーから SharePoint ユーザー プロファイル サービス アプリケーションにグループ SID を同期できるようにします。 この手順は、 SPS-ClaimID プロパティがユーザー プロファイルにマップされた方法と似ています。この場合にのみ、"group" オブジェクト型のマッピングが更新されます。

      注:

      MIM 同期の場合は、 sAMAccountName を、MIM から SharePoint ユーザー プロファイル サービス アプリケーションに Group オブジェクトの accountName にマップします。

手順 4: UPSA でプロパティを検索可能として設定する

ユーザー ピッカーを機能させるには、最後に、ユーザー プロファイル サービス アプリケーションで検索可能なプロパティを有効にします。

管理者は、このサンプルの PowerShell スクリプトに従って、People Picker によって検索されるプロパティを設定できます。

# Get the UPA property list
$site = $(Get-SPWebApplication $WebApplicationName).Sites[0]
$context = Get-SPServiceContext $site
$psm = [Microsoft.Office.Server.UserProfiles.ProfileSubTypeManager]::Get($context)
$ps = $psm.GetProfileSubtype([Microsoft.Office.Server.UserProfiles.ProfileSubtypeManager]::GetDefaultProfileName([Microsoft.Office.Server.UserProfiles.ProfileType]::User))
$properties = $ps.Properties

# Set the proerties defined in $PropertyNames as searchable. 
# In this example, we set First Name, Last Name, claim ID, email address, and PreferredName as searchable for the People Picker.
$PropertyNames = 'FirstName', 'LastName', 'SPS-ClaimID', 'WorkEmail', 'PreferredName'
foreach ($p in $PropertyNames) {
    $property = $properties.GetPropertyByName($p)
    if ($property) {
        $property.CoreProperty.IsPeoplePickerSearchable = $true
        $property.CoreProperty.Commit()
        $property.Commit()
    }
}

People Picker 検索で有効になっている UPSA プロパティを確認するには、次の PowerShell サンプルを使用します。

# Get the UPA property list
$site = $(Get-SPWebApplication $WebApplicationName).Sites[0]
$context = Get-SPServiceContext $site
$psm = [Microsoft.Office.Server.UserProfiles.ProfileSubTypeManager]::Get($context)
$ps = $psm.GetProfileSubtype([Microsoft.Office.Server.UserProfiles.ProfileSubtypeManager]::GetDefaultProfileName([Microsoft.Office.Server.UserProfiles.ProfileType]::User))
$properties = $ps.Properties

# Set the proerties defined in $PropertyNames as searchable. 
# In this example, we set First Name, Last Name, claim ID, email address, and PreferredName as searchable for the People Picker.
$PropertyNames = 'FirstName', 'LastName', 'SPS-ClaimID', 'WorkEmail', 'PreferredName'
foreach ($p in $PropertyNames) {
    $property = $properties.GetPropertyByName($p)
    if ($property) {
        $property.CoreProperty.IsPeoplePickerSearchable = $true
        $property.CoreProperty.Commit()
        $property.Commit()
    }
}