我无法让ADFS向我的应用发送声明。身份验证现在已成功完成,但我们在规则中设置的所有声明都没有与响应一起发送。我按这个顺序有两条规则。声明规则引用ADFS中的先前声明?
在第一条规则中,我的理解是types部分是我的应用程序期望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");
此外,没有任何理由ADFS如果依赖方不设置与加密的证书也不会派索赔(它使用的是IDP证书生成签名/验证)?