Nếu có ai gặp phải vấn đề này. Bạn cần hai quy tắc.
Quy tắc số 1: sAMAccountName tạm thời
Điều này yêu cầu ADFS tìm kiếm trong ActiveDirectory và trả lại bất kỳ tài khoản nào có địa chỉ Email hoặc UPN khớp. Sau đó, quy tắc lưu trữ giá trị vào một biến tạm thời mà chúng tôi sẽ sử dụng trong quy tắc tiếp theo.
c:[Loại == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Thuộc tính["http://schemas.xmlsoap.org/ws/2005/05/identity /claimproperties/format"] == "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"]
=> vấn đề(store = "Active Directory", type = ("claims:temp/attribute1"), truy vấn = "(&(objectCategory=person)(objectClass=user)(|(userPrincipalName={0})(mail= {0})));sAMAccountName;contoso\adfs_service_account", param = c.Value);
NB. Các contoso\adfs_service_account
là quan trọng. ADFS cần điều này để tự động phát hiện Bộ điều khiển miền. Sử dụng BẤT KỲ tài khoản AD nào, miễn đó là tài khoản thật.
Quy tắc #2: tạm thời cho WindowsAccountName
Quy tắc trên chỉ trả về sAMAccountName, không phải tên miền. Trong trường hợp của tôi, tôi chỉ có một tên miền. Như vậy, tôi đã mã hóa cứng nó bên dưới.
c:[Type == "claims:temp/attribute1"] => vấn đề(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Tổ chức phát hành = "QUYỀN QUẢNG CÁO" , OriginalIssuer = "https://contoso.verify.ibm.com/saml/sps/saml20ip/saml20", Value = "contoso\" + c.Value);