我正在努力使我的Spring Boot(v。2.0.1)应用程序与SSO提供程序一起使用。当我尝试点击登录页面时,出现以下错误:
未配置任何托管服务提供商,也未选择别名
,当我尝试访问发现页面时,出现以下错误:
必须指定实体ID参数
这两者都是由于缺少entityID。我不清楚是否缺少SP或IDP实体ID。我的应用程序正在像这样在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丢失并创建了这些错误。我似乎无法追踪这种情况。
答案 0 :(得分:0)
缺少的entityID必须是IDP的。
您是否正确设置了CachingMetadataManager?确保将IDP添加为MetadataProvider。而且IDP的ExtendedMetadata必须将idpDiscoveryEnabled设置为true
答案 1 :(得分:0)
如果您还没有检查,请在 IDP 上查看 SP 的元数据配置。确保您在 IDP 使用的 SP 配置为来自 SP 元数据的值,例如:/saml/metadata。应该是一个xml内容。确保两个 Locations、certData 和 SingleLogoutService 是正确的。这是我的资深同事的修复。