ถ้าใครเจอปัญหานี้ คุณต้องมีกฎสองข้อ
กฎ #1: sAMAccountName เป็น temp
ซึ่งจะบอกให้ ADFS ค้นหาใน ActiveDirectory และส่งคืนบัญชีใดๆ ที่ตรงกับ UPN หรือที่อยู่อีเมล จากนั้นกฎจะเก็บค่าไว้ในตัวแปรชั่วคราวซึ่งเราจะใช้ในกฎถัดไป
c:[ประเภท == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", คุณสมบัติ["http://schemas.xmlsoap.org/ws/2005/05/identity /claimproperties/format"] == "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"]
=> ปัญหา (ร้านค้า = "Active Directory", ประเภท = ("การอ้างสิทธิ์:temp/attribute1"), ข้อความค้นหา = "(&(objectCategory=person)(objectClass=user)(|(userPrincipalName={0})(mail= {0})));sAMAccountName;contoso\adfs_service_account", param = c.Value);
หมายเหตุ เดอะ contoso\adfs_service_account
เป็นสิ่งสำคัญ ADFS ต้องการสิ่งนี้เพื่อค้นหาตัวควบคุมโดเมนโดยอัตโนมัติ ใช้บัญชี AD ใดก็ได้ ตราบใดที่เป็นบัญชีจริง
กฎ #2: ชั่วคราวเป็น WindowsAccountName
กฎข้างต้นส่งคืนเฉพาะ sAMAccountName ไม่ใช่โดเมน ในกรณีของฉัน ฉันมีเพียงโดเมนเดียว ดังนั้นฉันจึงฮาร์ดโค้ดไว้ด้านล่าง
c:[ประเภท == "การอ้างสิทธิ์:temp/attribute1"] => ปัญหา (ประเภท = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", ผู้ออก = "หน่วยงานโฆษณา" , OriginalIssuer = "https://contoso.verify.ibm.com/saml/sps/saml20ip/saml20", ค่า = "contoso\" + c.Value);