Spring Security SAML2 未找到 entityID

Posted

技术标签:

【中文标题】Spring Security SAML2 未找到 entityID【英文标题】:Spring Security SAML2 no entityID is found 【发布时间】:2018-12-06 17:33:13 【问题描述】:

我正在努力让我的 Spring Boot (v. 2.0.1) 应用程序与 SSO 提供程序一起工作。当我尝试点击登录页面时,出现以下错误:

未配置托管服务提供商且未选择别名

当我尝试点击发现页面时,我收到以下错误:

必须指定实体 ID 参数

两者似乎都是因为缺少 entityID。我不清楚丢失的是 SP 还是 IDP entityID。我的应用程序在 bean 中设置 entityId,如下所示:

@Bean
fun metadataGenerator():MetadataGenerator 
    val metadataGenerator = MetadataGenerator()
    metadataGenerator.entityId = "my:custom:entity:id"
    metadataGenerator.extendedMetadata = extendedMetadata()
    metadataGenerator.isIncludeDiscoveryExtension = true
    metadataGenerator.setKeyManager(keyManager())
    return metadataGenerator

IDP 的元数据 XML 正在被读取(我可以看到它在启动期间被解析过)并包含一个 entityID。

在此过程中,某些 entityID 丢失并产生了这些错误。我似乎无法追踪这是如何发生的。

【问题讨论】:

【参考方案1】:

缺少的 entityID 必须是 IDP 的。

您是否正确设置了 CachingMetadataManager?确保将 IDP 添加为 MetadataProvider。并且 IDP 的 ExtendedMetadata 必须将 idpDiscoveryEnabled 设置为 true

【讨论】:

我现在已将 idpDiscoveryEnabled 切换为 true,并仔细检查了 IDP 元数据提供程序是否已添加到我的 CachingMetadataManager,但无济于事。【参考方案2】:

如果您还没有检查,请前往 IDP 查看 SP 的元数据配置。确保您在 IDP 中使用的 SP 配置为来自 SP 元数据的值,例如:/saml/metadata。应该是一个xml内容。确保两个 Locations、certData 和 SingleLogoutService 正确。这是我的高级同事的解决方法。

【讨论】:

以上是关于Spring Security SAML2 未找到 entityID的主要内容,如果未能解决你的问题,请参考以下文章

spring-security saml2:如何获取当前用户?

Spring Security SAML2 服务提供者 - RelyingPartyRegistration.entityId() vs RelyingPartyRegistration.assert

Spring SAML 扩展和 Spring Security 5

Java 配置 /j_spring_security_check 未找到

Spring Security 插件,未找到属性

配置 ADFS 3.0 / SAML 2.0 以使用 Spring Security 进行 SSO 集成