这与Spring Security SAML One Login Global Single Logout LogoutRequest Parsing Issue
有关这里的问题是NameID格式不匹配,如:
private boolean equalsNameID(NameID a, NameID b) {
boolean equals = !differ(a.getSPProvidedID(), b.getSPProvidedID());
equals = equals && !differ(a.getValue(), b.getValue());
equals = equals && !differ(a.getFormat(), b.getFormat());
equals = equals && !differ(a.getNameQualifier(), b.getNameQualifier());
equals = equals && !differ(a.getSPNameQualifier(), b.getSPNameQualifier());
equals = equals && !differ(a.getSPProvidedID(), b.getSPProvidedID());
return equals;
}
它仅在以下情况下失败:
equals = equals && !differ(a.getFormat(), b.getFormat());
调试后,我发现了以下值:
a.getFormat() = urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified (from Spring SAML)
b.getFormat() = null (from OneLogin acting as the IdP)
是否可以通过扩展元数据属性(或以其他方式)关闭Spring SAML中的格式检查?