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 указаны правильно. Это исправление от моего старшего коллеги.

Другие вопросы по тегам