我无法让ADFS向我的应用发送声明。身份验证现在已成功完成,但我们在规则中设置的所有声明均未随响应一起发送。我按此顺序有两条规则。
在第一条规则中,我的理解是类型部分是我的应用程序期望ADFS输出的任何内容,并且不需要与LDAP值对应。真正重要的是必须引用有效LDAP属性的query
。我确信query
值是有效的LDAP属性,因为另一个工作的依赖方配置使用这些相同的查询值(但它们在types
中使用不同的值进行输出)。
在第二条规则中,我引用了Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"
。这不是LDAP中的类型,而是对第一个规则中创建的声明的引用。我这样做了吗? 第二条规则可以引用第一条规则的输出类型吗?
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types =
("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"),
query = ";givenName,sn,mail,employeeI;{0}", param = c.Value);
第二条规则
c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"]
=> issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType,
Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/namequalifier"] = "http://somedomain.com/adfs/services/trust",
Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/spnamequalifier"] = "https://someapp.somedomain.com/sp");
此外,如果依赖方未设置加密证书(使用IDP证书生成签名/验证),ADFS是否有理由不发送声明?
答案 0 :(得分:2)
未发送声明的通常原因是这些AD属性为空。
您不能将相同的声明用作输入/输出。
将nameidentifier从第一个声明中删除,另外声明会输出类似http://company.com/temp的内容,而添加而不是问题。
然后使用http://company.com/temp作为第二个声明的输入,输出为http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier。