Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
-
Sie verwenden die Windows-Anspruchsauthentifizierung (über Windows Challenge/Response [NTLM] oder Kerberos) in einer Microsoft SharePoint Server 2013-Webanwendung.
-
Sie beschließen, mithilfe eines SAML-basierten (Secure Application Markup Language)-Anbieters, wie Active Directory-Verbunddienste (AD FS), zu vertrauenswürdigen Anbieter Ansprüchen zu wechseln.
-
Sie überprüfen die Schritte in der Migration der Windows-Anspruchsauthentifizierung auf SAML-basierte Anspruchsauthentifizierung in SharePoint Server 2013 auf der MSDN-Website (Microsoft Developer Network).
-
Führen Sie den folgenden Befehl aus:
Convert-SPWebApplication-ID $WA-to Claims-Trusted-default-from Claims-Windows-TrustedProvider $TP-SourceSkipList $CSV-RetainPermissions
In diesem Szenario wird die folgende Fehlermeldung angezeigt:
Die SAML-basierte Anspruchsauthentifizierung ist nicht kompatibel.
Ursache
Dieses Problem tritt auf, weil der Aussteller des vertrauenswürdigen Identitätstokens nicht mit der Standardkonfiguration erstellt wurde. Die Standardkonfiguration muss für den Befehl Convert-SPWebApplication verwendet werden, um ordnungsgemäß zu funktionieren. Der Befehl Convert-SPWebApplication erfordert eine bestimmte Konfiguration für den vertrauenswürdigen Anbieter, damit er mit der Konvertierung von Windows-Ansprüchen zu SAML oder umgekehrt kompatibel ist. Insbesondere muss der Aussteller des vertrauenswürdigen Identitätstokens mit den Parametern UseDefaultConfiguration und IdentifierClaimIs erstellt werden. Mit den folgenden Windows PowerShell-Skripts können Sie überprüfen, ob Ihr vertrauenswürdiger Identitäts Token-Aussteller mithilfe des UseDefaultConfiguration -Parameters erstellt wurde.Hinweis: Bei diesen Skripts wird davon ausgegangen, dass in der aktuellen Farm nur ein vertrauenswürdiger Identitätsanbieter erstellt wurde.
$tp = Get-SPTrustedIdentityTokenIssuer$tp.claimtypes
Die Anspruchstypen, die dieses Skript ausgeben soll, lauten wie folgt:
-
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
Der Identitätsanspruch muss eine der folgenden sein:
-
WindowAccountName
-
EmailAddress
-
UPN
Beispielausgabe für $TP. IdentityClaimTypeInformation: DisplayName: e-Mail-InputClaimType: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/EmailAddressMappedClaimType: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/EmailAddress#IsIdentityClaim : true es sollte ein benutzerdefinierter anspruchsanbieter mit dem gleichen Namen wie der Token-Aussteller geben, und er sollte vom Typ SPTrustedBackedByActiveDirectoryClaimProvidersein. Führen Sie diese Option aus, um festzustellen, ob der anspruchsanbieter vorhanden und kompatibel ist:
$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"}
Fehlerbehebung
Um dieses Problem zu beheben, löschen Sie den Aussteller des vertrauenswürdigen Identitätstokens, und erstellen Sie ihn erneut. Gehen Sie dazu wie folgt vor:
-
Führen Sie das folgende Skript aus:
$tp = Get-SPTrustedIdentityTokenIssuer$tp | fl$tp.name$tp.IdentityClaimTypeInformation
Erstellen Sie eine Kopie der Ausgabe dieses Skripts zur späteren Verwendung. Insbesondere benötigen wir den Wert für die Name-Eigenschaft, damit der neue Token-Aussteller mit dem gleichen Namen erstellt werden kann, und wir benötigen den Identitätsanspruch, damit der neue anspruchsanbieter mithilfe desselben Identitätsanspruchs erstellt werden kann. Solange derselbe Name für den Token-Aussteller verwendet wird und derselbe Anspruch als Identitätsanspruch verwendet wird, werden alle Benutzer nach der erneuten Erstellung des Token-Ausstellers in der Webanwendung Ihre Berechtigungen beibehalten.
-
Entfernen Sie den aktuellen Trusted Identity-Anbieter von Authentifizierungsanbietern für jede Webanwendung, die Sie derzeit verwendet.
-
Löschen Sie den Token-Aussteller, indem Sie den folgenden Befehl ausführen:
Remove-SPTrustedIdentityTokenIssuer -Identity "TheNameOfYourTokenIssuer"
-
Erstellen Sie den Token-Aussteller erneut. Führen Sie dazu die im Thema SAML-basierte Authentifizierung in SharePoint Server 2013 auf der Microsoft TechNet-Website implementierten Schritte aus, um weitere Informationen zu erhalten.Wichtig Wenn Sie den Befehl New-SPTrustedIdentityTokenIssuer ausführen, müssen Sie die UseDefaultConfiguration -und IdentifierClaimIs -Parameter verwenden. Der UseDefaultConfiguration -Parameter ist nur ein Schalter. Mögliche Werte für den IdentifierClaimIs -Parameter sind wie folgt:
-
Konto Name
-
E-Mail
-
Benutzerprinzipal Name
Beispielskript:
$ap = New-SPTrustedIdentityTokenIssuer -Name $tokenIdentityProviderName -Description $TrustedIdentityTokenIssuerDescription -realm $siteRealm -ImportTrustCertificate $adfsCert-SignInUrl $signInUrl -UseDefaultConfiguration -IdentifierClaimIs EMAIL -RegisteredIssuerName $siteRealm
-
-
Fügen Sie in der zentral Administration ihren neuen Trusted Identity Token-Aussteller zurück zu den Authentifizierungsanbietern für die Webanwendung hinzu, die Sie konvertieren möchten. Die Webanwendung muss sowohl über die Windows-Authentifizierung als auch über den Zielanbieter für vertrauenswürdige Identität ausgewählt sein.
Weitere Informationen
Weitere Tipps zur erfolgreichen Konvertierung: Wenn der e-Mail-Wert für den Bezeichner-Anspruch (also für den IdentifierClaimIs -Parameter) verwendet wird, werden nur die Benutzer, deren e-Mail-Adressen in Active Directory ausgefüllt werden, konvertiert. Alle Benutzerkonten, die in der CSV-Datei aufgelistet sind, die im SourceSkipList -Parameter definiert ist, werden nicht in SAML konvertiert. Für die Konvertierung von Windows-Ansprüchen in SAML können die Benutzerkontonamen mit oder ohne die Claims-Notation aufgelistet werden. Beispielsweise ist entweder "Contoso\Benutzer1" oder "i:0 #. w | Contoso\Benutzer1" akzeptabel. Sie sollten dieser CSV-Datei alle Benutzerkonten hinzufügen, die nicht konvertiert werden sollen. Dazu gehören Dienstkonten und Administratorkonten.