Symptomy
Rozpatrzmy następujący scenariusz:
-
Używasz uwierzytelniania oświadczeń systemu Windows (za pośrednictwem protokołu Windows Challenge/Response [NTLM] lub Kerberos) w aplikacji sieci Web programu Microsoft SharePoint Server 2013.
-
Użytkownik chce przełączać się do oświadczeń zaufanych dostawców przy użyciu bezpiecznego dostawcy opartego na protokole SAML (Application Markup Language), takiego jak usługi federacyjne Active Directory (AD FS).
-
Instrukcje dotyczące migracji uwierzytelniania oświadczeń systemu Windows do uwierzytelniania oświadczeń opartego na protokole SAML można znaleźć w temacie SharePoint Server 2013 w witrynie Microsoft Developer Network (MSDN).
-
Uruchom następujące polecenie:
Convert-SPWebApplication-ID $wa-do oświadczeń-TRUSTED-DEFAULT-from oświadczeń-WINDOWS-TrustedProvider $tp-SourceSkipList $csv-RetainPermissions
W tym scenariuszu jest wyświetlany następujący komunikat o błędzie:
Uwierzytelnianie oświadczenia opartego na protokole SAML jest niezgodne.
Przyczyna
Ten problem występuje, ponieważ wystawca tokenu zaufania tożsamości nie został utworzony przy użyciu konfiguracji domyślnej. Aby polecenie convert-SPWebApplication działało poprawnie, należy użyć konfiguracji domyślnej. Polecenie convert-SPWebApplication wymaga konkretnej konfiguracji zaufanego dostawcy, aby mógł on być zgodny z funkcją konwersji oświadczeń systemu Windows na adres SAML lub odwrotnie. W szczególności, zaufany wystawca tokenów tożsamości musi zostać utworzony przy użyciu parametrów UseDefaultConfiguration i IdentifierClaimIs . Możesz sprawdzić, czy zaufany wystawca tokenów tożsamości został utworzony przy użyciu parametru UseDefaultConfiguration , uruchamiając następujące skrypty programu Windows PowerShell.Uwaga: W tych skryptach zakłada się, że w bieżącej farmie utworzono tylko jednego zaufanego dostawcę tożsamości.
$tp = Get-SPTrustedIdentityTokenIssuer$tp.claimtypes
Typy oświadczeń, które mają być wyprowadzane przez ten skrypt, są następujące:
-
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
Oświadczenie tożsamości musi być jednym z następujących:
-
WindowAccountName
-
EmailAddress
-
OŚWIADCZENIE
Przykładowe dane wyjściowe $tp. IdentityClaimTypeInformation: DisplayName: adres E-mail InputClaimType: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/EmailAddressMappedClaimType: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/EmailAddress#IsIdentityClaim : prawda powinna istnieć niestandardowa Dostawca oświadczeń o takiej samej nazwie jak wystawca tokena, który powinien być typu SPTrustedBackedByActiveDirectoryClaimProvider. Uruchom tę opcję, aby sprawdzić, czy dostawca oświadczeń jest obecny i zgodny:
$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"}
Rozwiązanie
Aby rozwiązać ten problem, Usuń, a następnie utwórz ponownie zaufany wystawca tokenów tożsamości. W tym celu wykonaj następujące czynności:
-
Uruchom następujący skrypt:
$tp = Get-SPTrustedIdentityTokenIssuer$tp | fl$tp.name$tp.IdentityClaimTypeInformation
Utwórz kopię danych wyjściowych tego skryptu na potrzeby przyszłego odwołania. W szczególności potrzebujemy wartości dla właściwości Name, aby można było utworzyć nowy wystawca tokena przy użyciu tej samej nazwy, co wymaga oświadczenia tożsamości, aby można było utworzyć nowy Dostawca oświadczeń przy użyciu tego samego oświadczenia tożsamości. Tak długo, jak w przypadku wystawcy token jest używana ta sama nazwa, a w przypadku oświadczenia tożsamości jest używane to samo roszczenie, wszyscy użytkownicy będą utrzymywać swoje uprawnienia w aplikacji sieci Web po ponownym utworzeniu wystawcy tokenu.
-
Usuń bieżącego zaufanego dostawcę tożsamości z dostawców uwierzytelniania dla dowolnej aplikacji sieci Web, która obecnie korzysta z niej.
-
Usuń wystawcę tokenu, uruchamiając następujące polecenie:
Remove-SPTrustedIdentityTokenIssuer -Identity "TheNameOfYourTokenIssuer"
-
Ponownie utwórz wystawcę tokenu. Aby to zrobić, wykonaj czynności opisane w temacie implementowanie uwierzytelniania opartego na protokole SAML w programie SharePoint Server 2013 w witrynie sieci Web Microsoft TechNet, aby uzyskać więcej informacji.Ważne Po uruchomieniu polecenia New-SPTrustedIdentityTokenIssuer należy użyć parametrów UseDefaultConfiguration i IdentifierClaimIs . Parametr UseDefaultConfiguration to tylko przełącznik. Możliwe wartości parametru IdentifierClaimIs są następujące:
-
NAZWA KONTA
-
Adres e-mail
-
USER-NAZWA UŻYTKOWNIKA
Przykładowy skrypt:
$ap = New-SPTrustedIdentityTokenIssuer -Name $tokenIdentityProviderName -Description $TrustedIdentityTokenIssuerDescription -realm $siteRealm -ImportTrustCertificate $adfsCert-SignInUrl $signInUrl -UseDefaultConfiguration -IdentifierClaimIs EMAIL -RegisteredIssuerName $siteRealm
-
-
W obszarze Administracja centralna Dodaj nowego wystawkę zaufanego tokenu tożsamości do dostawców uwierzytelniania aplikacji sieci Web, którą chcesz przekonwertować. Aplikacja sieci Web musi zawierać zarówno uwierzytelnianie systemu Windows, jak i wybrany docelowy zaufany dostawca tożsamości.
Więcej informacji
Dodatkowe porady dotyczące poprawnego konwertowania: Jeśli wartość poczty e-mail jest używana dla oświadczenia identyfikatora (czyli parametru IdentifierClaimIs ), tylko użytkownicy, których adresy e-mail są wypełnione w usłudze Active Directory, zostaną przekonwertowane. Wszystkie konta użytkowników wymienione w pliku CSV, które są zdefiniowane w parametrze SourceSkipList , nie zostaną przekonwertowane na dane SAML. Aby można było przekonwertować oświadczenia systemu Windows na dane SAML, nazwy kont użytkowników mogą być wyświetlane z lub bez notacji oświadczeń. Na przykład dopuszczalna jest wartość "CONTOSO\user1" lub "i:0 #... | CONTOSO\user1". Dodaj do tego pliku CSV wszystkie konta użytkowników, których nie chcesz konwertować. Dotyczy to kont usług i kont administratorów.