現象
次のような状況で問題が発生します。
-
Microsoft SharePoint Server 2013 web アプリケーションでは、windows クレーム認証 (Windows チャレンジ/レスポンス [NTLM] または Kerberos 経由) を使用します。
-
Active Directory フェデレーションサービス (AD FS) などのセキュリティで保護されたアプリケーションマークアップ言語 (SAML) ベースのプロバイダーを使用して、信頼できるプロバイダー要求に切り替えることにします。
-
Microsoft Developer Network (MSDN) web サイトの SharePoint Server 2013 トピックで、Windows クレーム認証を SAML ベースのクレーム認証に移行 する手順を確認します。
-
次のコマンドを実行します。
SPWebApplication-id $wa $tp からクレーム-------------------------------------------$csv SourceSkipList
このとき、次のエラー メッセージが表示されます。
SAML ベースのクレーム認証には互換性がありません。
原因
この問題は、信頼された Identity Token の発行者が既定の構成を使用して作成されていないために発生します。 SPWebApplicationコマンドが正常に動作するためには、既定の構成を使用する必要があります。SPWebApplicationコマンドを実行するには、信頼されているプロバイダーに対して、Windows クレームから SAML への変換、またはその逆の互換性を持たせる特定の構成が必要です。具体的には、信頼された Id トークン発行者はUsedefaultconfigurationとidentifierclaimisパラメーターを使って作成する必要があります。次の Windows PowerShell スクリプトを実行することで、信頼されている Id トークンの発行者がUsedefaultconfigurationパラメーターを使用して作成されたかどうかを確認できます。注: これらのスクリプトは、現在のファーム内に作成された信頼できる Id プロバイダーが1つだけであることを前提としています。
$tp = Get-SPTrustedIdentityTokenIssuer$tp.claimtypes
このスクリプトが出力する必要があるクレームの種類は次のとおりです。
-
http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname
-
http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid
-
http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid
-
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
-
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn
#Get the Identity claim:$tp = Get-SPTrustedIdentityTokenIssuer$tp.IdentityClaimTypeInformation
Id 要求は、次のいずれかである必要があります。
-
WindowAccountName
-
EmailAddress
-
UPN
$Tp の出力例。IdentityClaimTypeInformation: DisplayName: Email InputClaimType: Http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressMappedClaimType: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress#IsIdentityClaim : True は、トークン発行者と同じ名前のカスタムクレームプロバイダーを指定する必要があり ます。これを実行して、クレームプロバイダーが存在し、互換性があるかどうかを確認します。
$tp = Get-SPTrustedIdentityTokenIssuer$name = $tp.name$cp = Get-SPClaimProvider $nameif($cp.typename -match "SPTrustedBackedByActiveDirectoryClaimProvider"){write-host "Claim provider is present and has TypeName of " $cp.typename " it should be valid"}else{write-host "Claim provider is not present. Trusted Identity Token Issuer" $tp.name " is not compatible with convert-spwebapplication"}
解決方法
この問題を解決するには、信頼された Id トークン発行者を削除してから再作成します。 これを行うには、次の手順を実行します。
-
次のスクリプトを実行します。
$tp = Get-SPTrustedIdentityTokenIssuer$tp | fl$tp.name$tp.IdentityClaimTypeInformation
今後の参照用にこのスクリプトの出力のコピーを作成します。 特に、Name プロパティの値を指定する必要があります。これにより、新しいトークン発行元を同じ名前で作成できるようになり、新しいクレームプロバイダーを同じ id 要求を使って作成できるように、id 要求が必要になります。 トークン発行者に同じ名前が使われていて、同じ要求が id 要求として使用される限り、トークン発行者が再作成された後は、すべてのユーザーが web アプリケーション内でアクセス許可を保持します。
-
現在、信頼されている Id プロバイダーを現在使用している web アプリケーションの認証プロバイダーから削除します。
-
次のコマンドを実行して、トークン発行者を削除します。
Remove-SPTrustedIdentityTokenIssuer -Identity "TheNameOfYourTokenIssuer"
-
トークン発行者を再作成します。 そのためには、詳細については、Microsoft TechNet web サイトの「 SharePoint Server 2013 での SAML ベース認証の実装 」の手順に従ってください。重要 SPTrustedIdentityTokenIssuerコマンドを実行する場合は、 usedefaultconfigurationとidentifierclaimisパラメーターを使う必要があります。 Usedefaultconfigurationパラメーターは単なるスイッチです。 Identifierclaimisパラメーターの指定可能な値は、次のとおりです。
-
アカウント名
-
電子メール
-
ユーザープリンシパル名
スクリプトの例:
$ap = New-SPTrustedIdentityTokenIssuer -Name $tokenIdentityProviderName -Description $TrustedIdentityTokenIssuerDescription -realm $siteRealm -ImportTrustCertificate $adfsCert-SignInUrl $signInUrl -UseDefaultConfiguration -IdentifierClaimIs EMAIL -RegisteredIssuerName $siteRealm
-
-
サーバーの全体管理で、新しい信頼された Id トークンの発行元を、変換する web アプリケーションの認証プロバイダーに追加します。 Web アプリケーションには、Windows 認証とターゲットの信頼できる Id プロバイダーの 両方 が選択されている必要があります。
詳細情報
変換を成功させるための追加のヒント: 識別子の要求にメールの値が使われている場合 (つまり、 Identifierclaimisパラメーターの場合)、メールアドレスが Active Directory に設定されているユーザーだけが変換されます。 SourceSkipList パラメーターで定義されている .csv ファイルに記載されているすべてのユーザーアカウントは、SAML に変換されません。 Windows クレームから SAML に変換する場合は、ユーザーアカウント名をクレーム表記と共に、またはそのまま表示することができます。 たとえば、"contoso\user1" または "i:0 #. w | contoso\user1" のいずれかを使用できます。 この .csv ファイルには、変換しないユーザーアカウントを追加する必要があります。 これらには、サービスアカウントと管理者アカウントが含まれている必要があります。