Spring Security SAML2 идентификатор объекта не найден
Я работаю над тем, чтобы приложение Spring Boot (v. 2.0.1) работало с поставщиком единого входа. Когда я пытаюсь попасть на страницу входа, я получаю следующую ошибку:
Поставщик услуг хостинга не настроен и псевдоним не выбран.
и когда я пытаюсь попасть на страницу обнаружения, я получаю следующую ошибку:
Параметр ID объекта должен быть указан
Оба, кажется, из-за отсутствующего entityID. Мне неясно, отсутствует ли в ней идентификатор объекта SP или IDP. Мое приложение устанавливает entityId в bean-компоненте следующим образом:
@Bean
fun metadataGenerator():MetadataGenerator {
val metadataGenerator = MetadataGenerator()
metadataGenerator.entityId = "my:custom:entity:id"
metadataGenerator.extendedMetadata = extendedMetadata()
metadataGenerator.isIncludeDiscoveryExtension = true
metadataGenerator.setKeyManager(keyManager())
return metadataGenerator
}
И XML метаданных IDP читается (я вижу, что он анализируется в одной точке во время запуска) и содержит entityID.
Где-то по пути, какой-то entityID теряется и создает эти ошибки. Я не могу отследить, как это происходит.
2 ответа
Отсутствующий entityID должен быть IDP.
Правильно ли настроен ваш CachingMetadataManager? Убедитесь, что IDP добавлен как MetadataProvider. И ExtendedMetadata IDP должен установить для idpDiscoveryEnabled значение true
Если вы еще не проверили, взгляните на конфигурацию метаданных SP в IDP. Убедитесь, что SP, который вы используете в IDP, настроен на значения из метаданных SP, например: /saml/metadata. Должен быть xml-контент. Убедитесь, что два Locations, certData и SingleLogoutService указаны правильно. Это исправление от моего старшего коллеги.