声明规则引用了 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.
我无法让 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.