อาการ
พิจารณาสถานการณ์ต่อไปนี้:
-
คุณใช้การรับรองความถูกต้องของ Windows-การอ้างสิทธิ์ (ผ่าน Windows Challenge/การตอบสนอง [NTLM] หรือ Kerberos) ในแอปพลิเคชัน Microsoft SharePoint Server ๒๐๑๓บนเว็บ
-
คุณตัดสินใจที่จะสลับไปยังผู้ให้บริการที่เชื่อถือได้โดยใช้ผู้ให้บริการที่มีการรักษาความปลอดภัยของแอปพลิเคชัน Markup Language (SAML) เช่นบริการสหพันธรัฐไดเรกทอรีที่ใช้งานอยู่ (AD FS)
-
คุณตรวจทานขั้นตอนในการโยกย้ายการรับรองความถูกต้องของ Windows ที่มีการรับรองความถูกต้อง ของการรับรองความถูกต้องของการอ้างสิทธิ์ใน SharePoint Server ๒๐๑๓ หัวข้อบนเว็บไซต์ Microsoft Developer NETWORK (MSDN)
-
คุณเรียกใช้คำสั่งต่อไปนี้:
แปลง-SPWebApplication-id $wa-เป็นการอ้างสิทธิ์ที่เชื่อถือได้-เริ่มต้น-จากการเรียกร้อง-จากการอ้างสิทธิ์-WINDOWS-TrustedProvider $tp-SourceSkipList $csv-RetainPermissions
ในสถานการณ์สมมตินี้คุณจะได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
การรับรองความถูกต้องตามการอ้างสิทธิ์ของ SAML ไม่เข้ากัน
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจากผู้ออกโทเค็นของข้อมูลเฉพาะตัวที่เชื่อถือไม่ได้ถูกสร้างขึ้นโดยใช้การกำหนดค่าเริ่มต้น การกำหนดค่าเริ่มต้นต้องใช้สำหรับคำสั่ง แปลง-SPWebApplication เพื่อทำงานได้อย่างถูกต้อง คำสั่ง แปลง-SPWebApplication จำเป็นต้องมีการกำหนดค่าที่เฉพาะเจาะจงสำหรับผู้ให้บริการที่เชื่อถือได้เพื่อให้เข้ากันได้กับการแปลงจาก Windows ที่อ้างสิทธิ์ไปยัง SAML หรือในทางกลับกัน โดยเฉพาะผู้ออกโทเค็นที่เชื่อถือได้จะต้องสร้างโดยใช้พารามิเตอร์ UseDefaultConfiguration และ IdentifierClaimIs คุณสามารถตรวจสอบได้ว่าผู้ออกโทเค็นที่เชื่อถือได้ของคุณสร้างขึ้นโดยใช้พารามิเตอร์ UseDefaultConfiguration โดยการเรียกใช้สคริปต์ Windows PowerShell ต่อไปนี้บันทึกย่อ สคริปต์เหล่านี้ถือว่าคุณมีผู้ให้บริการข้อมูลเฉพาะตัวที่เชื่อถือได้เพียงหนึ่งคนที่สร้างขึ้นภายในฟาร์มปัจจุบัน
$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
การอ้างสิทธิ์ข้อมูลประจำตัวต้องเป็นหนึ่งในรายการต่อไปนี้:
-
WindowAccountName
-
EmailAddress
-
UPN
ตัวอย่างการแสดงผลสำหรับ $tp IdentityClaimTypeInformation: DisplayName: อีเมล 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"}
การแก้ไข
เมื่อต้องการแก้ไขปัญหานี้ให้ลบแล้วสร้างผู้ออกโทเค็นของข้อมูลประจำตัวที่เชื่อถือได้อีกครั้ง โดยทำตามขั้นตอนต่อไปนี้:
-
เรียกใช้สคริปต์ต่อไปนี้:
$tp = Get-SPTrustedIdentityTokenIssuer$tp | fl$tp.name$tp.IdentityClaimTypeInformation
ทำสำเนาของผลลัพธ์ของสคริปต์นี้สำหรับการอ้างอิงในอนาคต โดยเฉพาะอย่างยิ่งเราจำเป็นต้องใช้ค่าสำหรับคุณสมบัติชื่อเพื่อให้ผู้ออกโทเค็นใหม่สามารถสร้างขึ้นได้โดยใช้ชื่อเดียวกันและเราจำเป็นต้องอ้างสิทธิ์ข้อมูลประจำตัวเพื่อให้ผู้ให้บริการการอ้างสิทธิ์ใหม่สามารถสร้างได้โดยใช้การอ้างสิทธิ์ข้อมูลประจำตัวเดียวกัน ตราบใดที่มีการใช้ชื่อเดียวกันสำหรับผู้ออกโทเค็นและการอ้างสิทธิ์เดียวกันกับการอ้างสิทธิ์ข้อมูลประจำตัวผู้ใช้ทั้งหมดจะยังคงมีสิทธิ์การใช้งานภายในแอปพลิเคชันบนเว็บหลังจากที่ผู้ออกโทเค็นถูกสร้างขึ้นใหม่
-
เอาผู้ให้บริการข้อมูลประจำตัวที่เชื่อถือได้ออกจากผู้ให้บริการการรับรองความถูกต้องสำหรับเว็บแอปพลิเคชันใดๆที่กำลังใช้งานอยู่ในปัจจุบัน
-
ลบผู้ออกโทเค็นโดยการเรียกใช้คำสั่งต่อไปนี้:
Remove-SPTrustedIdentityTokenIssuer -Identity "TheNameOfYourTokenIssuer"
-
สร้างผู้ออกโทเค็นอีกครั้ง เมื่อต้องการทำเช่นนี้ให้ทำตามขั้นตอนในหัวข้อการ ใช้การรับรองความถูกต้องโดยใช้ SAML ใน SharePoint Server ๒๐๑๓ บนเว็บไซต์ Microsoft TechNet สำหรับข้อมูลเพิ่มเติมสิ่งสำคัญ เมื่อคุณเรียกใช้คำสั่งSPTrustedIdentityTokenIssuer ใหม่คุณต้องใช้พารามิเตอร์UseDefaultConfigurationและIdentifierClaimIs พารามิเตอร์ UseDefaultConfiguration เป็นเพียงสวิตช์ ค่าที่เป็นไปได้สำหรับพารามิเตอร์ IdentifierClaimIs มีดังต่อไปนี้
-
ชื่อบัญชีผู้ใช้
-
อีเมล
-
ชื่อหลักของผู้ใช้
สคริปต์ตัวอย่าง:
$ap = New-SPTrustedIdentityTokenIssuer -Name $tokenIdentityProviderName -Description $TrustedIdentityTokenIssuerDescription -realm $siteRealm -ImportTrustCertificate $adfsCert-SignInUrl $signInUrl -UseDefaultConfiguration -IdentifierClaimIs EMAIL -RegisteredIssuerName $siteRealm
-
-
ในการดูแลจากศูนย์กลางให้เพิ่มผู้ออกใบรับรองโทเค็นที่เชื่อถือได้ใหม่ของคุณกลับไปยังผู้ให้บริการการรับรองความถูกต้องสำหรับแอปพลิเคชันบนเว็บที่คุณพยายามแปลง เว็บแอปพลิเคชัน ต้องมีการ รับรองความถูกต้องของ Windows และผู้ให้บริการข้อมูลประจำตัวที่เชื่อถือได้เลือกเป้าหมาย
ข้อมูลเพิ่มเติม
เคล็ดลับเพิ่มเติมสำหรับการแปลงที่เสร็จสมบูรณ์: ถ้ามีการใช้ค่าอีเมลสำหรับการอ้างสิทธิ์ตัวระบุ (นั่นคือสำหรับพารามิเตอร์IdentifierClaimIs ) เฉพาะผู้ใช้ที่มีที่อยู่อีเมลที่มีการเติมข้อมูลใน active directory เท่านั้นที่จะถูกแปลง บัญชีผู้ใช้ใดๆที่แสดงรายการอยู่ในไฟล์ .csv ที่กำหนดไว้ในพารามิเตอร์ SourceSkipList จะไม่ถูกแปลงเป็น SAML สำหรับการแปลงจากการอ้างสิทธิ์จาก Windows ไปยัง SAML ชื่อบัญชีผู้ใช้สามารถแสดงรายการที่มีหรือไม่มีเครื่องหมายการอ้างสิทธิ์ได้ ตัวอย่างเช่น "contoso\user1" หรือ "i:0 # w | contoso\user1" เป็นที่ยอมรับได้ คุณควรเพิ่มไปยังไฟล์ .csv ที่มีบัญชีผู้ใช้ที่คุณไม่ต้องการแปลง สิ่งเหล่านี้ควรมีบัญชีบริการและบัญชีผู้ใช้ของผู้ดูแลระบบ