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