증상
다음과 같은 경우를 생각해 볼 수 있습니다.
-
Microsoft SharePoint Server 2013 웹 응용 프로그램에서 windows 클레임 인증 (Windows 챌린지/응답 [NTLM] 또는 Kerberos)을 사용 합니다.
-
AD FS (Active Directory Federation Services)와 같은 SAML (보안 응용 프로그램 태그 언어) 기반 공급자를 사용 하 여 신뢰할 수 있는 공급자 클레임으로 전환 하기로 결정 했습니다.
-
Windows 클레임 인증을 사용 하 여 MSDN (Microsoft Developer Network) 웹 사이트의 SharePoint Server 2013 항목에서 SAML 기반 클레임 인증으로 마이그레이션하 는 단계를 검토 합니다.
-
다음 명령을 실행 합니다.
SPWebApplication-id $wa-To 클레임-신뢰할 수 있음-기본-WINDOWS 용 공급자 $tp-SourceSkipList $csv-RetainPermissions
이 경우 다음과 유사한 내용의 오류 메시지가 나타납니다.
SAML 기반 클레임 인증이 호환 되지 않습니다.
원인
이 문제는 신뢰할 수 있는 Id 토큰 발급자가 기본 구성을 사용 하 여 만들어지지 않았기 때문에 발생 합니다. 변환-SPWebApplication 명령이 올바르게 작동 하려면 기본 구성을 사용 해야 합니다. 변환-SPWebApplication 명령은 Windows 클레임에서 SAML 또는 그 반대로의 변환과 호환 되도록 신뢰할 수 있는 공급자에 대 한 특정 구성이 필요 합니다. 특히 UseDefaultConfiguration 및 IdentifierClaimIs 매개 변수를 사용 하 여 신뢰할 수 있는 id 토큰 발급자를 만들어야 합니다. 다음 Windows PowerShell 스크립트를 실행 하 여 UseDefaultConfiguration 매개 변수를 사용 하 여 신뢰할 수 있는 Id 토큰 발급자가 생성 되었는지 여부를 확인할 수 있습니다.참고: 이러한 스크립트는 현재 팜 내에서 만든 신뢰할 수 있는 Id 공급자가 하나만 있다고 가정 합니다.
$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는 토큰 발급자와 동일한 이름을 가진 사용자 지정 클레임 공급자가 있어야 하 고 SPTrustedBackedByActiveDirectoryClaimProvider형식 이어야 합니다. 다음을 실행 하 여 클레임 공급자가 존재 하 고 호환 되는지 확인 합니다.
$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 클레임으로 사용 하는 경우 모든 사용자는 토큰 발급자를 다시 만든 후 웹 응용 프로그램 내에서 해당 사용 권한을 유지 관리 합니다.
-
현재 신뢰 하는 Id 공급자를 현재 사용 중인 모든 웹 응용 프로그램의 인증 공급자에서 제거 합니다.
-
다음 명령을 실행 하 여 토큰 발급자를 삭제 합니다.
Remove-SPTrustedIdentityTokenIssuer -Identity "TheNameOfYourTokenIssuer"
-
토큰 발급자를 다시 만듭니다. 이렇게 하려면 자세한 내용은 Microsoft TechNet 웹 사이트의 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 토큰 발급자를 변환 하려는 웹 응용 프로그램의 인증 공급자에 다시 추가 합니다. 웹 응용 프로그램에는 Windows 인증과 대상 신뢰할 수 있는 Id 공급자가 모두 선택 되어 있어야 합니다.
추가 정보
성공적으로 변환 하는 데 도움이 되는 추가 팁: 전자 메일 값이 식별자 클레임에 사용 되는 경우 (즉, IdentifierClaimIs 매개 변수), Active Directory에서 전자 메일 주소가 채워진 사용자만 변환 됩니다. SourceSkipList 매개 변수에 정의 된 .csv 파일에 나열 된 모든 사용자 계정은 SAML로 변환 되지 않습니다. Windows 클레임에서 SAML로의 변환을 위해 사용자 계정 이름이 클레임 표시법을 사용 하거나 포함 하지 않고 나열 될 수 있습니다. 예를 들어 "contoso\user1" 또는 "i:0 #. w | contoso\user1"이 허용 됩니다. 변환 하지 않으려는 모든 사용자 계정에 해당 .csv 파일을 추가 해야 합니다. 여기에는 서비스 계정 및 관리자 계정이 포함 되어야 합니다.