Spring Security SAML Extension 将 ADFS 3.0 与其他声明提供程序集成

Posted

技术标签:

【中文标题】Spring Security SAML Extension 将 ADFS 3.0 与其他声明提供程序集成【英文标题】:Spring Security SAML Extension integrate ADFS 3.0 with other claims provider 【发布时间】:2016-08-06 19:17:12 【问题描述】:

我按照第 12.0 章关于使用 spring 和 adfs 作为 IdP 的说明从这里开始: http://docs.spring.io/autorepo/docs/spring-security-saml/1.0.x-SNAPSHOT/reference/htmlsingle/#chapter-idp-guide

我可以使用第一个 ADFS 成功登录应用程序。 但是,如果将另一个 ADFS 中的另一个帐户用作第一个帐户的声明提供者,我将失败。

我还发现似乎有人找到了描述的解决方案 Configuring ADFS 3.0 / SAML 2.0 to work with Spring Security for SSO integration

但我无法获得详细信息... 回到文档,才找到 将 NameID 添加为“Claim rule name”,选择“Active Directory”作为 Attribute store,选择“SAM-Account-Name”作为 LDAP Attribute,选择“Name ID”作为“Outgoing claim type”,完成向导并确认声明规则窗口,在 ADFS 3.0 中,您可能需要将名称 ID 配置为传递声明

有没有人可以详细提供如何将名称 ID 配置为 Spring saml 扩展的 Pass Through 声明?

提前致谢。

【问题讨论】:

【参考方案1】:

经过一番研究,最终找到了解决办法。

需要在 2 个 ADFS 之间定义声明规则。 在声明提供者 ADFS 中,您需要在 Relying Party Trusts 中配置规则。添加规则“发送 LDAP 属性作为声明”和属性存储选择“活动目录”LDAP 属性选择“SAN-ACCOUNT-NAME”,传出声明选择“给定名称”

在资源方 ADFS 中,您需要在 Claims Provider Trusts 中配置规则。添加规则“转换传入声明”。传入声明类型选择“Given Name”,传出声明类型选择“Name ID”,格式选择“Unspecified” 您还需要在 Relying Party Trusts 中配置规则。添加规则“通过或过滤传入的声明”。而传入的声明类型选择“名称 ID”,格式选择“未指定”

在这些声明规则设置之后。然后您可以使用位于受信任的 ADFS 中的帐户登录 spring saml2 扩展项目。

【讨论】:

以上是关于Spring Security SAML Extension 将 ADFS 3.0 与其他声明提供程序集成的主要内容,如果未能解决你的问题,请参考以下文章

spring security saml使用哪个密钥?

如何使用 spring-security-saml2 配置服务提供者以使用 EncryptedAssertions?

使用 spring-security-saml 在应用程序中没有配置 IDP 错误

Spring 框架 4.0 和 Spring security 3.2.4 上的 Spring Security SAML 扩展

带有 Spring 会话的 Spring Security SAML

Spring SAML 扩展和 Spring Security 5