声明规则引用了 ADFS 中以前的声明?

Claim rules reference previous claims in ADFS?

我无法让 ADFS 向我的应用程序发送声明。身份验证现已成功完成,但我们在规则中设置的声明中的 none 正在随响应一起发送。我有两条规则。

在第一条规则中,我的理解是类型部分是我的应用程序期望 ADFS 输出的任何内容,不需要对应于 LDAP 值。真正重要的是 query,它必须引用有效的 LDAP 属性。我确信 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 证书生成 signatures/validate),ADFS 是否有任何理由不发送声明?

未发送声明的常见原因是那些 AD 属性为空。

您不能使用与输入/输出相同的声明。

从第一个声明中取出 nameidentifier,有一个单独的声明输出类似 http://company.com/temp 的内容,这是一个 add 而不是 issue.

然后使用 http://company.com/temp 作为第二个声明的输入,输出 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier.