带有 ADFS 的 Spring saml 扩展
Posted
技术标签:
【中文标题】带有 ADFS 的 Spring saml 扩展【英文标题】:Spring saml Extension with ADFS 【发布时间】:2015-02-28 14:11:41 【问题描述】:我正在为 SSO 集成 ADFS 中的 Spring saml Extension。我使用 ADFS2.0 作为 IDP,并为 Spring 应用程序生成元数据并将元数据导入 ADFS。我会将电子邮件地址和显示名称传递给 Spring 应用程序。
这是我在 ADFS 中设置的声明规则。
1 获取属性
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/name", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = ";displayName,mail;0", param = c.Value);
2 发送电子邮件地址作为姓名 ID
c:[类型 == “http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”] =>问题(类型=“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier”, 发行人 = c.Issuer,OriginalIssuer = c.OriginalIssuer,价值 = c.Value, ValueType = c.ValueType, 属性[“http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format”] = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress");
我可以登录 Spring 应用程序。在一般信息中,信息是正确的。但在校长的属性部分。属性的值变为 org.opensaml.xml.schema.impl.XSAnyImpl@5abb6d06 和 org.opensaml.xml.schema.impl.XSAnyImpl@46f2d373。
有人知道为什么会这样吗?我该如何解决?
非常感谢。
【问题讨论】:
您使用的是什么版本的 Spring SAML? spring-security-saml-1.0.0.RC2 【参考方案1】:您应该更新到 Spring SAML 1.0.0.RELEASE(在 Spring repos 中可用)。该版本包含正确处理 XSAny 元素中的字符串值的辅助方法。有关示例,请参见 sample
项目中的文件 index.jsp
。 SAMLCredential
实例上的有用方法是:
String value = credential.getAttributeAsString("attributeName");
和
String[] value = credential.getAttributeAsStringArray("attributeName");
【讨论】:
谢谢,我要求服务提供商升级他们的 Spring SAML 扩展。现在该值已正确接收。 项目页面(projects.spring.io/spring-security-saml)什么时候更新? RC2 仍然是当前版本。以上是关于带有 ADFS 的 Spring saml 扩展的主要内容,如果未能解决你的问题,请参考以下文章
在反向代理后面使用 SP 时出现 Spring saml 问题
ADFS spring-saml 依赖方没有配置 AssertionConsumerService
由于状态消息为空,ADFS 响应失败时的 Spring SAML 单点登录